<?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>161171</bug_id>
          
          <creation_ts>2016-08-24 16:11:38 -0700</creation_ts>
          <short_desc>Introduce the ThrowScope and force every throw site to instantiate a ThrowScope.</short_desc>
          <delta_ts>2016-08-30 13:57:33 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222866</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-24 16:11:38 -0700</bug_when>
    <thetext>This is the first step towards simulating potential JS exceptions throws, and verifying that they are checked for appropriately in C++ code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223144</commentid>
    <comment_count>1</comment_count>
      <attachid>286989</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-25 11:33:20 -0700</bug_when>
    <thetext>Created attachment 286989
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223167</commentid>
    <comment_count>2</comment_count>
      <attachid>286989</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-25 12:17:42 -0700</bug_when>
    <thetext>Comment on attachment 286989
work in progress

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

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:39
&gt; +
&gt; +#ifndef ENABLE_EXCEPTION_CHECK_VERIFICATION
&gt; +#define ENABLE_EXCEPTION_CHECK_VERIFICATION (!defined(NDEBUG))
&gt; +#endif

Let&apos;s call this ENABLE_THROW_SCOPE_VERIFICATION.

Let&apos;s put this setting in Platform.h with other settings.

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:76
&gt; +#define MAKE_THROW_SCOPE(name__, vm__) \

Let&apos;s call this DECLARE_THROW_SCOPE.

Instead of taking the local variable name as a parameter, let&apos;s do this:

    auto scope = DECLARE_THROW_SCOPE(vm).

That way, even though the declaration is a macro mystery, the nature of the local variable is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224387</commentid>
    <comment_count>3</comment_count>
      <attachid>287336</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:18:23 -0700</bug_when>
    <thetext>Created attachment 287336
x86_64 benchmark result run 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224388</commentid>
    <comment_count>4</comment_count>
      <attachid>287337</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:18:56 -0700</bug_when>
    <thetext>Created attachment 287337
x86_64 benchmark result run 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224389</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:22:33 -0700</bug_when>
    <thetext>There&apos;s some regressions and progressions in the microbenchmarks.  All other so-called &quot;definitely&quot;s are not consistently reproducible on different runs.

A inspection of disassembled code for regressing benchmarks did not seem to show any bad code that can account for the regressions.  It looks to me like the regressions are just be due to cache effects.

I&apos;ll upload the updated patch shortly for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224396</commentid>
    <comment_count>6</comment_count>
      <attachid>287341</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 15:43:38 -0700</bug_when>
    <thetext>Created attachment 287341
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224418</commentid>
    <comment_count>7</comment_count>
      <attachid>287341</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 16:21:35 -0700</bug_when>
    <thetext>Comment on attachment 287341
proposed patch.

I ran the API tests, but forgot to run the bindings test.  I need to rebase the results there.  Will upload a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224427</commentid>
    <comment_count>8</comment_count>
      <attachid>287349</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 16:36:38 -0700</bug_when>
    <thetext>Created attachment 287349
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224469</commentid>
    <comment_count>9</comment_count>
      <attachid>287349</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-29 17:46:27 -0700</bug_when>
    <thetext>Comment on attachment 287349
proposed patch.

Attachment 287349 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/1968587

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224470</commentid>
    <comment_count>10</comment_count>
      <attachid>287359</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-29 17:46:32 -0700</bug_when>
    <thetext>Created attachment 287359
Archive of layout-test-results from ews117 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews117  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224505</commentid>
    <comment_count>11</comment_count>
      <attachid>287349</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-29 21:42:55 -0700</bug_when>
    <thetext>Comment on attachment 287349
proposed patch.

I had some silly bugs that resulted in the failures.  Will fix first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224516</commentid>
    <comment_count>12</comment_count>
      <attachid>287375</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 00:09:54 -0700</bug_when>
    <thetext>Created attachment 287375
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224522</commentid>
    <comment_count>13</comment_count>
      <attachid>287378</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 01:26:08 -0700</bug_when>
    <thetext>Created attachment 287378
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224589</commentid>
    <comment_count>14</comment_count>
      <attachid>287378</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-30 09:40:27 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:297
&gt; +    if (topCallFrame &amp;&amp; previousScope &gt; topCallFrame)
&gt; +        willBeHandleByLLIntOrJIT = true;

Is it clear that it&apos;s better to have this here, than to have logic in vmEntry?

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:42
&gt; +class ThrowScope {
&gt; +public:
&gt; +    JS_EXPORT_PRIVATE ThrowScope(VM&amp;, ThrowScopeLocation);
&gt; +    JS_EXPORT_PRIVATE ~ThrowScope();
&gt; +

Seems like you could delete the copy constructor/operator but enable the move constructor/operator.  I think you would do for example:

ThrowScope(const ThrowScope&amp;) = delete;
ThrowScope(ThrowScope&amp;&amp;) = default;

Clearly, ThrowScope is not meant to be copied, so this protects against that.  But it is meant to be created by moving, via that macro.  I believe this should disallow the bad thing (copying) but allow the good thing (your auto scope = DECLARE_blah idiom).

&gt; Source/JavaScriptCore/runtime/ThrowScope.h:77
&gt; +    JSC::ThrowScope(vm__, JSC::ThrowScopeLocation(__FUNCTION__, __FILE__, __LINE__))

Put extra () around vm__, like &quot;(vm__)&quot;.  This makes this macro behave more like a function, in case there are for example commas in vm__.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224596</commentid>
    <comment_count>15</comment_count>
      <attachid>287378</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 10:01:47 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:297
&gt;&gt; +        willBeHandleByLLIntOrJIT = true;
&gt; 
&gt; Is it clear that it&apos;s better to have this here, than to have logic in vmEntry?

VMEntry (in the comment above) is a misnomer on my part.  I meant to communicate first ThrowScope after a JS frame on the stack.  &quot;VMEntry&quot; is the wrong idea to communicate this.  Rereading the comment, I think just removing the &quot;VMEntry&quot; would do the trick.

The scenario we need to guard against is where a JS function calls a C++ operation helper, and the helper has a ThrowScope.  We need to clear the needExceptionCheck flag before returning to the JS frame because the JS code may invoke another C++ helper (and fail verification on entry to that new ThrowScope).  There is no VMEntryScope involved here.

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.h:42
&gt;&gt; +
&gt; 
&gt; Seems like you could delete the copy constructor/operator but enable the move constructor/operator.  I think you would do for example:
&gt; 
&gt; ThrowScope(const ThrowScope&amp;) = delete;
&gt; ThrowScope(ThrowScope&amp;&amp;) = default;
&gt; 
&gt; Clearly, ThrowScope is not meant to be copied, so this protects against that.  But it is meant to be created by moving, via that macro.  I believe this should disallow the bad thing (copying) but allow the good thing (your auto scope = DECLARE_blah idiom).

Great.  I will apply and test.

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.h:77
&gt;&gt; +    JSC::ThrowScope(vm__, JSC::ThrowScopeLocation(__FUNCTION__, __FILE__, __LINE__))
&gt; 
&gt; Put extra () around vm__, like &quot;(vm__)&quot;.  This makes this macro behave more like a function, in case there are for example commas in vm__.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224600</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 10:26:52 -0700</bug_when>
    <thetext>I&apos;m now trying to figure out why the Win EWS is having a bad time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224609</commentid>
    <comment_count>17</comment_count>
      <attachid>287378</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-30 10:40:51 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:296
&gt; +    if (topCallFrame &amp;&amp; previousScope &gt; topCallFrame)

Since we don&apos;t clear VM::m_topCallFrame most of the time, topCallFrame will almost always be non-null, and we will get away with a lot of mistakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224616</commentid>
    <comment_count>18</comment_count>
      <attachid>287378</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-30 10:48:53 -0700</bug_when>
    <thetext>Comment on attachment 287378
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/ThrowScope.cpp:296
&gt;&gt; +    if (topCallFrame &amp;&amp; previousScope &gt; topCallFrame)
&gt; 
&gt; Since we don&apos;t clear VM::m_topCallFrame most of the time, topCallFrame will almost always be non-null, and we will get away with a lot of mistakes.

...Actually, even though we leave stale values for VM::topCallFrame during LLInt and JIT execution, once we exit, we restore null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224621</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-08-30 11:06:19 -0700</bug_when>
    <thetext>I think you can fix the Windows build failure by using old-school header guards instead of #pragma once. Later, we should get DumpRenderTree.cpp not to include JavaScriptCore/runtime headers. It doesn&apos;t need to, since we have typed array API now.

Phil, any further comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224625</commentid>
    <comment_count>20</comment_count>
      <attachid>287410</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 11:12:25 -0700</bug_when>
    <thetext>Created attachment 287410
revised patch w/ Fil&apos;s feedback + old header guard applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224687</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-08-30 13:57:33 -0700</bug_when>
    <thetext>Thanks for the reviews.  Landed in r205198: &lt;http://trac.webkit.org/r205198&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286989</attachid>
            <date>2016-08-25 11:33:20 -0700</date>
            <delta_ts>2016-08-29 15:18:23 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip-161171.patch</filename>
            <type>text/plain</type>
            <size>693271</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtODE3LDYgKzgxNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9TeW1ib2xPYmplY3QuY3BwCiAgICAgcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKyAgICBydW50aW1lL1Rocm93U2NvcGUuY3BwCiAgICAg
cnVudGltZS9UZW1wbGF0ZVJlZ2lzdHJ5LmNwcAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxz
LmNwcAogICAgIHJ1bnRpbWUvVHlwZUxvY2F0aW9uQ2FjaGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NSwxMiArMzY1LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGN1c3RvbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKKyAgICAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICAgICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxDdXN0b21HZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7
CiAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgUHJvcGVy
dHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNob3VsZFRocm93IikpKS50b0Jv
b2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoMTAwKSk7CiAgICAgfQogfTsKQEAgLTQ3MCw5ICs0NzMsMTIgQEAgcHJpdmF0ZToK
IAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKICAgICB7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBp
ZiAoIXRoaXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdl
dExlbmd0aCgpKSk7CiAgICAgfQogCkBAIC0xMjMwLDExICsxMjM2LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSb290KiByb290ID0ganNEeW5hbWlj
Q2FzdDxSb290Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhv
dXQgYSBSb290LiIpKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3Jl
YXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcm9vdCkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQg
d2l0aG91dCBhIFJvb3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50
OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgcm9vdCkpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxlbWVudChFeGVjU3RhdGUq
IGV4ZWMpCkBAIC0xNDE0LDIwICsxNDIzLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25WZXIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1
bihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxG
aWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCi0gICAgR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgp
LCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZl
Y3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFy
cmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgK
LSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiks
IGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIFN0b3BX
YXRjaCBzdG9wV2F0Y2g7CkBAIC0xNDM2LDcgKzE0NDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmIChl
eGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0x
NDQ1LDI0ICsxNDU3LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
dW4KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9y
PGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShm
aWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Q291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAg
TmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3Jp
cHQsIGZpbGVOYW1lKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAo
ZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25M
b2FkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgU3RyaW5nIHNvdXJj
ZUNvZGUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC0xNDcxLDMwICsxNDg5LDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25Mb2EKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNl
cHRpb247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2VDb2RlKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhj
ZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlm
ICghZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4g
ZmlsZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
c3RyaW5nRnJvbVVURihzY3JpcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICgh
ZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBm
aWxlLiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTUwNiw3ICsxNTMwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAg
ICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgc3ludGF4RXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0xNjExLDEyICsxNjM1LDE1
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3VnaCBhcmd1bWVu
dHMiKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1Njb3BlLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3Vn
aCBhcmd1bWVudHMiKSkpKTsKICAgICAKICAgICBKU0FycmF5QnVmZmVyKiBidWZmZXIgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFi
dWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGFu
IGFycmF5IGJ1ZmZlciIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiKSkpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNv
bnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAgYnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15
Q29udGVudHMpOwpAQCAtMTc4MywyNyArMTgxMCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uSXMzCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgU3RyaW5nIGZp
bGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlw
dEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7
CiAKICAgICBKU0ludGVybmFsUHJvbWlzZSogcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVs
ZShleGVjLCBmaWxlTmFtZSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBl
cnJvcjsKLSAgICBKU0Z1bmN0aW9uKiBlcnJvckhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJp
bmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykgeworICAgIEpTRnVuY3Rpb24qIGVycm9ySGFuZGxl
ciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykgewogICAgICAgICBlcnJv
ciA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0pOwogCiAgICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRy
LCBlcnJvckhhbmRsZXIpOwotICAgIGV4ZWMtPnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAg
dm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgaWYgKGVycm9yKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTgzMSw2ICsxODYxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJpbmcgc291
cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMTg0Myw3ICsxODc2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3lu
dGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCB0b1N0cmluZygiU3ludGF4RXJyb3I6ICIsIGVycm9yLm1lc3NhZ2UoKSwg
IjoiLCBlcnJvci5saW5lKCkpKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwg
ZXJyb3IubWVzc2FnZSgpLCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0x
ODgwLDEwICsxOTEzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
dGEKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT52bSgpLnNh
bXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
U2FtcGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiKSkpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCisgICAg
aWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIikpKSk7CiAKLSAg
ICBTdHJpbmcganNvblN0cmluZyA9IGV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpLT5zdGFj
a1RyYWNlc0FzSlNPTigpOworICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9m
aWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9
IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNiArNDQsOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4
ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkp
OwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihl
eGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkpKTsKQEAgLTYxLDcg
KzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFjawogICAgICAg
ICByZXN1bHQgPSBqc0Nhc3Q8VCo+KHRvSlMoZnVuY3Rpb25SZWYpKS0+ZnVuY3Rpb25DYWxsYmFj
aygpKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1
bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAg
ICAgaWYgKCFyZXN1bHQpCkBAIC03Myw2ICs3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgQVBJQ2FsbGJhY2sKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVl
KCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVm
IGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29uc3RydWN0b3IpOwpAQCAtOTIsMTIgKzk2LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAgICAgICAgICAgIHJl
c3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3Vt
ZW50cy5kYXRhKCksICZleGNlcHRpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyBy
ZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTMzLDYgKzEzMyw5IEBAIFN0cmluZyBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmEKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29udGV4
dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYo
dGhpc09iamVjdCk7CkBAIC0xNTksNyArMTYyLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmdldE93blBybwogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldFByb3BlcnR5
KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRFbnVtLCBqc1VuZGVmaW5lZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
MjAwLDYgKzIwMyw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8K
IHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBjb25zdCBKU0Nh
bGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IEpTQ2FsbGJhY2tPYmplY3Qq
PihvYmplY3QpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09i
amVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CkBAIC0yMTAsNyArMjE2LDcgQEAg
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bAogICAgICAgICAgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBj
b252ZXJ0VG9UeXBlKGN0eCwgdGhpc1JlZiwganNIaW50LCAmZXhjZXB0aW9uKTsKICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKHJlc3VsdCkKQEAgLTIyNCw2ICsyMzAsOSBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0g
dG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3Qp
OwpAQCAtMjQyLDcgKzI1MSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWwKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4LCB0aGlz
UmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2Vw
dGlvbikpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8
fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICB9CkBAIC0yNTksNyArMjY4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dChKU0NlbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldFByb3Bl
cnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYs
ICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjczLDcgKzI4Miw3IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBQYXJlbnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUp
OyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODUsNiArMjk0LDkgQEAgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZh
bHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0Nv
bnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRv
UmVmKHRoaXNPYmplY3QpOwpAQCAtMzAzLDcgKzMxNSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0
eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRp
b24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRp
b24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzIwLDcg
KzMzMiw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50
cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAg
ICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMo
ZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CkBAIC0zNDIsNiArMzU0LDkgQEAgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dEJ5SW5kZQogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Nh
bGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMp
OwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTM1OSw3
ICszNzQsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvCiAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJv
cGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtNDA4LDYgKzQy
Myw5IEBAIENvbnN0cnVjdFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjoKIHRlbXBsYXRl
IDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTT2JqZWN0KiBj
b25zdHJ1Y3RvciA9IGV4ZWMtPmNhbGxlZSgpOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0g
dG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25z
dHJ1Y3Rvcik7CkBAIC00MjYsNyArNDQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3Ry
dWN0b3IoZXhlY1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5k
YXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQzOCw2ICs0
NTYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhh
c0luc3RhbmNlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0
KTsKQEAgLTQ1Miw3ICs0NzMsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3Vz
dG9tSGFzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5zdGFuY2UoZXhlY1JlZiwgdGhp
c1JlZiwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTY29w
ZS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KQEAgLTQ3NSw2ICs0OTYsOSBAQCBD
YWxsVHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldENhCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0
b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNh
bGxlZSgpKTsKICAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2Jq
ZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBA
IC00OTMsNyArNTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhl
Y1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5k
YXRhKCksICZleGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTU3MCw2ICs1
OTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5oZXJpdHMoCiB0ZW1wbGF0
ZSA8Y2xhc3MgUGFyZW50PgogSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0
YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAog
ICAgIGlmIChTdHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CkBAIC01ODQs
NyArNjExLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyks
IHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUpCkBAIC02MDEsNiArNjI4LDkgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmdldFN0YQogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2Jq
ZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlk
ZSBwcm9wZXJ0eS4KQEAgLTYxMyw3ICs2NDMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0
aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhl
YykpIHsKICAgICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBz
dGF0aWNGdW5jdGlvbnMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoSlNP
YmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxB
c0Z1bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBu
YW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJv
cGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG8pOwpAQCAtNjIzLDEyICs2NTIsMTUgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9u
IHByb3BlcnR5IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0YXRpYyBmdW5j
dGlvbiBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNGdW5jdGlvbiBjYWxsYmFjay4i
KSkpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRo
aXNWYWx1ZSk7CiAgICAgCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmop
OwpAQCAtNjQ2LDcgKzY3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50PjoKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVj
KSwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQpAQCAtNjU1LDcgKzY4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5IGNhbGxiYWNrIHJldHVy
bmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0LiIpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5IGNhbGxiYWNr
IHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0LiIpKSkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNUeXBlZEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVHlwZWRBcnJheS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDkgKzEwMCwx
MSBAQCBpbmxpbmUgVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShKCiAKIHN0YXRpYyBK
U09iamVjdCogY3JlYXRlVHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlwZWRBcnJheVR5
cGUgdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIxMyw3ICsxMjEz
LDcgQEAKIAkJNTNGNDBFOEQxRDU5MDFGMjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIw
MDk5QTFCNiAvKiBXQVNNUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRThGMUQ1OTAyODIwMDk5QTFC
NiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5l
cmF0b3IuY3BwICovOyB9OwogCQk1M0Y0MEU5MTFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTAx
RDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLzsgfTsKLSAgICAgICAgICAgICAgICA1M0Y0
MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFC
NiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9OworCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUEx
QjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVy
YXRvci5oICovOyB9OwogCQk1M0Y0MEU5NTFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNG
NDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNG
NDBFOTcxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTYxRDVBN0JFQzAwOTlB
MUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovOyB9OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBG
NDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFF
NUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIxMDYsOCArMjEwNiwxMSBAQAog
CQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwICovOyB9OwogCQlGRTIwQ0U5RDE1RjA0QTk1MDBERjM0MzAgLyog
TExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgKi87IH07CiAJ
CUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAg
LyogTExJbnRDTG9vcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUZFMkU2QTdCMUQ2RUE2MkMwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkU2QTdBMUQ2RUE1
RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLzsgfTsKIAkJRkUzMThGREYxQ0FDOTgyNzAw
REZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREQxQ0FDOEM1MzAwREZD
QzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwICovOyB9OwogCQlGRTMx
OEZFMDFDQUM5ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUx
Q0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsg
fTsKKwkJRkUzNDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMy
QkU4OCAvKiBUaHJvd1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRkUzNDIyMTQxRDZCOTlDRjAwMzJCRTg4IC8qIFRocm93U2NvcGVJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0
MjIxMzFENkI5OUJBMDAzMkJFODggLyogVGhyb3dTY29wZUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNTFBRERCN0FEMDA1
NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAg
Ki87IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFBRERCN0FE
MDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU3MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAq
LzsgfTsKQEAgLTIxMzQsNiArMjEzNyw3IEBACiAJCUZFNTA2ODY3MUFFMjVFMjgwMDA5REFCNyAv
KiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNl
RHVtcC5jcHAgKi87IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1
OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87IH07CiAJCUZFNTkz
MkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQgLyogVGhyb3dTY29wZVN0YWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTYwMjlEODFENkUx
RTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZVN0YWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1h
Y3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUZFNjhDNjM4MUI5MERFMEIwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzUxQjkw
REREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi87IH07CiAJCUZFN0JB
NjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8q
IEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBAIC0yMTU1LDggKzIxNTksNiBAQAogCQlGRUQ5NEYy
RTE3MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEOTRGMkIxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNo
ZG9nLmNwcCAqLzsgfTsKIAkJRkVEOTRGMkYxNzFFM0UyMzAwQkU3N0E0IC8qIFdhdGNoZG9nLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUQ5NEYyQzE3
MUUzRTIzMDBCRTc3QTQgLyogV2F0Y2hkb2cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3Bw
ICovOyB9OwotCQlEOTcyMjc1MkRDNTQ0NTlCOTEyNUI1MzkgLyogSlNNb2R1bGVMb2FkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc3QjI1Q0IyQzMw
OTRBOTJBMzhFMURCMyAvKiBKU01vZHVsZUxvYWRlci5oICovOyB9OwotCQkxM0ZFQ0UwNkQzQjQ0
NUZDQjZDOTM0NjEgLyogSlNNb2R1bGVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTg3OTUxMDYxNEM1NDBGRkI1NjFDMTI0IC8qIEpTTW9k
dWxlTG9hZGVyLmNwcCAqLzsgfTsKIAkJRkVGRDZGQzYxRDVFNzk5MjAwOEYyRjBCIC8qIEpTU3Ry
aW5nSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KIApAQCAtMzQxOCw3ICszNDIwLDcgQEAKIAkJNTNGNDBFOEMxRDU5MDFG
MjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0FTTVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y0MEU4RTFE
NTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTUIzSVJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNT3BzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0gICAgICAgICAgICAgICAgNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8q
IFdBU01CM0lSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdB
U01CM0lSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjQwRTky
MUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBX
QVNNTW9kdWxlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdBU01Nb2R1bGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2
QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyMCw4ICs0
NDIyLDExIEBACiAJCUZFMUMwRkZFMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhjZXB0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50
Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRDTG9v
cC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0gbGxpbnQvTExJ
bnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTJFNkE3QTFENkVBNUZF
MDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUaHJvd1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUz
MThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzE4
RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNDIyMTExRDZCODE4
QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGhyb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0MjIxMzFE
NkI5OUJBMDAzMkJFODggLyogVGhyb3dTY29wZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxh
clZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9sbGFyVk0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk1Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NDQ4LDYgKzQ0NTMsNyBAQAogCQlGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJy
ZWRTb3VyY2VEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERl
ZmVycmVkU291cmNlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkz
MkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVk1FbnRyeVNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUVudHJ5U2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2MDI5RDgxRDZFMUUzMzAwMzAyMDREIC8qIFRocm93U2Nv
cGVTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJvd1Njb3BlU3Rh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2OEM2MzUxQjkwREREOTAwNDJC
Q0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQ
cmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVy
UHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VD
MDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NDc1LDggKzQ0ODEsNiBAQAogCQlGRURBNTBENTFCOTdGNEQ5MDA5QTNCNEYgLyogUGluZ1Bv
bmdTdGFja092ZXJmbG93VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQ
aW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvUGluZ1BvbmdTdGFj
a092ZXJmbG93VGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUYwNDA1MDFB
QUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkv
dGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9
IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzdCMjVDQjJDMzA5NEE5MkEzOEUxREIzIC8qIEpTTW9kdWxlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTTW9kdWxlTG9hZGVyLmg7IHBhdGggPSBKU01v
ZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxODc5NTEwNjE0QzU0
MEZGQjU2MUMxMjQgLyogSlNNb2R1bGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gSlNNb2R1bGVMb2FkZXIuY3BwOyBwYXRoID0gSlNNb2R1bGVMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJG
MEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU3RyaW5nSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC01NjAyLDcgKzU2MDYsNyBAQAogCQkJCTUz
RjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCiAJCQkJN0JDNTQ3RDIxQjY5
NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkwMjgyMDA5
OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3Iu
aCAqLywKKwkJCQk1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3Iu
aCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV0FTTUZ1bmN0aW9uUGFyc2Vy
LmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIu
Y3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2Vy
LmggKi8sCkBAIC02MTcwLDYgKzYxNzQsMTAgQEAKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3
MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlE
MDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3BwICovLAogCQkJCTBGQTJDMTdBMTdEN0NGODQwMDlE
MDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAqLywKKwkJCQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4
OTYgLyogVGhyb3dTY29wZS5jcHAgKi8sCisJCQkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8q
IFRocm93U2NvcGUuaCAqLywKKwkJCQlGRTM0MjIxMzFENkI5OUJBMDAzMkJFODggLyogVGhyb3dT
Y29wZUlubGluZXMuaCAqLywKKwkJCQlGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dT
Y29wZVN0YWNrLmggKi8sCiAJCQkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZl
RnJvbVZhbHVlLmggKi8sCiAJCQkJMEYyQjY2RDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJy
YXlBZGFwdG9ycy5oICovLAogCQkJCTBGMkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFy
cmF5Q29udHJvbGxlci5jcHAgKi8sCkBAIC03MzY2LDYgKzczNzQsNyBAQAogCQkJCUJDRDIwMzRB
MEUxNzEzNUUwMDJDN0U4MiAvKiBEYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5NkI3MzFBMUJEQTA4RDEwMDMzMUI4NCAvKiBEYXRlQ29uc3RydWN0b3IubHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFMzQyMjE0MUQ2Qjk5Q0YwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkRE
IC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIxMDk2NjM2NTAw
NkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTRDMkFC
MTFDNjU0NEYyMDBBMThENzggLyogSGVhcFNuYXBzaG90LmggaW4gSGVhZGVycyAqLywKQEAgLTc2
NzIsNiArNzY4MSw3IEBACiAJCQkJQkMxOEM0MDUwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEg
LyogRnVuY3Rpb25SYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEw
MzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUz
NDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQkUyQ0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNzY2RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29t
aW5nUmVmQ291bnRlZC5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzEzLDYgKzc3MjMsNyBAQAogCQkJ
CTBGRTA1MDFBMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hp
ZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0
NiAvKiBJbnRsT2JqZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2MDI5RDkxRDZF
MUU0RjAwMzAyMDREIC8qIFRocm93U2NvcGVTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
NzBBNDgxRDU0M0E5MDAwNkU3MjMyIC8qIENlbGxDb250YWluZXJJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAxQjFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY09mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTAxN0I2QjVBQjAwQTdBRTNGIC8qIEdlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MDAzLDcgKzgwMTQsNyBAQAogCQkJCTBG
QjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIuaCBp
biBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1M0Y0MEU5MzFE
NUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRENGM0Q1NkIxQ0QyOTQ3MjAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVj
dHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTg3QTAyMUJGQkU1NjEwMDM4QkJD
QSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTIxOCw2ICs5MjI5LDcg
QEAKIAkJCQkwRkNFRkFBQjE4MDRDMTNFMDA0NzJDRTQgLyogRlRMU2F2ZVJlc3RvcmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRo
Q2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyog
QjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMkU2QTdCMUQ2RUE2MkMw
MDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgx
NjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXph
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8q
IEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
OCArMTM4LDEwIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGUKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmIChzaXplIDwgMCkgewotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdh
dGl2ZSIpKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRp
dmUiKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC02
ODksMTIgKzY5MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJl
CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQXJn
dW1lbnQpOwogICAgIAogICAgIGlmICghYmFzZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIEpTU3RyaW5nKiBp
bnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghaW5wdXQpCkBA
IC03MzMsMTIgKzczNiwxMyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBU
ZXN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QXJndW1lbnQpOwogCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTg5Nyw5ICs5MDEsMTAgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdp
dAogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgKnZt
KTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpCi0gICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdo
IHBvc2l0aXZlIGludGVnZXIuIikpKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIikpKSk7CiAKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5OjpjcmVhdGUo
KnZtLCBhcnJheVN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4ocmVzdWx0KTsKQEAgLTEzNTEsOSArMTM1NiwxMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTWFrZVJvcGUyCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlZnQt
Pmxlbmd0aCgpLCByaWdodC0+bGVuZ3RoKCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4
ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEzNjQsOSArMTM3MCwx
MCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFrZVJvcGUzCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAo
c3VtT3ZlcmZsb3dzPGludDMyX3Q+KGEtPmxlbmd0aCgpLCBiLT5sZW5ndGgoKSwgYy0+bGVuZ3Ro
KCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTEzNzcsNiArMTM4NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25TdHJDYXQyKEUKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNWYWx1ZTo6ZGVj
b2RlKGEpLnRvU3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOyAvLyBJ
bXBvc3NpYmxlLCBzaW5jZSB3ZSBtdXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRpdmVzLgpAQCAt
MTM4NCw3ICsxMzkyLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDIo
RQogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxp
bnQzMl90PihzdHIxLT5sZW5ndGgoKSwgc3RyMi0+bGVuZ3RoKCkpKSB7Ci0gICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEz
OTUsNiArMTQwMyw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
IAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNWYWx1ZTo6ZGVjb2RlKGEpLnRvU3RyaW5nKGV4ZWMp
OwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOyAvLyBJbXBvc3NpYmxlLCBzaW5jZSB3ZSBt
dXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRpdmVzLgpAQCAtMTQwNCw3ICsxNDEzLDcgQEAgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoRQogICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihzdHIxLT5sZW5ndGgo
KSwgc3RyMi0+bGVuZ3RoKCksIHN0cjMtPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTA4LDcg
KzE1MTcsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiB9CiAKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRp
b25TaXplT2ZWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFy
Z3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKQEAgLTE2OTUsMTMgKzE3MDUsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogCiAgICAgSWRlbnRp
ZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0g
KGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlm
ICghZm91bmQpIHsKICAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZv
Qml0cyk7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93
SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAg
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICAgICAgfQogCkBAIC0xNzA5LDcgKzE3MjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVuIHdlIGNhbid0IHN0YXRpY2FsbHkg
cHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJmb3JtIHRoZSBjaGVjayBvbiB0
aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIGlkZW50KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKSB7
Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
RFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMTcyMyw2ICsxNzM0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFt
aWNWYQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIGltcGwpOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0cyk7
CkBAIC0xNzM0LDEzICsxNzQ2LDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRE
eW5hbWljVmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBpZGVudCwgc2xvdCk7CiAgICAg
ICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBqc1REWlZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJyb3Io
ZXhlYykpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAm
JiAhaGFzUHJvcGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRo
cm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihleGVjLCBpZGVudCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDkgKzk1
LDEyIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlKEUKIAogSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhv
c3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0
cmluZy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBw
cm9ncmFtID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTEwNyw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSW5q
ZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9u
ID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBK
U0M6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMsIG1ha2VTb3VyY2UocHJvZ3JhbSks
IHNjb3BlRXh0ZW5zaW9uLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NywxMjAg
Kzc3LDE1NiBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVB
dHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhv
c3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVh
dGUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JbnRlcm5hbENvbnN0cnVjdG9yTmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0
UHJvdG90eXBlRnVuY3Rpb25Jc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmpl
Y3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9u
V2Vha01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtNYXBTaXpl
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPndlYWtNYXBFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a1NldFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRTaXplKGV4
ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPndlYWtTZXRFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0
b3JFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJp
ZXMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
ZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3Jp
cHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0lu
amVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNj
cmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5zdWJ0eXBlKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc1LDkg
Kzc1LDEyIEBAIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAogSlNW
YWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3Qg
YmUgYSBzdHJpbmcuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJKU0phdmFTY3JpcHRDYWxsRnJhbWUuZXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKICAg
ICBTdHJpbmcgc2NyaXB0ID0gc2NyaXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTg3LDcgKzkwLDcgQEAgSlNWYWx1
ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlVwogICAgIEpTT2JqZWN0KiBzY29wZUV4
dGVuc2lvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gaW1wbCgpLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKHNjcmlwdCwgc2NvcGVFeHRl
bnNpb24sIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd1Njb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NiwxMTAgKzc2LDE0MyBAQCB2b2lkIEpT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6ZmluCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdp
dGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0
aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2Ny
aXB0aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zY29wZURlc2NyaXB0
aW9ucyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENh
bGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPmNhbGxlcihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNlSUQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNK
YXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY2FzdGVkVGhpcy0+c291cmNlSUQoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3Rl
ZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+bGluZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlQ29sdW1uKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVtbihleGVjKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRl
RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9u
TmFtZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lQXR0cmlidXRlU2NvcGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3Jp
cHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5zY29wZUNoYWluKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0
ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoZXhlYykpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVR5
cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWls
RGVsZXRlZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc1RhaWxEZWxldGVk
KGV4ZWMpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNo
ZWRDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhY2hlZENhbGwuaAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX3ZtKGNhbGxGcmFtZS0+dm0oKSkK
ICAgICAgICAgICAgICwgbV9lbnRyeVNjb3BlKG1fdm0sIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9i
YWxPYmplY3QobV92bSkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgbV92bSk7CisKICAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewogICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6
ZShhcmd1bWVudENvdW50KTsKICAgICAgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJl
dGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxG
cmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVu
Y3Rpb24tPnNjb3BlKCksIG1fYXJndW1lbnRzLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAg
ICAgICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGNhbGxGcmFt
ZSk7CiAgICAgICAgICAgICBtX3ZhbGlkID0gIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCk7CiAg
ICAgICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAy
MDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LTIwMTAsIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVybG9v
LmNhPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtODgsNiArODgsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogSlNWYWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCkBAIC05NSwxMCArOTgsMTAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIGlmICghcHJvZ3JhbS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4g
cHJvZ3JhbTsKIAotICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUoY2FsbEZyYW1l
LT52bSgpLCBjYWxsRnJhbWUpOworICAgIFRvcENhbGxGcmFtZVNldHRlciB0b3BDYWxsRnJhbWUo
dm0sIGNhbGxGcmFtZSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhbGxG
cmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFs
RW5hYmxlZCgpKSB7Ci0gICAgICAgIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2Fi
bGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVl
KGNhbGxGcmFtZSk7CkBAIC0xNDIsNyArMTQ1LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJh
bCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIApAQCAtMTUxLDE3ICsxNTQsMjAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIH0KIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUt
PnRoaXNWYWx1ZSgpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+
dm0oKS5pbnRlcnByZXRlcjsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bS5pbnRl
cnByZXRlcjsKICAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1l
LCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4pOwogfQogCiB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKCFhcmd1
bWVudHMuaXNDZWxsKCkpKSB7CiAgICAgICAgIGlmIChhcmd1bWVudHMuaXNVbmRlZmluZWRPck51
bGwoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKLSAgICAgICAgY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBw
bHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd1Nj
b3BlLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgCkBAIC0xNzYsNyArMTgyLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcgogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAg
ICAgY2FzZSBTeW1ib2xUeXBlOgotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNh
bGxGcmFtZSwgIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxs
RnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAgIGRl
ZmF1bHQ6CkBAIC0xOTgsMjEgKzIwNCwyNSBAQCB1bnNpZ25lZCBzaXplT2ZWYXJhcmdzKENhbGxG
cmFtZSogY2FsbEZyCiAKIHVuc2lnbmVkIHNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpCiB7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xv
dHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0
eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhy
b3dTY29wZSwgY2FsbEZyYW1lKTsKIAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKIHVuc2lnbmVk
IHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgSlNWYWx1
ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCkKIHsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVPZlZhcmFyZ3MoY2FsbEZyYW1lLCBhcmd1bWVudHMs
IGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAKICAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0g
Y2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xvdHMsIGxlbmd0
aCArIDEpOwogICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBtYXhBcmd1bWVudHMgfHwgIXZtLmVu
c3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkpIHsKLSAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIApAQCAtNzQyLDYgKzc1Miw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKIHsKICAgICBKU1Njb3BlKiBzY29wZSA9IHRoaXNPYmotPmdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIEFTU0VSVCghdm0uZXhj
ZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwpAQCAtNzUwLDcg
Kzc2MSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vy
c2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dT
dGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lKSk7CiAKICAgICAvLyBGaXJz
dCBjaGVjayBpZiB0aGUgInByb2dyYW0iIGlzIGFjdHVhbGx5IGp1c3QgYSBKU09OIG9iamVjdC4g
SWYgc28sCiAgICAgLy8gd2UnbGwgaGFuZGxlIHRoZSBKU09OIG9iamVjdCBoZXJlLiBFbHNlLCB3
ZSdsbCBoYW5kbGUgcmVhbCBKUyBjb2RlCkBAIC03OTQsNyArODA1LDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZW50cnkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxs
RnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihjYWxsRnJhbWUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBK
U09OUFBhdGhbaV0ubV9wYXRoRW50cnlOYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ290byBmYWlsZWRKU09OUDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgSlNP
TlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSk7CkBAIC04MjQsNyArODM1LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnJhbWUtPnZt
KCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihjYWxs
RnJhbWUsIGZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1Njb3Bl
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoY2FsbEZy
YW1lLCBmdW5jdGlvbikpOwogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpz
b25Bcmc7CiAgICAgICAgICAgICAgICAganNvbkFyZy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBq
c1VuZGVmaW5lZCgpOiBiYXNlT2JqZWN0OwpAQCAtODYxLDE4ICs4NzIsMTggQEAgZmFpbGVkSlNP
TlA6CiAKICAgICAvLyBDb21waWxlIHNvdXJjZSB0byBieXRlY29kZSBpZiBuZWNlc3Nhcnk6CiAg
ICAgaWYgKEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0
aWVzKHZtLCBjYWxsRnJhbWUsIHNjb3BlKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
Y2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3IpKTsKKyAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIGVycm9yKSk7CiAKICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewog
ICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7CiAgICAgICAgIGlmIChKU09iamVjdCog
ZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihj
YWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jaykpCi0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKSk7CiAgICAgICAg
IGNvZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAg
ICAgfQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxs
RnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlv
bihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhj
ZXB0aW9uKHRocm93U2NvcGUsIGNhbGxGcmFtZSk7CiAKICAgICBpZiAoc2NvcGUtPnN0cnVjdHVy
ZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQogICAgICAgICBzY29wZS0+ZmxhdHRlbkRp
Y3Rpb25hcnlPYmplY3Qodm0pOwpAQCAtODkxLDYgKzkwMiw4IEBAIGZhaWxlZEpTT05QOgogSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2Jq
ZWN0KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0
YSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQo
IXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCkBA
IC05MTMsMTMgKzkyNiwxMyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxs
RnJhCiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVy
biBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Nj
b3BlLCBjYWxsRnJhbWUpKTsKIAogICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAvLyBDb21w
aWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjYWxsRGF0
YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPihjYWxsRnJhbWUsIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZnVuY3Rpb24pLCBzY29wZSwg
Q29kZUZvckNhbGwsIG5ld0NvZGVCbG9jayk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBp
bGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZt
KCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBjb21waWxlRXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAg
ICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC05
MjcsNyArOTQwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQog
ICAgICAgICBuZXdDb2RlQmxvY2sgPSAwOwogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRy
aWdnZXJUZXJtaW5hdGlvbihjYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHRocm93U2NvcGUsIGNhbGxGcmFtZSk7CiAKICAg
ICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKICAgICBwcm90b0NhbGxGcmFtZS5pbml0
KG5ld0NvZGVCbG9jaywgZnVuY3Rpb24sIHRoaXNWYWx1ZSwgYXJnc0NvdW50LCBhcmdzLmRhdGEo
KSk7CkBAIC05NTAsMTIgKzk2MywxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2Fs
bChDYWxsRnJhCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSBjb25z
dHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBBU1NF
UlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0
b3JCdXN5KCkpOwogICAgIC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhhdmUg
dG8gcmV0dXJuIHNvbWV0aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkgaW4g
YW4gaW52YWxpZCBzdGF0ZS4KICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCi0gICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkp
OworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0
aHJvd1Njb3BlLCBjYWxsRnJhbWUpKTsKIAogICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IG51
bGxwdHI7CkBAIC05NzQsMTMgKzk4OSwxMyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1
dGVDb25zdHJ1Y3QoCiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFt
ZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cih0aHJvd1Njb3BlLCBjYWxsRnJhbWUpKTsKIAogICAgIGlmIChpc0pTQ29uc3RydWN0KSB7CiAg
ICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhl
Y3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAgICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBj
b21waWxlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKIAogICAgICAgICBB
U1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3
YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC05ODgsNyArMTAwMyw3IEBAIEpTT2JqZWN0KiBJbnRl
cnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrID0gMDsKIAog
ICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0
aHJvd1Njb3BlLCBjYWxsRnJhbWUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJh
bWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBu
ZXdUYXJnZXQsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTAxNSw2ICsxMDMwLDcgQEAg
SlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogQ2FsbEZyYW1lQ2xvc3Vy
ZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSog
cHJvdG9DYWxsRnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlKiBhcmdzKQogewogICAgIFZNJiB2
bSA9ICpzY29wZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICAKICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCkBAIC0xMDI0LDcgKzEwNDAsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yCiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOwogICAgIGlmIChlcnJvcikgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CisgICAgICAgIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVD
bG9zdXJlKCk7CiAgICAgfQogICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKQEAgLTEwNDAsNyArMTA1Niw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJw
cmV0ZXI6OnByZXBhcmVGb3IKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1l
Q2xvc3VyZSYgY2xvc3VyZSkgCiB7CiAgICAgVk0mIHZtID0gKmNsb3N1cmUudm07Ci0gICAgCisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBBU1NFUlQoIXZtLmlz
Q29sbGVjdG9yQnVzeSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5jdXJyZW50VGhyZWFkSXNI
b2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCkBAIC0xMDQ5
LDcgKzEwNjYsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiAg
ICAgU3RhY2tTdGF0czo6Q2hlY2tQb2ludCBzdGFja0NoZWNrUG9pbnQ7CiAKICAgICBpZiAoVU5M
SUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKHRocm93U2NvcGUsIGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKIAogICAgIC8vIEV4
ZWN1dGUgdGhlIGNvZGU6CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjbG9zdXJlLmZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sIGNsb3N1cmUu
cHJvdG9DYWxsRnJhbWUpOwpAQCAtMTA2MCw3ICsxMDc3LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZShDYWxsRnJhbWVDbAogSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFs
RXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBKU1Njb3BlKiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7Ci0gICAgCisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBBU1NFUlQoc2NvcGUt
PnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CkBAIC0xMDcwLDcgKzEwODgsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAKICAgICBWTUVudHJ5
U2NvcGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5M
SUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOyAgICAgICAgCisgICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2Nv
cGUsIGNhbGxGcmFtZSkpOwogCiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzID0gZXZhbC0+bnVt
VmFyaWFibGVzKCk7CiAgICAgaW50IG51bUZ1bmN0aW9ucyA9IGV2YWwtPm51bWJlck9mRnVuY3Rp
b25EZWNscygpOwpAQCAtMTEwMSw3ICsxMTE5LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YQogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7CiAgICAg
ICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2
YWxFeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVt
cENvZGVCbG9jayk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCi0gICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjb21waWxlRXJyb3Ip
KTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJs
b2NrKTsKICAgICB9CiAKQEAgLTExMTIsNyArMTEzMCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT52YXJpYWJsZShpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFt
ZSwgaWRlbnQsIHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGlj
YXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICIn
IikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCBjYWxsRnJhbWUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNh
dGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIici
KSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTExMjAsNyArMTEzOCw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAg
ICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBp
ZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxl
IGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2Jh
bCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwg
IiciKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTE0OSw3ICsxMTY3
LDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIH0KIAog
ICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZy
YW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0
aHJvd1Njb3BlLCBjYWxsRnJhbWUpOwogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCkBAIC0xMTY1LDYgKzEx
ODMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCiB7CiAg
ICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOwogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwog
ICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTE3NSwxOSArMTE5NCwxOSBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBWTUVudHJ5U2NvcGUg
ZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gY2hl
Y2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBjYWxsRnJhbWUp
KTsKIAogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJs
b2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwogICAg
ICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2Rl
QmxvY2spOwogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWlu
YXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbih0aHJvd1Njb3BlLCBjYWxsRnJhbWUpOwogCiAgICAgaWYgKHNjb3Bl
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2NvcGUt
PmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAs
NiArOTAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAg
ICAgLy8gV2UgcGFzcyBpbiBvdXIgb3duIGNvZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFt
ZSBoYXNuJ3QgYmVlbiBwb3B1bGF0ZWQuCiAgICAgVk0qIHZtID0gY29kZUJsb2NrLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgKnZtKTsKIAogICAgIFZNRW50cnlGcmFt
ZSogdm1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKQEAgLTk5LDQzICsx
MDAsNDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgIH0K
IAogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRy
eUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVy
RnJhbWUpOworICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGNhbGxlckZy
YW1lKTsKIH0KIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd0RpdmlkZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CisK
ICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFt
ZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZt
RW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJv
cihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9u
IG92ZXJmbG93LiIpKSk7CisgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihjYWxsZXJGcmFt
ZSwgY3JlYXRlRXJyb3IoY2FsbGVyRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiRGl2aXNpb24gYnkgemVy
byBvciBkaXZpc2lvbiBvdmVyZmxvdy4iKSkpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVGhyb3dPdXRPZkJvdW5kc0FjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
ICp2bSk7CisKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5
RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZt
RW50cnlGcmFtZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFj
ZXIodm0sIHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29w
ZSBlcnJvclNjb3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBj
cmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vz
cy4iKSkpOworICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0
ZUVycm9yKGNhbGxlckZyYW1lLCBBU0NJSUxpdGVyYWwoIk91dC1vZi1ib3VuZHMgYWNjZXNzLiIp
KSk7CiB9CiAjZW5kaWYKIAogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0
eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CiAKICAgICBpbnQzMl90IG1pc3Np
bmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENv
ZGVGb3JDYWxsKTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVu
dHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwog
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50
cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsZXJGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUs
IGNhbGxlckZyYW1lKTsKICAgICB9CiAKICAgICByZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwpAQCAt
MTQ0LDEzICsxNTAsMTQgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0
eQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgKnZtKTsKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICp2bSwgQ29kZUZvckNvbnN0
cnVjdCk7CiAgICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApIHsKICAgICAgICAgVk1FbnRyeUZy
YW1lKiB2bUVudHJ5RnJhbWUgPSB2bS0+dG9wVk1FbnRyeUZyYW1lOwogICAgICAgICBDYWxsRnJh
bWUqIGNhbGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKICAgICAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyV2l0aFJlc3RvcmUgdHJhY2VyKHZtLCB2bUVudHJ5RnJh
bWUsIGNhbGxlckZyYW1lKTsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVy
RnJhbWUpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBjYWxs
ZXJGcmFtZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTI1NSw5
ICsyNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAg
IAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwotICAgIAorICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
KnZtKTsKKwogICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewotICAgICAgICB2bS0+dGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkp
OworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0yODQsMTEgKzI5MiwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7Ci0gICAgCisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCAqdm0pOworCiAgICAg
c3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBh
cmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC03ODQsNiArNzkzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCAqdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogCkBAIC04MDksNyAr
ODE5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAg
ICB9CiAgICAgCiAgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7Ci0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBA
IC04MzYsNyArODQ2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgIH0KICAgICAKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAg
ICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC04
NDYsNiArODU2LDggQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCAq
dm0pOworCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5z
cGVjaWFsaXphdGlvbktpbmQoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKICAgICAKQEAgLTg1NSw3ICs4NjcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklU
X09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2FjaGUgdGhl
c2Uga2luZHMgb2YgY2FsbHMuIFRoZXkgY2FuIGJlIGNvbW1vbiBhbmQgY3VycmVudGx5IHRoZXkg
YXJlCiAgICAgICAgIC8vIGV4cGVuc2l2ZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDQ1OAotICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENh
bGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExpbmtJbmZvKTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUuZm9yd2FyZChoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVB
c1ZhbHVlLCBjYWxsTGlua0luZm8pKTsKICAgICB9CiAKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKQEAgLTg4MiwxOSAr
ODk0LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBpZiAoIWlzQ2FsbChr
aW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVl
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgdGhyb3dT
Y29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVj
LCBjYWxsZWUpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoZW5jb2Rl
UmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCi0gICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CisgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUt
PmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPihleGVj
Q2FsbGVlLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7CiAgICAgICAgIGlm
IChlcnJvcikgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBl
cnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAorICAgICAgICAgICAgdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dTY29wZS5mb3J3YXJkKGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0
Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpLAotICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEtlZXBUaGVGcmFtZSkpOworICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEtlZXBUaGVGcmFtZSkpKTsKICAgICAgICAgfQogICAgICAgICBjb2RlQmxvY2sgPSAqY29k
ZUJsb2NrU2xvdDsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CkBAIC05MDksNyArOTIx
LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIGVsc2UK
ICAgICAgICAgbGlua0ZvcihleGVjQ2FsbGVlLCAqY2FsbExpbmtJbmZvLCBjb2RlQmxvY2ssIGNh
bGxlZSwgY29kZVB0cik7CiAgICAgCi0gICAgcmV0dXJuIGVuY29kZVJlc3VsdChjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5mby0+
Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhlRnJh
bWUpKTsKKyAgICByZXR1cm4gdGhyb3dTY29wZS5mb3J3YXJkKGVuY29kZVJlc3VsdChjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxMaW5rSW5m
by0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6VGFpbCA/IFJldXNlVGhlRnJhbWUgOiBLZWVwVGhl
RnJhbWUpKSk7CiB9CiAKIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGhG
dW5jdGlvbigKQEAgLTkxNyw2ICs5MjksOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsICp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBj
YWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCkBAIC05MzcsNyArOTUxLDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKTsKIAogICAgICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOworICAg
ICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNv
bnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4
Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpLAogICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhl
RnJhbWUpKTsKQEAgLTk0Niw3ICs5NjAsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoCiAgICAgICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhl
Y0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7CiAgICAgICAgICAgICBKU09iamVjdCogZXJy
b3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVj
dXRhYmxlPihleGVjQ2FsbGVlLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90
KTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUu
dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0
aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCks
CiAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFt
ZSkpOwpAQCAtOTU0LDcgKzk2OCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVh
bEZvcldpdGgKICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
ICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVu
Y3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENU
SVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC0xMTI5LDkgKzExNDMsMTEgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVy
U2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIFJlZ0V4cCogcmVnZXhwID0gc3RhdGljX2Nhc3Q8UmVn
RXhwKj4ocmVnZXhwUHRyKTsKICAgICBpZiAoIXJlZ2V4cC0+aXNWYWxpZCgpKSB7Ci0gICAgICAg
IHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ2V4cC0+
ZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBAIC0x
MTQ2LDkgKzExNjIsMTAgQEAgVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFuZGxl
VwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OwogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihleGVjKSkp
Ci0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oJnZtKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKIAogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtMTE1NywxMyArMTE3NCwxNSBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3dTdGF0aWNFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGVycm9yTWVzc2FnZVZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXJyb3JN
ZXNzYWdlVmFsdWUuaXNTdHJpbmcoKSk7CiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IGFzU3Ry
aW5nKGVycm9yTWVzc2FnZVZhbHVlKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKHJlZmVyZW5jZUVy
cm9yRmxhZykKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7CiAg
ICAgZWxzZQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBlcnJvck1lc3NhZ2UpOwogfQog
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiBleGVjLCBpbnQz
Ml90IGRlYnVnSG9va0lEKQpAQCAtMTg2MSwxMyArMTg4MCwxNCBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeUlkCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCFiYXNlT2Jq
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmot
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZCgmdm0sIHVpZCkpOwogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29k
ZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIApAQCAtMTg4MCw2
ICsxOTAwLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogCiAg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnRvT2Jq
ZWN0KGV4ZWMpOwogICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkp
OwpAQCAtMTg5OSw3ICsxOTIwLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVs
ZXRlQnlWYQogICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgcHJvcGVydHkpOwogICAgIH0KICAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICByZXR1cm4gY291
bGREZWxldGU7CiB9CiAKQEAgLTIwMTYsNiArMjAzNyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIHBjID0gYnl0ZWNvZGVQQzsKIApAQCAtMjAy
OSw3ICsyMDUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewog
ICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZl
TW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cisg
ICAgICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0yMDM4LDcgKzIwNjEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVuIHdlIGNh
bid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJmb3Jt
IHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFs
dWUoKSkgewotICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVRE
WkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjA1NSw2ICsyMDc4LDgg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSW5zdHJ1
Y3Rpb24qIHBjID0gYnl0ZWNvZGVQQzsKIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CkBAIC0yMDgyLDIwICsyMTA3LDIwIEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBpZGVu
dCwgc2xvdCk7CiAgICAgICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBqc1RE
WlZhbHVlKCkpIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRo
cm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50
KSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlzSW5pdGlhbGl6YXRpb24oZ2V0
UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNjb3BlLT5tZXRob2RUYWJsZSgp
LT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7CiAgICAgCi0gICAgaWYgKGV4
ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbChl
eGVjLCBjb2RlQmxvY2ssIHBjLCBzY29wZSwgZ2V0UHV0SW5mbywgc2xvdCwgaWRlbnQpOwpAQCAt
MjEwNSw5ICsyMTMwLDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVj
U3QKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2
bSk7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRFeGNlcHRpb25WYWx1ZSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
blZhbHVlKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblZh
bHVlKTsKIAogICAgIC8vIFJlc3VsdHMgc3RvcmVkIG91dC1vZi1iYW5kIGluIHZtLnRhcmdldE1h
Y2hpbmVQQ0ZvclRocm93ICYgdm0uY2FsbEZyYW1lRm9yQ2F0Y2gKICAgICBnZW5lcmljVW53aW5k
KHZtLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAogI2RlZmluZSBMTElOVF9CRUdJ
Tl9OT19TRVRfUEMoKSBcCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsgICAgICBcCi0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpCisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOyBcCisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSkKIAogI2lmbmRlZiBOREVCVUcKICNkZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVC
UygpIGRvIHsgXApAQCAtOTIsNyArOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKICNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCAwKQog
CiAjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblRv
VGhyb3cpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgIFwKICAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE1Miw3ICsxNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKIAogI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIGV4Y2Vw
dGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUq
IF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihfX2N0X2V4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKF9fY3Rf
ZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICBcCiAgICAgICAgIExMSU5UX0NBTExfRU5EX0lN
UEwoMCwgY2FsbFRvVGhyb3coX19jdF9leGVjKSk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKQEAgLTQ2Niw2ICs0NjcsOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChy
ZXBsYWNlKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tfY2hlY2spCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0gdm0udG9wVk1FbnRyeUZyYW1lOwogICAg
IENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUp
OwogICAgIGlmICghY2FsbGVyRnJhbWUpIHsKQEAgLTQ4Miw5ICs0ODUsOSBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzdGFja19jaGVjaykKICAgICBkYXRhTG9nRigiTnVtIGNhbGxlZSByZWdpc3Rl
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZUxvY2Fscyk7CiAgICAg
ZGF0YUxvZ0YoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJz
KTsKIAotICAgIGRhdGFMb2dGKCJDdXJyZW50IE9TIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIsIGV4
ZWMtPnZtKCkuc29mdFN0YWNrTGltaXQoKSk7CisgICAgZGF0YUxvZ0YoIkN1cnJlbnQgT1Mgc3Rh
Y2sgZW5kIGlzIGF0ICVwLlxuIiwgdm0uc29mdFN0YWNrTGltaXQoKSk7CiAjaWYgIUVOQUJMRShK
SVQpCi0gICAgZGF0YUxvZ0YoIkN1cnJlbnQgQyBMb29wIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIs
IGV4ZWMtPnZtKCkuY2xvb3BTdGFja0xpbWl0KCkpOworICAgIGRhdGFMb2dGKCJDdXJyZW50IEMg
TG9vcCBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCB2bS5jbG9vcFN0YWNrTGltaXQoKSk7CiAjZW5k
aWYKIAogI2VuZGlmCkBAIC01MDIsNyArNTA1LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3Rh
Y2tfY2hlY2spCiAjZW5kaWYKIAogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZt
KTsKLSAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSk7CisgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgY2FsbGVyRnJhbWUpOwogICAgIHBjID0gcmV0
dXJuVG9UaHJvdyhjYWxsZXJGcmFtZSk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYyk7
CiB9CkBAIC0xMTg1LDYgKzExODgsNyBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGhhbmRs
ZUhvc3RDYWxsCiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwogICAg
IGV4ZWNDYWxsZWUtPmNsZWFyUmV0dXJuUEMoKTsKQEAgLTEyMzcsNiArMTI0MSw4IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
ZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogCiAjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKICAgICBkYXRhTG9nRigiUGVyZm9ybWluZyBjYWxsIHdpdGggcmVjb3JkZWQgUEMg
PSAlcFxuIiwgZXhlYy0+Y3VycmVudFZQQygpKTsKQEAgLTEyNDQsMTEgKzEyNTAsMTAgQEAgaW5s
aW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlYwogICAgIAogICAgIEpTQ2VsbCog
Y2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwogICAg
IGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCi0gICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2Fs
bChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgICAgIHJldHVybiB0
aHJvd1Njb3BlLmZvcndhcmQoaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFz
VmFsdWUsIGtpbmQpKTsKICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IGNh
bGxlZS0+c2NvcGVVbmNoZWNrZWQoKTsKLSAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CiAgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKIAogICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwpAQCAtMTMxMSw4ICsxMzE2LDEwIEBAIGlu
bGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWMKICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjLCBleGVjQ2FsbGVlLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogfQog
Ci1pbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCitpbmxpbmUgU2xv
d1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAg
Ly8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgogICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNh
bGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgpAQCAtMTMyOCwxOSArMTMzNSwxOSBAQCBp
bmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4CiAgICAgZXhlY0NhbGxlZS0+
c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CiAgICAgCiAgICAgQVNTRVJUKHBjWzVdLnUuY2FsbExpbmtJ
bmZvKTsKLSAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVB
c1ZhbHVlLCBwY1s1XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHRocm93U2NvcGUuZm9y
d2FyZChzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzVd
LnUuY2FsbExpbmtJbmZvKSk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
YWxsKQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOwotICAgIHJldHVybiBnZW5lcmlj
Q2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndh
cmQoZ2VuZXJpY0NhbGwodm0sIGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCkpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0KQogewogICAgIExMSU5UX0JFR0lOX05P
X1NFVF9QQygpOwotICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgcmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChnZW5lcmljQ2FsbCh2bSwgZXhl
YywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NpemVfZnJhbWVfZm9yX3ZhcmFyZ3MpCkBAIC0xNTE1LDcgKzE1MjIsNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRfUkVUVVJOKHNj
b3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVy
dHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAg
ICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICB9CiAKQEAgLTE1MjQsNyArMTUzMSw3IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfZnJvbV8KICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3Rh
dGljYWxseSBwcm92ZSB3ZSBuZWVkIGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNo
ZWNrIG9uIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIGlkZW50KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKGV4ZWMs
IHZtLCBwYywgc2NvcGUsIHNsb3QsIGlkZW50KTsKQEAgLTE2MTgsOSArMTYyNSwxMSBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3Rv
Q2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BD
YWxsRnJhbWU7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCAqdm0pOworCiAgICAg
aWYgKCFleGVjKQogICAgICAgICBleGVjID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7
CisgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1r
QHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCiAgKgpAQCAtNzMsMTggKzczLDIwIEBAIHZvaWQgQXJyYXlDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSlNPYmplY3QqIGNvbnN0
cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVu
Z3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKK0pTVmFsdWUgY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1
aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgbmV3VGFy
Z2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKCFsZW5ndGguaXNOdW1iZXIoKSkKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGV4ZWMsIHByb2ZpbGUsIGdsb2JhbE9i
amVjdCwgJmxlbmd0aCwgMSwgbmV3VGFyZ2V0KTsKICAgICAKICAgICB1aW50MzJfdCBuID0gbGVu
Z3RoLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChuICE9IGxlbmd0aC50b051bWJlcihleGVjKSkK
LSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5v
dWdoIHBvc2l0aXZlIGludGVnZXIuIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFy
cmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKTsKICAg
ICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3Qs
IG4sIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEFy
cmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpT
VmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGNvbnN0cnVjdEFycmF5V2l0
aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUg
bmV3VGFyZ2V0KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVy
bmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2
aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNiArMjMsNyBAQAog
CiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1ZGUgIlByb3h5T2JqZWN0Lmgi
CisjaW5jbHVkZSAiVGhyb3dTY29wZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTYwLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEo
SlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKK0pT
VmFsdWUgY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHBy
b3RvdHlwZSA9IEpTVmFsdWUoKSk7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwog
CkBAIC02OCw2ICs2OSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25z
dHIKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXkKIGlubGlu
ZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmICghYXJndW1lbnRWYWx1ZS5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTgxLDcgKzg1LDcgQEAgaW5saW5lIGJvb2wgaXNBcnJheShFeGVj
U3RhdGUqIGV4ZWMsIEpTVgogCiAgICAgICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGFyZ3VtZW50KTsKICAgICAgICAgaWYgKHByb3h5LT5pc1Jldm9rZWQoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheS5p
c0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94eSB0aGF0IGhhcyBiZWVuIHJldm9rZWQi
KSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIkFycmF5LmlzQXJyYXkgY2Fubm90IGJlIGNhbGxlZCBvbiBhIFByb3h5IHRoYXQgaGFz
IGJlZW4gcmV2b2tlZCIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBhcmd1bWVudCA9IHByb3h5LT50YXJnZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2NSw5IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQg
YXJndW1lbnRDbGFtcGVkSW4KIHRlbXBsYXRlPEpTQXJyYXk6OlNoaWZ0Q291bnRNb2RlIHNoaWZ0
Q291bnRNb2RlPgogdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
LCB1bnNpZ25lZCBoZWFkZXIsIHVuc2lnbmVkIGN1cnJlbnRDb3VudCwgdW5zaWduZWQgcmVzdWx0
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQo
Y3VycmVudENvdW50ID4gcmVzdWx0Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gY3VycmVu
dENvdW50IC0gcmVzdWx0Q291bnQ7CiAKQEAgLTI4NiwxNCArMjg5LDE0IEBAIHZvaWQgc2hpZnQo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGgKICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5
SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxz
ZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5
SW5kZXgodGhpc09iaiwgZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yICh1bnNp
Z25lZCBrID0gbGVuZ3RoOyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgewotICAgICAgICBpZiAo
IXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgayAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICBp
ZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTMwMiw2ICszMDUsOSBAQCB2
b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoCiB0ZW1wbGF0ZTxKU0FycmF5
OjpTaGlmdENvdW50TW9kZSBzaGlmdENvdW50TW9kZT4KIHZvaWQgdW5zaGlmdChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCB1bnNpZ25lZCBoZWFkZXIsIHVuc2lnbmVkIGN1cnJl
bnRDb3VudCwgdW5zaWduZWQgcmVzdWx0Q291bnQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0Q291bnQgPiBjdXJyZW50Q291bnQpOwogICAg
IHVuc2lnbmVkIGNvdW50ID0gcmVzdWx0Q291bnQgLSBjdXJyZW50Q291bnQ7CiAKQEAgLTMxMCw3
ICszMTYsNyBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogCiAKICAg
ICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93LgogICAgIGlmIChjb3VudCA+IChVSU5UX01BWCAt
IGxlbmd0aCkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTMyNyw4ICszMzMsOCBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+cHV0QnlJbmRleElu
bGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2Jq
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmos
IGV4ZWMsIHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgfSBlbHNlIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgdG8pKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTM2MSw3ICszNjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GCiAgICAgICAgIGN1c3RvbUpvaW5DYXNlID0gdHJ1ZTsKIAogICAgIGlmIChVTkxJS0VMWShj
dXN0b21Kb2luQ2FzZSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIs
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIp
KTsKIAogICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1d
IGludGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBhcyB0aGUgdGhpcyB2YWx1
ZSBhbmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgaWYgKCFpc0pTQXJyYXkodGhpc09i
amVjdCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGU6Okhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uICE9IGFycmF5UHJvdG9GdW5jSm9pbikKQEAgLTY3NCw2ICs2ODAsOSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSkKQEAgLTY5NCw4ICs3
MDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAg
IHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVy
YWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQogICAgICAgICBwdXRMZW5n
dGgoZXhlYywgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwpAQCAtNzQwLDExICs3NDks
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICgh
dGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBnZXRMZW5n
dGgoZXhlYywgdGhpc09iamVjdCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtODEyLDcgKzgyMyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
IXRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIGxvd2VyKSkgewogICAgICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0
eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgICAgIH0KIApAQCAtODIyLDcgKzgzMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHVwcGVyKSkgewogICAg
ICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC05MDIsNiAr
OTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIC8v
IDE1LjQuNC4xMgogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gZXhlYy0+dGhp
c1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlm
ICghdGhpc09iaikKQEAgLTk2Niw3ICs5NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBK
U0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhVbmRlY2lkZWQpLCBkZWxldGVDb3VudCk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVsZXRlQ291bnQ7ICsraykgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgKyBi
ZWdpbik7CkBAIC0xMTIzLDYgKzExMzUsOCBAQCBzdGF0aWMgYm9vbCBtb3ZlRWxlbWVudHMoRXhl
Y1N0YXRlKiBleGVjCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGZpcnN0LCBKU1ZhbHVlIHNlY29uZCkKIHsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEFTU0VSVCghaXNK
U0FycmF5KHNlY29uZCkpOwogICAgIEFTU0VSVCghc2hvdWxkVXNlU2xvd1B1dChmaXJzdC0+aW5k
ZXhpbmdUeXBlKCkpKTsKICAgICBCdXR0ZXJmbHkqIGZpcnN0QnV0dGVyZmx5ID0gZmlyc3QtPmJ1
dHRlcmZseSgpOwpAQCAtMTEzNiw3ICsxMTUwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNv
bmNhdEFwcGVuZE9uZShFeAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24odHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRl
KHZtLCByZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgMSk7CiAgICAgaWYgKCFyZXN1
bHQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogCiAgICAgaWYgKCFyZXN1bHQtPmFwcGVuZE1lbWNw
eShleGVjLCB2bSwgMCwgZmlyc3QpKSB7CiAgICAgICAgIGlmICghbW92ZUVsZW1lbnRzKGV4ZWMs
IHZtLCByZXN1bHQsIDAsIGZpcnN0LCBmaXJzdEFycmF5U2l6ZSkpIHsKQEAgLTExNTUsNiArMTE2
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1AKIHsKICAgICBB
U1NFUlQoZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDIpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBKU0FycmF5
KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgCkBAIC0xMTk5LDcgKzEyMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9QCiAgICAgU3RydWN0dXJlKiByZXN1bHRTdHJ1Y3R1cmUgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbih0eXBlKTsKICAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHZtLCByZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgc2Vj
b25kQXJyYXlTaXplKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAg
ICAgCiAgICAgaWYgKHR5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgIGRvdWJsZSog
YnVmZmVyID0gcmVzdWx0LT5idXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpLmRhdGEoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC02OCw2ICs2OCw3IEBAIHZvaWQgQm9vbGVhblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0K
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbihmYWxzZSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmlu
ZygpKTsKQEAgLTc2LDcgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5zbWFsbFN0cmluZ3Mu
dHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEJvb2xlYW5PYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIGlm
IChhc0Jvb2xlYW5PYmplY3QodGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVh
bihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5n
cy5mYWxzZVN0cmluZygpKTsKQEAgLTg3LDEyICs4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvb2xlYW5Qcm90CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9v
bGVhblByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzQm9vbGVhbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cyhCb29sZWFuT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQm9vbGVhbk9iamVj
dCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmlu
ZSBFTkRfSU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMpCiAKICNkZWZpbmUgVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgIFwKKyAgICAgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7ICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb25Ub1Rocm93KTsg
IFwKICAgICAgICAgUkVUVVJOX1RPX1RIUk9XKGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE0MSwxMyArMTQyLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0
KSBSRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQogCi0jZGVmaW5lIENBTExfVEhST1co
ZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgIENBTExfRU5EX0lNUEwoY3RFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RFeGVjKSk7ICAg
ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KICNkZWZpbmUgQ0FMTF9DSEVDS19F
WENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgRXhlY1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsOCArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3Rh
dAogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwg
SlNWYWx1ZSBiYXNlVmFsKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKCFiYXNlVmFsLmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlk
SW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsKSk7CisgICAgICAgIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFz
ZVZhbCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NSw3ICs4Nyw3IEBA
IGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAgICAgcmV0dXJu
IGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOwogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHBy
b3BOYW1lLnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9u
KCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRoc0V4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzksNyArMzksOSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUq
CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsICp2bSk7CisKKyAgICB0aHJvd1Njb3Bl
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lO
RwogICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCB2bS0+ZXhjZXB0aW9uKCksICIu
XG4iKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29uc3RydWN0RGF0YS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMCArMzcs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25z
dCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIENvbnN0cnVjdERhdGEgY29u
c3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1
Y3REYXRhKGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKICAgICBpZiAoY29uc3Ry
dWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIGVycm9yTWVzc2FnZSk7CiAKICAgICByZXR1cm4gY29uc3RydWN0
KGV4ZWMsIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBh
cmdzLCBjb25zdHJ1Y3Rvck9iamVjdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWpp
bmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtMzIwLDkgKzMyMCwxMCBA
QCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBmb3JtYXRlRGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgRGF0ZVRpbWVG
b3JtYXQgZm9ybWF0LCBib29sIGFzVVRDVmFyaWFudCkKIHsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBEYXRlSW5z
dGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKIApAQCAtNTIy
LDEzICs1MjMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVj
LT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IERhdGUiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpOwog
CiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0Rh
dGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0
ZVRpbWUpCkBAIC01NjgsOSArNTcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5j
VG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRo
aXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwpAQCAtNTc4
LDkgKzU4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlz
RGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmot
PmludGVybmFsTnVtYmVyKCksIExvY2FsZURhdGUpKTsKQEAgLTU4OCw5ICs1OTIsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExv
Y2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigp
LCBMb2NhbGVUaW1lKSk7CkBAIC01OTgsMTMgKzYwMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGUucHJvdG90eXBlW1N5
bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkRhdGUucHJv
dG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVj
dC4iKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNW
YWx1ZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2
ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1p
dGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAogICAgIEpTVmFsdWUgaGludFZh
bHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4ZWMsIGhpbnRWYWx1ZSk7CkBA
IC02MTksMTggKzYyNSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWUo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhl
Yy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjQyLDkgKzY1MCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJp
dHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKQEAgLTY1Niw5ICs2NjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5m
bygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3Rh
bmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NzAs
OSArNjgwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjg0LDkgKzY5NSwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlz
VmFsdWUpOyAKIApAQCAtNjk4LDkgKzcxMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldFVUQ0RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzEy
LDkgKzcyNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03MjYsOSArNzQwLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7
CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCiAKQEAgLTc0MCw5ICs3NTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNl
KiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NTQsOSAr
NzcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0o
KSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBh
c0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzY4LDkgKzc4NSwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlz
VmFsdWUpOyAKIApAQCAtNzgyLDkgKzgwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAt
Nzk2LDkgKzgxNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhl
Yy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODEwLDkgKzgzMCwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODI0LDkgKzg0NSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERh
dGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1
ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwpA
QCAtODQwLDkgKzg2MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01p
bGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygp
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNl
KiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBt
aWxsaSA9IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwpAQCAtODU2LDkgKzg3OSwxMCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
dGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg3MCw5ICs4OTQsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAKQEAgLTg4NCw5ICs5MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFy
Z3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0
VGltZVR5cGUpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmot
PmludGVybmFsTnVtYmVyKCk7CkBAIC05MjMsOSArOTQ5LDEwIEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBzZXROZXdWYWx1ZUZyb21UaW0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1Zh
bHVlRnJvbURhdGVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG51bUFyZ3NUb1VzZSwgV1RGOjpU
aW1lVHlwZSBpbnB1dFRpbWVUeXBlKQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhp
c0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKSB7CkBAIC0xMDM1LDkgKzEwNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNl
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOwpAQCAtMTA3OCw5ICsxMTA2LDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0
YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC0xMDk0LDYgKzExMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvSlNP
TihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBl
eGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlz
KGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBA
IC0xMTEyLDEzICsxMTQyLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9JU09T
dHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwo
ZXhlYywgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBl
eGVjLT5lbXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgidG9JU09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgidG9JU09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCwzNCAr
MjAwLDM0IEBAIGJvb2wgaGFzRXJyb3JJbmZvKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmoKICAgICAg
ICAgfHwgZXJyb3ItPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhl
Yywgc291cmNlVVJMUHJvcGVydHlOYW1lKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgY2hhciogY29uc3RydWN0b3JOYW1lKQorSlNPYmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCiB7Ci0gICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JO
YW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwg
Y29uc3RydWN0b3JOYW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7
CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVj
dCogdGhyb3dUeXBlRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBleGVj
KQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMpKTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0pTT2JqZWN0KiB0
aHJvd1R5cGVFcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmluZyhlcnJvck1lc3NhZ2UpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgU3RyaW5nKGVycm9yTWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09i
amVjdCogdGhyb3dUeXBlRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKKyAgICBy
ZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgbWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUq
IGV4ZWMpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJy
b3IiKSkpOworICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKIH0KIAot
SlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQogCiBKU09iamVjdCogY3JlYXRl
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZUlu
bGluZXMuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogCkBAIC03MCwyMSArNzEsMjEgQEAgSlNP
YmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iagogLy8gTWV0aG9kcyB0byB0aHJv
dyBFcnJvcnMuCiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4g
ZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi1KU19FWFBPUlRfUFJJVkFURSBKU09i
amVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihF
eGVjU3RhdGUqLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIEFTQ0lJTGl0ZXJhbCBlcnJv
ck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLUpTX0VYUE9SVF9QUklWQVRF
IEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpOwotaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRl
KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgp
LnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3Nh
Z2UpKTsgfQorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSosIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKFRocm93U2NvcGUmLCBFeGVjU3RhdGUqLCBBU0NJ
SUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJv
d1R5cGVFcnJvcihUaHJvd1Njb3BlJiwgRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoVGhy
b3dTY29wZSYsIEV4ZWNTdGF0ZSopOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
U3ludGF4RXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKTsKK2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKFRocm93U2NvcGUmIHRo
cm93U2NvcGUsIEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7
IHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3Jh
cCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCi1pbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJv
d1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcikpOyB9Ci1pbmxp
bmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFs
IGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIGVycm9yTWVzc2FnZSkpOyB9Ci1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0K
LWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93UmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSB2b2lkIHRocm93
Vk1FcnJvcihUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlv
biogZXhjZXB0aW9uKSB7IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9u
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKSk7IH0KK2lubGlu
ZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUs
IEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMpKTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBl
RXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBleGVjLCBBU0NJSUxpdGVy
YWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1ZNVHlwZUVycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBlcnJvck1lc3NhZ2UpKTsgfQoraW5saW5l
IEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUs
IEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBlcnJvck1l
c3NhZ2UpKTsgfQogCiBjbGFzcyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24gOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiBwcml2YXRlOgpAQCAtMTA4LDcgKzEwOSw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFRocm93
VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgfQogCkBAIC0xMjAsNyArMTIzLDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDEyICs2NywxNSBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQuNAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgLy8gMS4gTGV0IE8gYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMg
bm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBK
U09iamVjdCogdGhpc09iaiA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKICAgICAvLyBHdWFyZCBh
Z2FpbnN0IHJlY3Vyc2lvbiEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkZ1enouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4Y2VwdGlvbkZ1enouY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMTYg
KzM4LDE4IEBAIHVuc2lnbmVkIG51bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrcygpIHsKIC8vIENh
bGwgdGhpcyBvbmx5IGlmIHlvdSBrbm93IHRoYXQgZXhjZXB0aW9uIGZ1enppbmcgaXMgZW5hYmxl
ZC4KIHZvaWQgZG9FeGNlcHRpb25GdXp6aW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciog
d2hlcmUsIHZvaWQqIHJldHVyblBDKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgQVNTRVJUKE9wdGlvbnM6OnVz
ZUV4Y2VwdGlvbkZ1enooKSk7CiAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoZXhlYy0+
dm0oKS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
CiAgICAgc19udW1iZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsKICAgICAKICAgICB1bnNpZ25l
ZCBmaXJlVGFyZ2V0ID0gT3B0aW9uczo6ZmlyZUV4Y2VwdGlvbkZ1enpBdCgpOwogICAgIGlmIChm
aXJlVGFyZ2V0ID09IHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKSB7CiAgICAgICAgIHBy
aW50ZigiSlNDIEVYQ0VQVElPTiBGVVpaOiBUaHJvd2luZyBmdXp6IGV4Y2VwdGlvbiB3aXRoIGNh
bGwgZnJhbWUgJXAsIHNlZW4gaW4gJXMgYW5kIHJldHVybiBhZGRyZXNzICVwLlxuIiwgZXhlYywg
d2hlcmUsIHJldHVyblBDKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbigKKyAg
ICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigKICAgICAgICAgICAgIGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0aW9uIEZ1enoiKSkpOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yODks
MjMgKzI4OSwyMyBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAg
ICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoVGhy
b3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAgIHJl
dHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
YykpOworICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRocm93VGVybWlu
YXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBFcnJvckhhbmRsaW5nU2Nv
cGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CisgICAgcmV0dXJuIHRocm93
U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbigmdm0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkVycm9ySW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGVJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Miw5ICs1Myw5IEBAIEpTT2JqZWN0KiBjcmVh
dGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3QKIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogSlNTdHJpbmcq
IGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKIAotSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqKTsK
LUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVj
U3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKFRocm93U2NvcGUmLCBFeGVjU3RhdGUqKTsKK0pTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihUaHJvd1Njb3BlJiwg
RXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKFRocm93U2NvcGUmLCBFeGVjU3RhdGUqKTsKIAogCiBjbGFzcyBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQCBDb2RlQmxvY2sqIFNj
cmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIEpTT2JqZWN0KiYgZXhj
ZXB0aW9uKQogewogICAgIFZNKiB2bSA9IHNjb3BlLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgKnZtKTsKIAogICAgIEFTU0VSVCh2bS0+aGVhcC5pc0RlZmVycmVkKCkp
OwogICAgIEFTU0VSVChzdGFydENvbHVtbigpICE9IFVJTlRfTUFYKTsKQEAgLTMxOSw3ICszMjAs
NyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBm
aXJzdExpbmUoKSwgCiAgICAgICAgIGxhc3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVt
bigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewotICAgICAgICBleGNlcHRpb24g
PSB2bS0+dGhyb3dFeGNlcHRpb24oCisgICAgICAgIGV4Y2VwdGlvbiA9IHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oCiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKICAg
ICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxlLT5t
X3NvdXJjZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQyOSwyMCArNDMwLDIzIEBA
IGNvbnN0IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0KIAogRXZhbEV4ZWN1dGFi
bGUqIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFi
bGVzVW5kZXJURFopCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3Qt
PmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1l
c3NhZ2UoKSkpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgp
KSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIEV2YWxFeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVj
LT5oZWFwKCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0
VHlwZSk7Ci0gICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAg
ZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJs
b2NrKiB1bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2Nr
KGV4ZWMsIGV4ZWN1dGFibGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoIXVubGlua2Vk
RXZhbENvZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZEV2YWxDb2RlQmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENv
ZGUpOworICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhl
Y3V0YWJsZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTc2LDggKzc2LDExIEBAIENhbGxUeXBl
IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXQKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5j
dGlvbiBDb25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywg
Y29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwg
Y29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFs
T2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICByZXR1cm4gdGhy
b3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFs
T2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgIHJldHVybiBjb25zdHJ1
Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFy
Z3MsIGZ1bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApAQCAtODYsNiArODksOSBAQCBKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCiAgICAgY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBp
bXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CkBA
IC0xMTYsMTQgKzEyMiwxNCBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2
YWxFCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCAqZXhlYywgc291cmNlLCBleGNlcHRpb24s
IG92ZXJyaWRlTGluZU51bWJlcik7CiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NF
UlQoZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZXhlYywgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
bmV3VGFyZ2V0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJj
bGFzc1N0cnVjdHVyZSk7CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1
Y3RvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2
ICs4Myw4IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkp
KSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0
aGlzVmFsdWUpOwpAQCAtMTEyLDE5ICsxMTQsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblBybwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodGhp
c1ZhbHVlKTsKICAgICAgICAgaWYgKG9iamVjdC0+aW5saW5lVHlwZUZsYWdzKCkgJiBUeXBlT2ZT
aG91bGRDYWxsR2V0Q2FsbERhdGEpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgICAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxE
YXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgICAgICBp
ZiAob2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEp
ICE9IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNsYXNzSW5m
byA9IG9iamVjdC0+Y2xhc3NJbmZvKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgY2xh
c3NJbmZvLT5jbGFzc05hbWUsICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
fQogCiAvLyAxNS4zLjQuNSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAodGhpc0FyZyBbLCBhcmcx
IFssIGFyZzIsIC4uLl1dKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY0JpbmQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAg
IC8vIExldCBUYXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCkBAIC0xMzQsMTEgKzEzOCwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXQsIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAvLyBQcmltaXRpdmUgdmFsdWVzIGFyZSBub3QgY2Fs
bGFibGUuCiAgICAgQVNTRVJUKHRhcmdldC5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogdGFy
Z2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
CiAgICAgLy8gTGV0IEEgYmUgYSBuZXcgKHBvc3NpYmx5IGVtcHR5KSBpbnRlcm5hbCBsaXN0IG9m
IGFsbCBvZiB0aGUgYXJndW1lbnQgdmFsdWVzIHByb3ZpZGVkIGFmdGVyIHRoaXNBcmcgKGFyZzEs
IGFyZzIgZXRjKSwgaW4gb3JkZXIuCiAgICAgc2l6ZV90IG51bUJvdW5kQXJncyA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA+IDEgPyBleGVjLT5hcmd1bWVudENvdW50KCkgLSAxIDogMDsKQEAgLTE0
Niw3ICsxNDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAg
ICAgaWYgKG51bUJvdW5kQXJncykgewogICAgICAgICBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgbnVtQm91bmRB
cmdzKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVj
KSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJvdW5kQXJn
czsgKytpKQogICAgICAgICAgICAgYm91bmRBcmdzLT5pbml0aWFsaXplSW5kZXgodm0sIGksIGV4
ZWMtPmFyZ3VtZW50KGkgKyAxKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDctMjAwOSwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODcsMTEgKzg3LDE0IEBAIEpTVmFsdWUgY2FsbEdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwgRUNN
QU1vZGUgZWNtYU1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0
dGVyT2JqID0ganNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAo
Z2V0dGVyU2V0dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBpZiAoZWNtYU1vZGUg
PT0gU3RyaWN0TW9kZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDEsNyArMTA0LDcgQEAgYm9v
bCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZQogICAgIGFyZ3MuYXBwZW5kKHZh
bHVlKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
c2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwgYXJncyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAJKHJl
dmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NywxMSArMzY3LDE0IEBAIHZvaWQgSW50bENv
bGxhdG9yOjpjcmVhdGVDb2xsYXRvcihFeGVjU3QKIAogSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNv
bXBhcmVTdHJpbmdzKEV4ZWNTdGF0ZSYgc3RhdGUsIFN0cmluZ1ZpZXcgeCwgU3RyaW5nVmlldyB5
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CisKICAgICAvLyAxMC4zLjQgQ29tcGFyZVN0cmluZ3MgYWJzdHJhY3Qgb3Bl
cmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2NvbGxhdG9yKSB7CiAgICAgICAgIGNy
ZWF0ZUNvbGxhdG9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFtX2NvbGxhdG9yKQotICAgICAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkp
OwogICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtMzc5
LDcgKzM4Miw3IEBAIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhFeGUKICAg
ICBVQ2hhckl0ZXJhdG9yIGl0ZXJhdG9yWSA9IGNyZWF0ZUl0ZXJhdG9yKHkpOwogICAgIGF1dG8g
cmVzdWx0ID0gdWNvbF9zdHJjb2xsSXRlcihtX2NvbGxhdG9yLmdldCgpLCAmaXRlcmF0b3JYLCAm
aXRlcmF0b3JZLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAg
IHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRv
clByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMywxNiArMTAzLDE4IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyAxMC4zLjMgSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBjb2xsYXRvciBiZSB0aGlz
IENvbGxhdG9yIG9iamVjdC4KICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWlj
Q2FzdDxJbnRsQ29sbGF0b3IqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghY29sbGF0
b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xs
YXRvciIpKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9y
LT5ib3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1d
IGlzIHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kQ29tcGFyZSkgewotICAgICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNv
bGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVp
bHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBi
LiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCkBAIC0xMzEsMTAgKzEz
MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTAuMy41IElu
dGwuQ29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAg
ICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4o
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwu
Q29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIEFT
Q0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9y
IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0
aW9ucygqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIwLDYgKzQyMCw5IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0OjpzZXRG
b3JtYXRzRnJvbVAKIAogdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGlt
ZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcmlnaW5h
bE9wdGlvbnMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTIuMS4xIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gSWYgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFsaXplZEludGxPYmplY3RdXSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IGRhdGVUaW1l
Rm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4KQEAgLTQ0MCw3ICs0NDMs
NiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbG9jYWxlT3B0OwogCiAgICAgLy8gOC4gTGV0IG1hdGNoZXIgYmUg
R2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIsIMKrImxvb2t1cCIs
ICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAg
IFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihleGVjLCBvcHRpb25zLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBmaXQiIH0s
ICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwi
IiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZBYnJ1cHQobWF0Y2hlcikuCiAgICAg
aWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODcsNyArNDg5LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgICAgICAvLyBkLiBMZXQgdHogYmUgQ2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKHR6KS4KICAgICAgICAgdHogPSBjYW5vbmljYWxpemVUaW1l
Wm9uZU5hbWUob3JpZ2luYWxUeik7CiAgICAgICAgIGlmICh0ei5pc051bGwoKSkgewotICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKCZleGVjLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCB0aW1l
IHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRp
bWUgem9uZTogJXMiLCBvcmlnaW5hbFR6LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC02NDcsNyArNjQ5LDcgQEAgdm9pZCBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwogICAgIFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdlbmVyYXRv
ciA9IHVkYXRwZ19vcGVuKGRhdGFMb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBB
U0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNjYzLDcgKzY2NSw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFs
aXplRGF0ZVQKICAgICB9CiAgICAgdWRhdHBnX2Nsb3NlKGdlbmVyYXRvcik7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxp
dGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjc0LDcgKzY3Niw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0
ZVQKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBtX2RhdGVG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4o
dWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0
YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5s
ZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgo
KSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
VGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4Myw2ICs4ODUsOSBAQCBKU09iamVjdCogSW50
bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wCiAKIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0
Ojpmb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAg
Ly8gMTIuMy40IEZvcm1hdERhdGVUaW1lIGFic3RyYWN0IG9wZXJhdGlvbiAoRUNNQS00MDIgMi4w
KQogICAgIGlmICghbV9pbml0aWFsaXplZERhdGVUaW1lRm9ybWF0KSB7CiAgICAgICAgIGluaXRp
YWxpemVEYXRlVGltZUZvcm1hdChleGVjLCBqc1VuZGVmaW5lZCgpLCBqc1VuZGVmaW5lZCgpKTsK
QEAgLTg5MSw3ICs4OTYsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KEV4
ZWNTCiAKICAgICAvLyAxLiBJZiB4IGlzIG5vdCBhIGZpbml0ZSBOdW1iZXIsIHRoZW4gdGhyb3cg
YSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoImRhdGUg
dmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXQoKSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFs
KCJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiKSk7
CiAKICAgICAvLyBEZWxlZ2F0ZSByZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtOTAzLDcgKzkwOCw3IEBAIEpTVmFsdWUgSW50
bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1MKICAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRl
Rm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRy
LCAmc3RhdHVzKTsKICAgICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1h
dCBkYXRlIHZhbHVlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIikpOwog
CiAgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLCBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0
TGVuZ3RoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIw
NDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNyYWZ0ZXJAZ21haWwuY29t
KQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA4LDYgKzEwOSw5IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3JtYXQoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIC8vIDEyLjMuMyBJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgZHRmIGJl
IHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0LgogICAgIEludGxEYXRlVGltZUZvcm1hdCogZHRm
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkp
OwpAQCAtMTE1LDIzICsxMTksMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
RGF0ZVRpbQogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0
eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBpZiAoIWR0ZikKLSAg
ICAgICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBkdGYgPSBq
c0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICAvLyAyLiBSZXR1cm5JZkFicnVwdChkdGYpLgogICAg
IGlmICghZHRmKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1h
dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBE
YXRlVGltZUZvcm1hdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIAogICAgIEpTQm91bmRGdW5j
dGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJvdW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhl
IFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2Jq
ZWN0IGlzIHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kRm9ybWF0KSB7Ci0gICAgICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZHRmLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQt
aW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBU
aGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5n
dGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0
YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVND
SUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1l
LCBOb0ludHJpbnNpYyk7CiAgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwogICAg
ICAgICBpZiAoIWJvdW5kQXJncykKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSkpOwogCiAg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJncywgMSwgQVND
SUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0xNDYsMTYgKzE0OSwxOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTIuMy41IEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAgICAgSW50bERh
dGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5k
IHRvIHByb3ZpZGUgY29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBh
dHRlcm5zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTM2NzkKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICBkYXRlVGltZUZvcm1hdCA9
IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdl
dChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1
YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKKyAgICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBq
c0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0KQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1h
dCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBn
bWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vr
b2xzYWtAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU2LDYg
KzE1Nyw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckYKIHsKICAg
ICAvLyAxMS4xLjEgSW5pdGlhbGl6ZU51bWJlckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVz
LCBvcHRpb25zKSAoRUNNQS00MDIgMi4wKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICAvLyAxLiBJZiBudW1iZXJG
b3JtYXQgaGFzIGFuIFtbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gaW50ZXJuYWwgc2xvdCB3aXRo
IHZhbHVlIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICAvLyAyLiBTZXQg
bnVtYmVyRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4KQEAgLTE4Myw3
ICsxODUsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OwogCiAgICAgLy8gOC4gTGV0IG1hdGNoZXIgYmUg
R2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIsIMKrImxvb2t1cCIs
ICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3Ry
aW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMtPmxvY2Fs
ZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBi
ZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBT
dHJpbmcgbWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oc3RhdGUsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2Fs
ZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVz
dCBmaXQiKTsKICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4KICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyNyw3ICsyMjksNyBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAgaWYgKCFjdXJyZW5j
eS5pc051bGwoKSkgewogICAgICAgICAvLyBhLiBJZiB0aGUgcmVzdWx0IG9mIElzV2VsbEZvcm1l
ZEN1cnJlbmN5Q29kZShjKSwgaXMgZmFsc2UsIHRoZW4gdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwgIWN1cnJlbmN5Lmlz
QWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7Ci0gICAgICAgICAgICBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIEFT
Q0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSIp
KSk7CisgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
UmFuZ2VFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1m
b3JtZWQgY3VycmVuY3kgY29kZSIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yMzYsNyArMjM4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRgogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAg
ICAvLyAyMi4gSWYgcyBpcyAiY3VycmVuY3kiIGFuZCBjIGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBU
eXBlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAoY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBt
dXN0IGJlIGEgc3RyaW5nIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDIwLDExICs0MjIsMTQgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVOdW1iZXJGb3JtYQogCiBKU1ZhbHVlIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgbnVtYmVyKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICAvLyAxMS4zLjQgRm9ybWF0TnVtYmVyIGFic3RyYWN0IG9wZXJhdGlv
biAoRUNNQS00MDIgMi4wKQogICAgIGlmICghbV9udW1iZXJGb3JtYXQpIHsKICAgICAgICAgY3Jl
YXRlTnVtYmVyRm9ybWF0KHN0YXRlKTsKICAgICAgICAgaWYgKCFtX251bWJlckZvcm1hdCkKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIikp
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1i
ZXIuIikpKTsKICAgICB9CiAKICAgICAvLyBNYXAgbmVnYXRpdmUgemVybyB0byBwb3NpdGl2ZSB6
ZXJvLgpAQCAtNDQwLDcgKzQ0NSw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0
TnVtYmVyKEUKICAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0KCks
IG51bWJlciwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICB9
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3Bl
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIikpKTsKIAogICAgIHJldHVybiBqc1N0cmluZygm
c3RhdGUsIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTgsNiArOTgsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTEuMy4z
IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAv
LyAxLiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2JqZWN0LgogICAgIEludGxOdW1iZXJG
b3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNW
YWx1ZSgpKTsKQEAgLTEwNSwyMiArMTA4LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bE51bWJlckYKICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBh
dGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFu
ZikKLSAgICAgICAgbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBuZiA9
IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQo
c3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW5mKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVy
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2Jq
ZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAg
ICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgp
OwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYg
KCFib3VuZEZvcm1hdCkgewotICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJ
bnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0
ZSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IodGhyb3dTY29wZSwgc3RhdGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91
bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0
ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdl
dE9iamVjdCwgbmYsIGJvdW5kQXJncywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0x
MzUsMTYgKzEzNywxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJG
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkg
KEVDTUEtNDAyIDIuMCkKICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5
bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAg
Ly8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00
MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAg
ICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBudW1i
ZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1Zh
bHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vi
c3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJG
b3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3Rv
dHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsOSBAQCBib29sIGludGxCb29sZWFuT3B0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsCiAKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQs
IGNvbnN0IGNoYXIqIGZhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyA5LjIuOSBHZXRPcHRp
b24gKG9wdGlvbnMsIHByb3BlcnR5LCB0eXBlLCB2YWx1ZXMsIGZhbGxiYWNrKQogICAgIC8vIEZv
ciB0eXBlPSJzdHJpbmciLgogCkBAIC0xOTYsNyArMTk5LDcgQEAgU3RyaW5nIGludGxTdHJpbmdP
cHRpb24oRXhlY1N0YXRlJiBzdGF0ZQogICAgICAgICAvLyBkLiBJZiB2YWx1ZXMgaXMgbm90IHVu
ZGVmaW5lZCwgdGhlbgogICAgICAgICAvLyBpLiBJZiB2YWx1ZXMgZG9lcyBub3QgY29udGFpbiBh
biBlbGVtZW50IGVxdWFsIHRvIHZhbHVlLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgog
ICAgICAgICBpZiAodmFsdWVzLnNpemUoKSAmJiBzdGQ6OmZpbmQodmFsdWVzLmJlZ2luKCksIHZh
bHVlcy5lbmQoKSwgc3RyaW5nVmFsdWUpID09IHZhbHVlcy5lbmQoKSkgewotICAgICAgICAgICAg
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRl
LCBub3RGb3VuZCkpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBub3RGb3VuZCkpOwogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgfQogCkBAIC0yMTAsNiArMjEzLDkgQEAgU3RyaW5nIGludGxTdHJp
bmdPcHRpb24oRXhlY1N0YXRlJiBzdGF0ZQogCiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCB1
bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjaykKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgLy8gOS4yLjkgR2V0TnVtYmVyT3B0aW9uIChvcHRpb25zLCBwcm9wZXJ0
eSwgbWluaW11bSwgbWF4aW11bSwgZmFsbGJhY2spIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4g
TGV0IG9wdHMgYmUgVG9PYmplY3Qob3B0aW9ucykuCiAgICAgSlNPYmplY3QqIG9wdHMgPSBvcHRp
b25zLnRvT2JqZWN0KCZzdGF0ZSk7CkBAIC0yMzQsNyArMjQwLDcgQEAgdW5zaWduZWQgaW50bE51
bWJlck9wdGlvbihFeGVjU3RhdGUmIHN0YQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IC8vIDEuIElmIHZhbHVlIGlzIE5hTiBvciBsZXNzIHRoYW4gbWluaW11bSBvciBncmVhdGVyIHRo
YW4gbWF4aW11bSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKCEo
ZG91YmxlVmFsdWUgPj0gbWluaW11bSAmJiBkb3VibGVWYWx1ZSA8PSBtYXhpbXVtKSkgewotICAg
ICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJy
b3IoJnN0YXRlLCAqcHJvcGVydHkucHVibGljTmFtZSgpICsgIiBpcyBvdXQgb2YgcmFuZ2UiKSk7
CisgICAgICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFu
Z2VFcnJvcigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91dCBvZiByYW5n
ZSIpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTUyNSw2ICs1MzEs
OCBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiB7CiAgICAgLy8g
OS4yLjEgQ2Fub25pY2FsaXplTG9jYWxlTGlzdCAobG9jYWxlcykKICAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KTsKICAgICBWZWN0b3I8U3RyaW5nPiBzZWVuOwogCkBAIC01ODgsNyArNTk2LDcgQEAgVmVjdG9y
PFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChFeAogCiAgICAgICAgICAgICAvLyBpaWku
IElmIFR5cGUoa1ZhbHVlKSBpcyBub3QgU3RyaW5nIG9yIE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgogICAgICAgICAgICAgaWYgKCFrVmFsdWUuaXNTdHJpbmcoKSAmJiAha1Zh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgibG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Iikp
OworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBvYmplY3QiKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAgICAgICAgICAgICB9CiAK
QEAgLTYwMyw3ICs2MTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0
KEV4CiAgICAgICAgICAgICAvLyB2aWkuIExldCBjYW5vbmljYWxpemVkVGFnIGJlIENhbm9uaWNh
bGl6ZUxhbmd1YWdlVGFnKHRhZykuCiAgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsaXplZFRh
ZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZy0+dmFsdWUoJnN0YXRlKSk7CiAgICAgICAg
ICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwg
U3RyaW5nOjpmb3JtYXQoImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAlcyIsIHRhZy0+dmFsdWUoJnN0
YXRlKS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQo
ImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAlcyIsIHRhZy0+dmFsdWUoJnN0YXRlKS51dGY4KCkuZGF0
YSgpKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogICAgICAg
ICAgICAgfQogCkBAIC04NzEsNiArODc5LDkgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVz
b2x2ZUxvY2FsZShFeAogCiBzdGF0aWMgSlNBcnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICAvLyA5LjIuNiBMb29rdXBTdXBwb3J0ZWRMb2NhbGVzIChhdmFpbGFibGVMb2NhbGVzLCByZXF1
ZXN0ZWRMb2NhbGVzKQogCiAgICAgLy8gMS4gTGV0IHJMb2NhbGVzIGJlIENyZWF0ZUFycmF5RnJv
bUxpc3QocmVxdWVzdGVkTG9jYWxlcykuCkBAIC04ODAsMTEgKzg5MSwxMCBAQCBzdGF0aWMgSlNB
cnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhFCiAgICAgc2l6ZV90IGxlbiA9IHJlcXVlc3Rl
ZExvY2FsZXMuc2l6ZSgpOwogCiAgICAgLy8gMy4gTGV0IHN1YnNldCBiZSBhbiBlbXB0eSBMaXN0
LgotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBKU0FycmF5KiBzdWJz
ZXQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRl
Y2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUs
ICZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVy
YXRvck9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTQgKzM3LDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgaXRlcmF0b3IsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24g
PSBpdGVyYXRvci5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCisgICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRvci5nZXQoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+bmV4dCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgIENhbGxEYXRhIG5leHRGdW5jdGlvbkNh
bGxEYXRhOwogICAgIENhbGxUeXBlIG5leHRGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
bmV4dEZ1bmN0aW9uLCBuZXh0RnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKG5leHRGdW5jdGlv
bkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5leHRGdW5jdGlvbkFyZ3VtZW50czsKICAg
ICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTUzLDcgKzU3LDcgQEAgSlNWYWx1ZSBpdGVyYXRv
ck5leHQoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFu
IG9iamVjdC4iKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODksMTggKzkzLDIxIEBA
IEpTVmFsdWUgaXRlcmF0b3JTdGVwKEV4ZWNTdGF0ZSogZXhlYywgSlMKIAogdm9pZCBpdGVyYXRv
ckNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBudWxscHRyOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgewogICAgICAgICBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24oKTsKICAgICAg
ICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICB9Ci0gICAgSlNWYWx1ZSByZXR1cm5GdW5j
dGlvbiA9IGl0ZXJhdG9yLmdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPnJldHVy
bktleXdvcmQpOworICAgIEpTVmFsdWUgcmV0dXJuRnVuY3Rpb24gPSBpdGVyYXRvci5nZXQoZXhl
Yywgdm0ucHJvcGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmV0dXJuRnVuY3Rpb24uaXNV
bmRlZmluZWQoKSkgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICAgICAgdGhyb3dT
Y29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMDgsOSArMTE1LDkgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogICAgIENhbGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShyZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKHJl
dHVybkZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTE4LDcgKzEyNSw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBKU1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChleGVj
LCByZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVuY3Rpb25DYWxsVHlwZSwgcmV0dXJuRnVuY3Rpb25D
YWxsRGF0YSwgaXRlcmF0b3IsIHJldHVybkZ1bmN0aW9uQXJndW1lbnRzKTsKIAogICAgIGlmIChl
eGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNl
cHRpb24pOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNiw3ICsxMzMsNyBAQCB2b2lkIGl0
ZXJhdG9yQ2xvc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaW5uZXJSZXN1bHQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE0NywxNCArMTU0LDE4IEBAIFN0cnVjdHVy
ZSogY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHIKIAogSlNPYmplY3QqIGNyZWF0ZUl0ZXJh
dG9yUmVzdWx0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBkb25l
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHJlc3VsdE9iamVj
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+aXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgcmVzdWx0T2JqZWN0LT5w
dXREaXJlY3QoZXhlYy0+dm0oKSwgZG9uZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkp
OwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHZhbHVlUHJvcGVydHlP
ZmZzZXQsIHZhbHVlKTsKKyAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdCh2bSwgZG9uZVByb3Bl
cnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkpOworICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0
KHZtLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdE9iamVj
dDsKIH0KIAogSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
VmFsdWUgaXRlcmFibGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgCiAgICAgSlNWYWx1ZSBpdGVyYXRvckZ1
bmN0aW9uID0gaXRlcmFibGUuZ2V0KHN0YXRlLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLml0ZXJh
dG9yU3ltYm9sKTsKICAgICBpZiAoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZSgpOwpAQCAtMTYyLDcgKzE3Myw3IEBAIEpTVmFsdWUgaXRlcmF0b3JGb3JJdGVy
YWJsZShFeGVjU3RhdGUqIHMKICAgICBDYWxsRGF0YSBpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgaXRlcmF0b3JGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaXRl
cmF0b3JGdW5jdGlvbiwgaXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoaXRlcmF0
b3JGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTcyLDcgKzE4Myw3IEBA
IEpTVmFsdWUgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHMKICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKIAogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUs
IHN0YXRlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTIsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDksIDIwMTItMjAxMywgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTEzMSw2ICsxMzEsOSBA
QCB2b2lkIEpTQXJyYXk6OnNldExlbmd0aFdyaXRhYmxlKEV4ZWNTdGF0CiAvLyBEZWZpbmVkIGlu
IEVTNS4xIDE1LjQuNS4xCiBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0
KTsKIAogICAgIC8vIDMuIElmIFAgaXMgImxlbmd0aCIsIHRoZW4KQEAgLTE2Miw3ICsxNjUsNyBA
QCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAgIHVuc2ln
bmVkIG5ld0xlbiA9IGRlc2NyaXB0b3IudmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAg
Ly8gZC4gSWYgbmV3TGVuIGlzIG5vdCBlcXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0p
LCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRl
c2NyaXB0b3IudmFsdWUoKS50b051bWJlcihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgdGhyb3dTY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTI0Nyw2ICsyNTAsOSBAQCBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjCiAvLyBFQ01BIDE1LjQuNS4xCiBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0FycmF5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXkqPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShp
c1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQpAQCAtMjU1LDcgKzI2MSw3IEBA
IGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXQKICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgdW5zaWdu
ZWQgbmV3TGVuZ3RoID0gdmFsdWUudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmICh2YWx1ZS50
b051bWJlcihleGVjKSAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5ld0xlbmd0aCkpIHsKLSAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKKyAgICAgICAgICAg
IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+c2V0TGVuZ3Ro
KGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CkBAIC00NjgsNyArNDc0LDkg
QEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogYm9vbCBKU0FycmF5
OjphcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5k
ZXgsIEpTQzo6SlNBcnJheSogb3RoZXJBcnJheSkKIHsKICAgICBMT0dJVCgpOwotICAgIAorCisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIWNhbkZhc3RD
b3B5KHZtLCBvdGhlckFycmF5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00OTQsNyAr
NTAyLDcgQEAgYm9vbCBKU0FycmF5OjphcHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgbmV3TGVuZ3RoKSkg
ewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBBU1NFUlQoY29weVR5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwpAQCAtNTExLDYg
KzUxOSw5IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKIHsKICAg
ICBMT0dJVCgpOwogICAgIAorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1f
YnV0dGVyZmx5LmdldCgpOwogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNl
IEFycmF5Q2xhc3M6CkBAIC01MTksOSArNTMwLDkgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgo
RXhlY1N0YXRlKiBleGVjLAogICAgICAgICBpZiAobmV3TGVuZ3RoID49IE1JTl9TUEFSU0VfQVJS
QVlfSU5ERVgpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KAogICAgICAgICAgICAgICAgIGV4ZWMsIG5ld0xlbmd0aCwgdGhyb3dFeGNlcHRpb24sCi0gICAg
ICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAg
ICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgfQotICAgICAgICBjcmVhdGVJ
bml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAgIGNyZWF0ZUlu
aXRpYWxVbmRlY2lkZWQodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKQEAgLTUzNSwxMSArNTQ2LDExIEBA
IGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgICAg
ICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5ndGgsIGNvdW50RWxlbWVudHMoKSkp
KSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAg
ICAgICAgICAgICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAg
ICAgIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgZW5z
dXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5ld0xlbmd0aCA+
IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmICghZW5zdXJlTGVu
Z3RoKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgbmV3
TGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU0OCw3ICs1NTksNyBAQCBib29sIEpTQXJy
YXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aFRv
Q2xlYXIgPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpIC0gbmV3TGVuZ3RoOwogICAgICAgICB1
bnNpZ25lZCBjb3N0VG9BbGxvY2F0ZU5ld0J1dHRlcmZseSA9IDY0OyAvLyBhIGhldXJpc3RpYy4K
ICAgICAgICAgaWYgKGxlbmd0aFRvQ2xlYXIgPiBuZXdMZW5ndGggJiYgbGVuZ3RoVG9DbGVhciA+
IGNvc3RUb0FsbG9jYXRlTmV3QnV0dGVyZmx5KSB7Ci0gICAgICAgICAgICByZWFsbG9jYXRlQW5k
U2hyaW5rQnV0dGVyZmx5KGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAgICAgICByZWFs
bG9jYXRlQW5kU2hyaW5rQnV0dGVyZmx5KHZtLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtNTc3LDYgKzU4OCw5IEBAIEpTVmFsdWUgSlNBcnJh
eTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBMT0dJVCgpOwogICAgIAorICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIAogICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKQEAgLTYyOCw3ICs2NDIsNyBAQCBKU1ZhbHVlIEpT
QXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0
b3JhZ2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAgICAgaWYg
KCFpc0xlbmd0aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgIH0KIApAQCAtNjYwLDcgKzY3NCw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUg
W1tEZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0
cnVlLgogICAgIGlmICghZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAgICAgLy8gQ2FsbCB0aGUgW1tQdXRdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIGFyZ3VtZW50cyAibGVuZ3RoIiwgaW5keCwgYW5kIHRy
dWUuCkBAIC02NzYsMjMgKzY5MCwyNiBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhCiB7CiAgICAgTE9HSVQoKTsKICAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0ZUluaXRp
YWxVbmRlY2lkZWQoZXhlYy0+dm0oKSwgMCk7CisgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lk
ZWQodm0sIDApOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgQXJyYXlXaXRoVW5kZWNpZGVkOiB7Ci0gICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1
ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZSh2
bSwgdmFsdWUpOwogICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjogewogICAgICAgICBpZiAo
IXZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUoZXhl
Yy0+dm0oKSwgdmFsdWUpOworICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUodm0sIHZh
bHVlKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC03MDYsOSArNzIzLDkgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3Ro
ID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgp
KS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAg
ICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAg
ICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcyMCwxNSArNzM3LDE1IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA8
PSBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgaWYgKGxlbmd0aCA8IGJ1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91
cygpW2xlbmd0aF0uc2V0KGV4ZWMtPnZtKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIGJ1
dHRlcmZseS0+Y29udGlndW91cygpW2xlbmd0aF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5ndGggKyAxKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03MzgsMTMgKzc1NSwxMyBAQCB2b2lkIEpTQXJy
YXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlX
aXRoRG91YmxlOiB7CiAgICAgICAgIGlmICghdmFsdWUuaXNOdW1iZXIoKSkgewotICAgICAgICAg
ICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKKyAgICAgICAgICAgIGNv
bnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAgICAgICAgICAgcHVzaChleGVjLCB2YWx1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZG91YmxlIHZhbHVl
QXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOwogICAgICAgICBpZiAodmFsdWVBc0RvdWJsZSAh
PSB2YWx1ZUFzRG91YmxlKSB7Ci0gICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250aWd1b3Vz
KGV4ZWMtPnZtKCkpOworICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyh2bSk7
CiAgICAgICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtNzU4LDkgKzc3NSw5IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC03ODUsNyArODAyLDcgQEAgdm9pZCBKU0FycmF5
OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNo
IHdpdGhpbiB2ZWN0b3IsIGFsd2F5cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVj
dG9yLgogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKICAgICAg
ICAgaWYgKGxlbmd0aCA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBz
dG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUp
OwogICAgICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAg
ICAgKytzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzkzLDEwICs4MTAsMTAgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYQogCiAgICAgICAgIC8vIFB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5ndGgg
KDJeMzEtMSkgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgog
ICAgICAgICBpZiAoc3RvcmFnZS0+bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0
b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2
bSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVl
KTsKICAgICAgICAgICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBz
dGVwIDMuZC4KICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAg
ICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDUyLDcgKzEwNjksMTAgQEAgYm9vbCBKU0FycmF5
OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVAogYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5z
aWduZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBMT0dJVCgpOwotICAg
IAorCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwog
CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwpAQCAtMTA3MSwxMyAr
MTA5MSwxMyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAgICAg
ICAgIHN0b3JhZ2UgPSBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICBzdG9y
YWdlLT5tX2luZGV4QmlhcyAtPSBjb3VudDsKICAgICAgICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVu
Z3RoKHZlY3Rvckxlbmd0aCArIGNvdW50KTsKLSAgICAgICAgc2V0QnV0dGVyZmx5V2l0aG91dENo
YW5naW5nU3RydWN0dXJlKGV4ZWMtPnZtKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIHNldEJ1
dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICB9
IGVsc2UgaWYgKCFtb3ZlRnJvbnQgJiYgdmVjdG9yTGVuZ3RoIC0gbGVuZ3RoID49IGNvdW50KQog
ICAgICAgICBzdG9yYWdlID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOwot
ICAgIGVsc2UgaWYgKHVuc2hpZnRDb3VudFNsb3dDYXNlKGV4ZWMtPnZtKCksIG1vdmVGcm9udCwg
Y291bnQpKQorICAgIGVsc2UgaWYgKHVuc2hpZnRDb3VudFNsb3dDYXNlKHZtLCBtb3ZlRnJvbnQs
IGNvdW50KSkKICAgICAgICAgc3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwogICAgIGVsc2Ugewot
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC0xMDk3LDYgKzExMTcsOSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgp
OwogICAgIAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKQEAgLTExMTIsMTAgKzExMzUs
MTAgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICAv
LyBXZSBtYXkgaGF2ZSB0byB3YWxrIHRoZSBlbnRpcmUgYXJyYXkgdG8gZG8gdGhlIHVuc2hpZnQu
IFdlJ3JlIHdpbGxpbmcgdG8gZG8gc28KICAgICAgICAgLy8gb25seSBpZiBpdCdzIG5vdCBob3Jy
aWJseSBzbG93LgogICAgICAgICBpZiAob2xkTGVuZ3RoIC0gc3RhcnRJbmRleCA+PSBNSU5fU1BB
UlNFX0FSUkFZX0lOREVYKQotICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJh
eVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZShleGVj
LT52bSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAg
ICAgIAotICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBvbGRMZW5ndGggKyBj
b3VudCkpIHsKLSAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIG9sZExlbmd0aCArIGNvdW50KSkgeworICAgICAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwpAQCAtMTEyNSw3ICsxMTQ4LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+
IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBidXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJ
bmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRl
eCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwogICAgICAgICB9CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFydEluZGV4OykgewpAQCAtMTE0
OCwxMCArMTE3MSwxMCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGlu
CiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBhcnJheSB0byBkbyB0
aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAgICAgICAvLyBvbmx5IGlmIGl0
J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4
ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAgICAgICAgICByZXR1cm4gdW5zaGlmdENv
dW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlT
dG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uo
dm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG9s
ZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgb2xkTGVuZ3RoICsgY291bnQpKSB7
CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0g
bV9idXR0ZXJmbHkuZ2V0KCk7CkBAIC0xMTYxLDcgKzExODQsNyBAQCBib29sIEpTQXJyYXk6OnVu
c2hpZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExl
bmd0aDsgaS0tID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gYnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodiAh
PSB2KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShl
eGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5k
ZXg7KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDkgQEAgU3RydWN0dXJlKiBKU0FycmF5QnVmZmVy
Q29uc3RydWN0b3I6OmNyZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPQogICAgICAgICBqc0Nhc3Q8SlNB
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIApAQCAtOTQsMTkg
Kzk3LDIxIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICAK
ICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLCAxKTsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGFy
cmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNBcnJh
eUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFycmF5
QnVmZmVyU3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIFdU
Rk1vdmUoYnVmZmVyKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZm
ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dD
b25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiQXJyYXlC
dWZmZXIiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
IkFycmF5QnVmZmVyIikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
MDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3Rv
RnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAgICAgCiAgICAg
SlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2Ygc2xpY2Ug
bXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIHNsaWNlIG11
c3QgYmUgYW4gYXJyYXkgYnVmZmVyLiIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJTbGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlNs
aWNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSk7CiAgICAgCiAgICAgaW50MzJf
dCBiZWdpbiA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtNjAsMTEgKzYzLDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmEKICAgICAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0J1
ZmZlciA9IHRoaXNPYmplY3QtPmltcGwoKS0+c2xpY2UoYmVnaW4sIGVuZCk7CiAgICAgaWYgKCFu
ZXdCdWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKTsK
ICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOwog
ICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVGhyb3dTY29wZUlubGluZXMuaCIKICNpbmNsdWRlICJXZWFrR0NNYXBJbmxpbmVz
LmgiCiAKICNlbmRpZiAvLyBKU0NJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBt
a0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
Ny0yMDA4LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC03OCw2ICs3OCw4IEBAIGRvdWJsZSBKU1ZhbHVlOjp0b051bWJl
clNsb3dDYXNlKEV4ZWNTdGEKIAogSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xvd0Nhc2Uo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CiAgICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKICAgICBpZiAoaXNJbnQzMigpIHx8IGlz
RG91YmxlKCkpCkBAIC04Niw4ICs4OCw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNs
b3dDYXNlKEV4ZWMKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEJvb2xlYW5Gcm9tSW1tZWRpYXRl
Qm9vbGVhbihleGVjLCBnbG9iYWxPYmplY3QsIGFzVmFsdWUoKSk7CiAKICAgICBBU1NFUlQoaXNV
bmRlZmluZWRPck51bGwoKSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICB2bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7Cisg
ICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9y
KGV4ZWMsICp0aGlzKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEwOCw2ICsxMDks
OSBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpc1Nsb3dDYXNlKEV4ZWNTdGF0CiAKIEpTT2JqZWN0
KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChpc1N0cmluZygpKQog
ICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJv
dG90eXBlKCk7CkBAIC0xMjEsOCArMTI1LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNp
emVQcm90b3R5cGUoRQogICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5ib29sZWFuUHJvdG90eXBlKCk7CiAKICAgICBBU1NFUlQoaXNVbmRlZmluZWRPck51bGwoKSk7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgdGhyb3dTY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEzMCw2ICsxMzMsNyBAQCBKU09iamVjdCogSlNW
YWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAoT3B0aW9uYWw8
dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1
cm4gcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90
LmlzU3RyaWN0TW9kZSgpKTsKQEAgLTE0NCw3ICsxNDgsNyBAQCBib29sIEpTVmFsdWU6OnB1dFRv
UHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmotPmdldFBy
b3RvdHlwZURpcmVjdCgpOwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewog
ICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU2LDcgKzE2
MCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAg
aWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRl
cyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC0x
ODAsMTIgKzE4NCwxNSBAQCBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSog
CiAgICAgfQogICAgIAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9u
bHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU1Zh
bHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoKnRoaXMsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIHB1dFRv
UHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFs
dWUsIHNsb3QpOwpAQCAtMjAxLDcgKzIwOCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRp
dmVCeUluZGV4KEV4ZWMKICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAo
c2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0zMjYsMTMgKzMzMywxNSBAQCBib29sIEpTVmFsdWU6OmlzVmFs
aWRDYWxsZWUoKQogCiBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdPbkVycm9yKSBjb25zdAogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBhdXRvIGVycm9yVmFsdWUgPSBbJl0gKCkgLT4gSlNTdHJpbmcqIHsKICAgICAgICAg
aWYgKHJldHVybkVtcHR5U3RyaW5nT25FcnJvcikKICAgICAgICAgICAgIHJldHVybiBqc0VtcHR5
U3RyaW5nKGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9OwogICAgIAotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQVNTRVJUKCFpc1N0cmluZygpKTsKICAgICBpZiAo
aXNJbnQzMigpKSB7CiAgICAgICAgIGF1dG8gaW50ZWdlciA9IGFzSW50MzIoKTsKQEAgLTM1MSw3
ICszNjAsNyBAQCBKU1N0cmluZyogSlNWYWx1ZTo6dG9TdHJpbmdTbG93Q2FzZShFeGVjCiAgICAg
aWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZp
bmVkU3RyaW5nKCk7CiAgICAgaWYgKGlzU3ltYm9sKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmlu
ZyIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0
dXJuIGVycm9yVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA0ODcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIw
MTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02MzMsOCArNjMzLDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFs
dWU6OnRvUHJpbWl0aXZlKEV4ZWMKIAogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9Q
cmVmZXJyZWRQcmltaXRpdmVUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJpbWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5n
LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRl
cmFsKCJQcmltaXRpdmUgaGludCBpcyBub3QgYSBzdHJpbmcuIikpOwogICAgICAgICByZXR1cm4g
Tm9QcmVmZXJlbmNlOwogICAgIH0KIApAQCAtNjQ5LDcgKzY1Miw3IEBAIGlubGluZSBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlIHRvUHJlZmVycmUKICAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5n
LCAic3RyaW5nIikpCiAgICAgICAgIHJldHVybiBQcmVmZXJTdHJpbmc7CiAKLSAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1h
dGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1iZXInLCAnc3RyaW5nJy4iKSk7CisgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBwcmltaXRp
dmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIikp
OwogICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiB9CiAKQEAgLTEwMzEsOSArMTAzNCwxMiBAQCBp
bmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpCiAKIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5v
dEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDE2ICs0NywxOCBA
QCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVy
LAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAg
IGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0
IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBv
ZiByYW5nZSBvZiBidWZmZXIiKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9m
ZnNldCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNl
dCBpcyBub3QgYWxpZ25lZCIpKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5dGUgb2Zmc2V0IGlz
IG5vdCBhbGlnbmVkIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAogICAg
ICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0
aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VSVChjb250ZXh0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDEyICsxMjIsMTUgQEAg
U3RydWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRh
Vmlldyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERh
dGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2Yg
RGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyIpKTsKICAgICAKICAgICBpZiAoIWV4
ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZz
ZXQpIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNl
dCkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE0Myw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgpOwog
ICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVMZW5n
dGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CiAK
ICAgICBjb25zdCB1bnNpZ25lZCBkYXRhU2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpU
eXBlKTsKICAgICB1bmlvbiB7CkBAIC0xNjcsMTIgKzE3MCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBn
ZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNE
YXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVz
dCBiZSBhIERhdGFWaWV3IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBt
dXN0IGJlIGEgRGF0YVZpZXciKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSki
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFu
ZCB2YWx1ZSkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTE5OCw3ICsyMDQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nl
c3MiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIp
KSk7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGFW
aWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yMjAsMjcgKzIyNiwzNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmll
dyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4
cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHZpZXctPmpzQnVmZmVyKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBl
eHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1
ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHlu
YW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5
cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJEYXRhVmlldy5w
cm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmJ5dGVPZmZzZXQo
KSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rpb25B
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0
ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpKSk7CiB9CiAKIGNvbnN0
IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNGdW5jdGlvbikgfTsKQEAgLTMyMSw2ICszMjMs
OSBAQCBzdGF0aWMgSlNWYWx1ZSByZXRyaWV2ZUNhbGxlckZ1bmN0aW9uKEV4CiAKIEVuY29kZWRK
U1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICBKU1Zh
bHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oZXhlYywgdGhpc09iaik7CkBAIC0z
MzUsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKAog
ICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZXIpOwog
ICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVuY3Rpb24t
PmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYWxsZXIpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBz
dHJpY3QgY2FsbGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQg
dG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlciIpKSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNDI0LDE0ICs0Mjks
MTYgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TgogYm9vbCBKU0Z1
bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2VsbCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNP
YmplY3QpKSkKLSAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChvcmRpbmFyeVNldFNsb3co
ZXhlYywgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdC50aGlzVmFsdWUoKSwg
c2xvdC5pc1N0cmljdE1vZGUoKSkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzSG9zdE9yQnVp
bHRpbkZ1bmN0aW9uKCkpIHsKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlCb3VuZE5hbWVJZk5l
ZWRlZCh2bSwgZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUuZm9yd2FyZChCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCkpOwogICAgIH0KIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSB7CkBAIC00NDMsMjEgKzQ1MCwyMSBAQCBib29s
IEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgICAgICB0aGlzT2Jq
ZWN0LT5tX3JhcmVEYXRhLT5jbGVhcigiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEg
ZnVuY3Rpb24iKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNp
bmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fcmFyZURhdGEuCiAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBkb250Q2FjaGUodGhpc09iamVjdCk7Ci0gICAgICAgIHJldHVybiBCYXNlOjpwdXQodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKSk7CiAgICAgfQogICAgIGlmICh0aGlzT2JqZWN0
LT5qc0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5TmFtZSA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGxlcikpIHsKICAgICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgdGhlIHByb3BlcnR5
IHRvIGJlIHJlaWZpZWQsIGlmIHRoaXMgaXMgbm90IGFscmVhZHkgdGhlIGNhc2UhCiAgICAgICAg
IGJvb2wgb2theSA9IHRoaXNPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2theSwgb2theSk7Ci0gICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAg
ICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpKTsKICAgICB9CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlcikgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHRoaXNPYmplY3QtPnJlaWZ5TGF6eVByb3BlcnR5SWZOZWVk
ZWQodm0sIGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIEJhc2U6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICByZXR1cm4gdGhyb3dT
Y29wZS5mb3J3YXJkKEJhc2U6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCkBAIC00
ODMsNiArNDkwLDggQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIAog
Ym9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVz
Y3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
ICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKHZtLCBleGVjLCBwcm9wZXJ0eU5h
bWUpOwpAQCAtNTIzLDI3ICs1MzIsMjcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iagogICAgICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50
KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNl
cHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFi
bGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFibGUgYXR0
cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
dGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVy
YWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQ
cmVzZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4
Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxl
IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBpZiAoIXZhbHVlQ2hlY2spIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0
aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdfaAogCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
clZpZXcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlSW5saW5lcy5oIgogI2luY2x1ZGUgIlRvTmF0
aXZlRnJvbVZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTY4LDEyICsxNjksMTUgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgc2V0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpLCBKU1ZhbHVlIGpzVmFsdWUpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgICAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgICAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4o
ZXhlYywganNWYWx1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoaXNOZXV0ZXJlZCgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjA0ODcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25z
dHJ1Y3RvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODAsOCArODAsMTEgQEAgU3RydWN0
dXJlKiBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cgogdGVtcGxhdGU8dHlwZW5hbWUgVmll
d0NsYXNzPgogaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdG
cm9tSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1
ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wu
SXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90IHJldHVybiBhbiBvYmplY3Qu
IikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVND
SUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90
IHJldHVybiBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgc3RvcmFn
ZTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTE4LDggKzEyMSwxMCBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
CiBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1
bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFs
dWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbGVu
Z3RoT3B0KQogewotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShmaXJz
dEFyZ3VtZW50KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGZpcnN0QXJndW1lbnQpOwogCiAgICAgaWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVy
ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4oZmlyc3RWYWx1ZSkpIHsKICAgICAgICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwpAQCAtMTI5LDcg
KzEzNCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAg
ICAgICAgIGxlbmd0aCA9IGxlbmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGlmICgoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgVmlld0NsYXNzOjpl
bGVtZW50U2l6ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMs
ICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlw
bGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkFycmF5QnVmZmVyIGxlbmd0aCBtaW51cyB0aGUg
Ynl0ZU9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgZWxlbWVudCBzaXplIik7CiAgICAg
ICAgICAgICBsZW5ndGggPSAoYnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpIC8gVmlld0Ns
YXNzOjplbGVtZW50U2l6ZTsKIAogICAgICAgICB9CkBAIC0xMzksNyArMTQ0LDcgQEAgaW5saW5l
IEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgIEFTU0VSVCghb2Zmc2V0ICYm
ICFsZW5ndGhPcHQpOwogICAgIAogICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdl
VHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1l
bnQuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50
LiIpKTsKICAgICAKICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdlIGFsbG93
IGNvbnN0cnVjdGlvbiB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXkuIFRoaXMg
Y3JlYXRlcyBhIGNvcHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc5LDcgQEAg
aW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShpdGVyYXRvckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9s
Lkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVu
dCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKIAogICAgICAgICAgICAgICAgICAgICBBcmdMaXN0IGFy
Z3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGwoZXhl
YywgaXRlcmF0b3JGdW5jLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgYXJndW1lbnRzKTsK
QEAgLTIwNiwxNSArMjExLDE1IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXIKICAgICBpZiAoZmlyc3RWYWx1ZS5pc0ludDMyKCkpCiAgICAgICAgIGxlbmd0aCA9IGZp
cnN0VmFsdWUuYXNJbnQzMigpOwogICAgIGVsc2UgaWYgKCFmaXJzdFZhbHVlLmlzTnVtYmVyKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFs
aWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBh
cmd1bWVudCIpKTsKICAgICBlbHNlIHsKICAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50
PihmaXJzdFZhbHVlLmFzTnVtYmVyKCkpOwogICAgICAgICBpZiAobGVuZ3RoICE9IGZpcnN0VmFs
dWUuYXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IChmcmFjdGlvbmFsIGxl
bmd0aHMgbm90IGFsbG93ZWQpIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJn
dW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7CiAgICAgfQogCiAgICAg
aWYgKGxlbmd0aCA8IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgIlJl
cXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpOwog
ICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxlbmd0aCk7CiB9
CiAKQEAgLTIyNCw2ICsyMjksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEdlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0gYXNJbnRlcm5h
bEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKICAgICBTdHJ1Y3R1cmUqIHBhcmVudFN0cnVjdHVy
ZSA9IGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+dHlwZWRBcnJheVN0cnVjdHVyZShWaWV3Q2xh
c3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwgcGFyZW50U3RydWN0dXJlKTsKQEAgLTIzNCw3ICsyNDIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlCiAKICAgICBpZiAoIWFyZ0NvdW50KSB7CiAg
ICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZp
ZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkRhdGFWaWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4i
KSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkRhdGFWaWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudC4iKSk7CiAKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xh
c3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIDApKTsKICAgICB9CkBAIC0yNjgsNyArMjc2LDkg
QEAgQ29uc3RydWN0VHlwZSBKU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbgogdGVtcGxhdGU8dHlw
ZW5hbWUgVmlld0NsYXNzPgogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGV4ZWMsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBWaWV3Q2xhc3M6OmluZm8oKS0+Y2xh
c3NOYW1lKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0
KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1
Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAo
IWNvbnRleHQpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0K
LSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KGV4
ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0o
KSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcodm0sIGNv
bnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTY0LDE3ICs2NiwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIENvbnN0
cnVjdGlvbkNvbnRleHQgY29udGV4dCgKLSAgICAgICAgZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBs
ZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwKKyAgICAgICAgdm0sIHN0cnVj
dHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCiAgICAgICAgIENv
bnN0cnVjdGlvbkNvbnRleHQ6OkRvbnRJbml0aWFsaXplKTsKICAgICBpZiAoIWNvbnRleHQpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KGV4ZWMtPnZt
KCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KGV4ZWMtPnZtKCksIGNv
bnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAg
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5o
ZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOworICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTgzLDIyICs4NywyNCBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
CiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0g
cGFzc2VkQnVmZmVyOwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aChi
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGggb3V0IG9m
IHJhbmdlIG9mIGJ1ZmZlciIpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZl
ciIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZm
ZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7Ci0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSk7CisgICAgICAgIHRocm93U2NvcGUu
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQg
aXMgbm90IGFsaWduZWQiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBD
b25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZt
LCBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PihleGVjLT52
bSgpLmhlYXApKQotICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyhleGVjLT52bSgpLCBj
b250ZXh0KTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgICAg
ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0u
aGVhcCkpCisgICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKKyAg
ICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0xMjgsMTAgKzEzNCwxMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSgKICAgICBFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAg
ICAgaWYgKGNhbkFjY2Vzc1JhbmdlUXVpY2tseShvZmZzZXQsIGxlbmd0aCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgY29uc2lzdGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0
aCBhcmUgb3V0IG9mIGJvdW5kcyIpKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGNvbnNpc3Rpbmcgb2Ygb2Zmc2V0IGFu
ZCBsZW5ndGggYXJlIG91dCBvZiBib3VuZHMiKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC0yOTAsOCArMjk4LDEwIEBAIEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGEKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBFbmNvZGVkSlNWYWx1ZSBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dGhyb3dOZXV0ZXJlZFR5cGVkQXJyYXlUeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBvYmplY3QsIFByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOwogICAgIEFTU0VSVF9VTlVTRUQob2JqZWN0LCBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqPihKU1ZhbHVlOjpkZWNvZGUob2JqZWN0KSktPmlzTmV1dGVyZWQoKSk7Ci0gICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRh
Y2hlZEVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29w
ZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3
KiBzcGVjaWVzQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4ZW1wbGFyLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgY29uc3QgRnVuY3RvciYgZGVmYXVsdENvbnN0cnVj
dG9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gZXhlbXBsYXItPmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01NCw3ICs1Nyw3
IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnUKICAgICBpZiAoY29u
c3RydWN0b3IuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRDb25zdHJ1Y3Rv
cigpOwogICAgIGlmICghY29uc3RydWN0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBu
b3QgYmUgbnVsbCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzMsMTEgKzc2LDExIEBAIGlu
bGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnUKICAgICAgICAgaWYgKCF2aWV3
LT5pc05ldXRlcmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdmlldzsKIAotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic3Bl
Y2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKKyAg
ICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoInNwZWNpZXMg
Y29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk4LDExICsxMDEsMTQgQEAgaW5saW5lIHVuc2lnbmVkIGFy
Z3VtZW50Q2xhbXBlZEluZGV4RnJvbQogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNT
ZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyAyMi4yLjMuMjIKICAgICBW
aWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsK
IAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDIpIHsKQEAgLTExMCwyNyArMTE2LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKG9m
ZnNldE51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhl
YywgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVJhbmdlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIk9mZnNldCBzaG91bGQgbm90IGJl
IG5lZ2F0aXZlIik7CiAgICAgICAgIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om1pbihvZmZzZXROdW1iZXIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSkpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwog
CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXNvdXJjZUFycmF5KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHNob3Vs
ZCBiZSBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIG9i
amVjdCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICBpZiAoaXNUeXBlZFZpZXcoc291
cmNlQXJyYXktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7CiAgICAgICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiBzb3VyY2VWaWV3ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3
Kj4oc291cmNlQXJyYXkpOwogICAgICAgICBpZiAoc291cmNlVmlldy0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKIAogICAgICAgICBsZW5ndGggPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZl
clZpZXcqPihzb3VyY2VBcnJheSktPmxlbmd0aCgpOwogICAgIH0gZWxzZQotICAgICAgICBsZW5n
dGggPSBzb3VyY2VBcnJheS0+Z2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgbGVuZ3RoID0gc291cmNlQXJyYXktPmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4ZWMpOwogCiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTQyLDExICsxNDgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5
V2l0aGluKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyAyMi4yLjMuNQogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKKyAg
ICAvLyAyMi4yLjMuNQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xh
c3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwogCiAgICAgbG9uZyBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsK
ICAgICBsb25nIHRvID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAw
LCBsZW5ndGgpOwpAQCAtMTY1LDcgKzE3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2VuZXJpY1R5cGUKICAgICBsb25nIGNvdW50ID0gc3RkOjptaW4obGVuZ3RoIC0gc3RkOjpt
YXgodG8sIGZyb20pLCBmaW5hbCAtIGZyb20pOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUoYXJyYXkg
KyB0bywgYXJyYXkgKyBmcm9tLCBjb3VudCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXplKTsKQEAg
LTE3Nyw5ICsxODUsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRl
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVj
dCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTE5Myw3ICsyMDMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9y
TWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9
IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgYXV0byB0YXJnZXRPcHRpb24gPSBWaWV3
Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbih2YWx1ZVRvRmlu
ZCk7CkBAIC0yMjEsMTQgKzIzMSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIC8vIDIyLjIuMy4xMwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKKyAgICAvLyAyMi4yLjMu
MTMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+
dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdl
KTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAK
ICAgICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMjM4LDcg
KzI1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0
ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRh
Y2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBl
KiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgYXV0byB0YXJnZXRPcHRp
b24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRDb2VyY2lvbih2
YWx1ZVRvRmluZCk7CkBAIC0yNTgsOSArMjcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGUKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9
IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmpl
Y3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
dHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gMjIuMi4zLjE0CiAgICAgYXV0
byBqb2luV2l0aFNlcGFyYXRvciA9IFsmXSAoU3RyaW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29k
ZWRKU1ZhbHVlIHsKQEAgLTI4OSwyMSArMzA0LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Nj
b3BlLCBleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
ICAgICByZXR1cm4gam9pbldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yU3RyaW5nLT52aWV3KGV4ZWMp
LmdldCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhP
ZihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMjIuMi4zLjE2CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKworICAgIC8v
IDIyLjIuMy4xNgogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVh
c3Qgb25lIGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVu
dCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBA
IC0zMjYsNyArMzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKICAgICBpZiAo
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBhdXRvIHRhcmdldE9w
dGlvbiA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9u
KHZhbHVlVG9GaW5kKTsKICAgICBpZiAoIXRhcmdldE9wdGlvbikKQEAgLTM4MywxMCArNDAwLDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpZXdDbGFzcz4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIC8vIDIyLjIuMy4yMQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxW
aWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHN0ZDo6cmV2ZXJzZShh
cnJheSwgYXJyYXkgKyB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7CkBAIC0zOTcsMTAgKzQxNywxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIC8vIDIyLjIuMy4yNQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3
Q2xhc3MqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdGhpc09iamVjdC0+c29ydCgpOwogCkBAIC00MTAsMTMg
KzQzMywxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICAvLyAyMi4yLjMuMjYKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCisgICAgLy8gMjIuMi4zLjI2CiAgICAgSlNGdW5jdGlv
biogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBW
aWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAg
IHVuc2lnbmVkIHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtNDI4LDcg
KzQ1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0
ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRh
Y2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBDbGFtcCBlbmQgdG8gYmVnaW4uCiAgICAgZW5k
ID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7CkBAIC00NDgsNyArNDczLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogCiAgICAgQVNTRVJUKCFyZXN1bHQtPmlzTmV1
dGVyZWQoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwog
CiAgICAgLy8gV2UgcmV0dXJuIGVhcmx5IGhlcmUgc2luY2Ugd2UgZG9uJ3QgYWxsb2NhdGUgYSBi
YWNraW5nIHN0b3JlIGlmIGxlbmd0aCBpcyAwIGFuZCBtZW1tb3ZlIGRvZXMgbm90IGxpa2UgbnVs
bHB0cnMKICAgICBpZiAoIWxlbmd0aCkKQEAgLTQ5NCwxMyArNTE5LDE1IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gMjIuMi4z
LjIzCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKworICAgIC8vIDIyLjIuMy4yMwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgVmlld0NsYXNzKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBHZXQgdGhl
IGxlbmd0aCBoZXJlOyBsYXRlciBhc3NlcnQgdGhhdCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFuZ2Uu
CiAgICAgdW5zaWduZWQgdGhpc0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwpAQCAtNTUy
LDcgKzU3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAg
ICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHJlc3VsdCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAotICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3
Iik7CisgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgInNwZWNpZXMgY29uc3Ry
dWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwMiwxOSArMTIwMiwyMiBAQCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sq
IEpTR2xvYmFsT2JqZWN0CiAKIFVubGlua2VkRXZhbENvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6
OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclRE
WikKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAg
RGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERl
YnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlID0gZXhlY3V0YWJsZS0+ZXhlY3V0YWJsZUluZm8oKS5ldmFsQ29udGV4dFR5cGUoKTsKICAg
ICAKLSAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5j
b2RlQ2FjaGUoKS0+Z2V0RXZhbENvZGVCbG9jaygKLSAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwg
ZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0
cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVz
VW5kZXJURFopOworICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSB2bS5jb2RlQ2FjaGUoKS0+Z2V0RXZhbENvZGVCbG9jaygKKyAgICAgICAgdm0sIGV4ZWN1dGFi
bGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlh
Ymxlc1VuZGVyVERaKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dl
cigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JP
YmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9y
KHRocm93U2NvcGUsIGNhbGxGcmFtZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRh
YmxlLT5zb3VyY2UoKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEy
MjMsMTYgKzEyMjYsMTkgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6
YwogCiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVh
dGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUGFyc2VyRXJyb3Ig
ZXJyb3I7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVi
dWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9mZjsKLSAgICBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKLSAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0
YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2Vy
TW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygK
KyAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIGVycm9yKTsKIAogICAgIGlmICho
YXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dlcigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1l
LCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLCBlcnJvci5saW5lKCksIGVycm9yLm1l
c3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291
cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgZXJy
b3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9u
IDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDA5LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNh
KQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAgKgpAQCAtNzYsMTEgKzc2
LDE0IEBAIHN0YXRpYyBCaXRtYXA8MjU2PiBtYWtlQ2hhcmFjdGVyQml0bWFwKGMKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgSlNWYWx1ZSBlbmNvZGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RFc2NhcGUsIGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gMTgu
Mi42LjEuMSBSdW50aW1lIFNlbWFudGljczogRW5jb2RlICggc3RyaW5nLCB1bmVzY2FwZWRTZXQg
KQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVuY29kZQogCi0g
ICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFtleGVjXSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOworICAg
IGF1dG8gdGhyb3dFeGNlcHRpb24gPSBbJnRocm93U2NvcGUsIGV4ZWNdIHsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwgVVRGLTE2IHNlcXVlbmNl
LiIpKSk7CiAgICAgfTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKQEAgLTE2Myw2ICsx
NjYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBBTFdBWVNfSU5MSU5FCiBzdGF0
aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDaGFyVHlwZSogY2hhcmFj
dGVycywgaW50IGxlbmd0aCwgY29uc3QgQml0bWFwPDI1Nj4mIGRvTm90VW5lc2NhcGUsIGJvb2wg
c3RyaWN0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBp
bnQgayA9IDA7CiAgICAgVUNoYXIgdSA9IDA7CkBAIC0yMDMsNyArMjA5LDcgQEAgc3RhdGljIEpT
VmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgYwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGNoYXJMZW4gPT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVycm9yIikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVUkkgZXJyb3IiKSkpOwogICAgICAgICAgICAg
ICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3QiIG1vZGUgaXMg
dGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9yIHRoYXQsIGl0
J3MgZ29vZCB0byBzdXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29tcGF0aWJpbGl0
eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0aCAtIDYgJiYgcFsx
XSA9PSAndScKQEAgLTY0MCwxMyArNjQ2LDE2IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VGbG9hdChT
dHJpbmdWaWV3IHMpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY0V2
YWwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHggPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh4KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
dmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkp
OworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJv
cihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBAIC04
NDUsMTIgKzg1NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNV
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
fQogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBl
RXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAn
Y2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gc3RyaWN0IG1vZGUuIik7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiJ2FyZ3VtZW50cycs
ICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2Rl
LiIpOwogfQogCiBjbGFzcyBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIHsKQEAgLTg4Nyw4
ICs5MDAsMTEgQEAgcHJpdmF0ZToKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9i
YWxGdW5jUHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlz
VmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxs
IHRvIG9iamVjdCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCisgICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0
byBvYmplY3QiKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkp
OwogCkBAIC05NDQsOCArOTYwLDExIEBAIGJvb2wgY2hlY2tQcm90b1NldHRlckFjY2Vzc0FsbG93
ZWQoRXhlY1MKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9T
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIp
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCisgICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxs
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKSk7
CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAKQEAgLTk2Miw3ICs5
ODEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7CiAgICAgdGhpc09iamVjdC0+
c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDExICsxMTAsMTQgQEAgdm9pZCBK
U01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleAogCiBib29sIEpTTW9kdWxlRW52aXJv
bm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBKU01vZHVsZUVudmlyb25tZW50KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9k
dWxlRW52aXJvbm1lbnQqPihjZWxsKTsKICAgICAvLyBBbGwgaW1wb3J0ZWQgYmluZGluZ3MgYXJl
IGltbXV0YWJsZS4KICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
dGhpc09iamVjdC0+bW9kdWxlUmVjb3JkKCktPnJlc29sdmVJbXBvcnQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKICAgICBpZiAocmVzb2x1dGlv
bi50eXBlID09IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZCkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Niw2ICs5Niw5IEBAIHZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGQKIAog
Ym9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZ2V0b3ducHJvcGVydHktcAogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKQEAgLTEy
NSw3ICsxMjgsNyBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAg
ICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9k
dWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCB0cmFtcG9s
aW5lU2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSB0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwg
ZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKKyAgICAgICAgYm9v
bCBmb3VuZCA9IHRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3Bl
cnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRy
YW1wb2xpbmVTbG90KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogCiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9w
ZXJ0eU5hbWUpOwpAQCAtMTMzLDcgKzEzNiw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmdldE93blByb3AKIAogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGgg
VERaIHZhbHVlLCB0aHJvdyBhIHJlZmVyZW5jZSBlcnJvci4KICAgICAgICAgaWYgKCF2YWx1ZSkg
ewotICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCBleGVjLCBjcmVhdGVURFpFcnJv
cihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMTU4
LDE2ICsxNjEsMjIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAog
CiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZl
cgogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTE4OSwxNyArMTk4LDIzIEBAIHZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3AKIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJv
cGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJv
cGVydHlEZXNjcmlwdG9yJiwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCiAgICAg
aWYgKHNob3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBl
eHRlbnNpYmxlLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhh
dCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihleGVj
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhIG1vZHVsZSBu
YW1lc3BhY2Ugb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYSBtb2R1bGUgbmFt
ZXNwYWNlIG9iamVjdCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnBy
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCksIG9iamVjdCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZp
c2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OCw2ICs2NzgsOSBAQCBzdGF0aWMgdm9pZCBn
ZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSogCiAKIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBK
U01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQogICAgIGlmIChtX21vZHVsZU5hbWVzcGFjZU9i
amVjdCkKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwpAQCAt
NjkxLDExICs2OTQsMTEgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3Jk
OgogICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0g
cmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIG5hbWUuZ2V0KCkp
KTsKICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhl
YywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcobmFtZS5nZXQo
KSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGlu
ZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmll
cy4iKSk7CisgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1h
a2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29s
dmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CkBAIC03MDcs
MjkgKzcxMCwzMyBAQCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+
dm0oKSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRo
aXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQo
dm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlz
LCB1bmFtYmlndW91c05hbWVzKSk7CiAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmdldCgpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNvZGUoKSk7CiAgICAg
aWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYyk7CisgICAg
ICAgIHRocm93U3ludGF4RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgZXhlY3V0YWJsZSk7CisgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQodm0sIHRo
aXMsIGV4ZWN1dGFibGUpOwogICAgIGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKGV4ZWMsIGV4ZWN1
dGFibGUpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9u
cyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlv
bgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUoKTsKLSAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7Ci0KLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50
ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFs
dWUoKSwgdGhpcyk7CiAKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCiAgICAgLy8g
c2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDkuCkBAIC03NDIsMTUgKzc0OSwxNSBAQCB2b2lkIEpT
TW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9u
IHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUp
OwogICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50
YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFt
ZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZv
dW5kLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJp
bmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0
byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAgIHRocm93
U3ludGF4RXJyb3IodGhyb3dTY29wZSwgZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBv
cnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwo
KSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRp
bmdzLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVz
b2x1dGlvbjo6VHlwZTo6RXJyb3I6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVs
dCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAg
ICAgICAgICAgIHRocm93U3ludGF4RXJyb3IodGhyb3dTY29wZSwgZXhlYywgbWFrZVN0cmluZygi
SW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNv
bHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CkBAIC03NzYs
MTUgKzc4MywxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0CiAg
ICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2
ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAgICAgICAgIHN3aXRj
aCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6
Ok5vdEZvdW5kOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0
cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9y
dE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5k
aW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlz
IG5vdCBmb3VuZC4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBj
YXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKLSAgICAgICAgICAgICAgICB0aHJvd1N5
bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0
cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZl
ZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKHRocm93U2NvcGUsIGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGlu
ZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSks
ICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdz
LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1
dGlvbjo6VHlwZTo6RXJyb3I6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUg
cmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dTeW50YXhFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmlu
ZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50
cmllcy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OlJlc29sdmVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcs
NiArMjk3LDggQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChKU1ZhbHVlIAogU3Ry
aW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRW
YWx1ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBKU09iamVjdCogaG9s
ZGVyLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICAvLyBDYWxsIHRoZSB0b0pTT04gZnVuY3Rpb24uCiAgICAgdmFsdWUg
PSB0b0pTT04odmFsdWUsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpA
QCAtMzY4LDcgKzM3MCw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZp
ZXIKICAgICAvLyBIYW5kbGUgY3ljbGUgZGV0ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24g
dGhlIHN0YWNrLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNp
emUoKTsgaSsrKSB7CiAgICAgICAgIGlmIChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9i
amVjdCkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVy
YWwoIkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikp
OwogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxlZDsKICAgICAgICAgfQogICAgIH0K
QEAgLTU4OSwxMCArNTkxLDEzIEBAIGVudW0gV2Fsa2VyU3RhdGUgeyBTdGF0ZVVua25vd24sIEFy
cmF5U3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFN0YXJ0U3RhdGUs
IE9iamVjdFN0YXJ0VmlzaXRNZW1iZXIsIE9iamVjdEVuZFZpc2l0TWVtYmVyIH07CiBORVZFUl9J
TkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogeworICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTYsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBwcm9wZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwgMTYsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiBpbmRleFN0YWNrOwotICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmpl
Y3RTdGFjayhtX2V4ZWMtPnZtKCkpOwotICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5
U3RhY2sobV9leGVjLT52bSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTT2JqZWN0LCAxNj4gb2JqZWN0
U3RhY2sodm0pOworICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5U3RhY2sodm0pOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBhcnJheUxlbmd0
aFN0YWNrOwogICAgIAogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTYsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBzdGF0ZVN0YWNrOwpAQCAtNjA3LDcgKzYxMiw3IEBAIE5FVkVSX0lOTElORSBKU1Zh
bHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5p
c09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KGFzT2JqZWN0KGlu
VmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKSk7
CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6
ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMpOwogCiAgICAg
ICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOwogICAgICAgICAg
ICAgICAgIGFycmF5U3RhY2sucHVzaChhcnJheSk7CkBAIC02NjMsNyArNjY4LDcgQEAgTkVWRVJf
SU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VS
VChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5
KGFzT2JqZWN0KGluVmFsdWUpKSAmJiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKEpTQXJy
YXk6OmluZm8oKSkpOwogICAgICAgICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBh
cnJheVN0YWNrLnNpemUoKSA+IG1heGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgbV9l
eGVjKTsKIAogICAgICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChpblZh
bHVlKTsKICAgICAgICAgICAgICAgICBvYmplY3RTdGFjay5wdXNoKG9iamVjdCk7CkBAIC03MzYs
MzEgKzc0MSwzNCBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1CiAg
ICAgfQogICAgIEpTT2JqZWN0KiBmaW5hbEhvbGRlciA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KG1f
ZXhlYyk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmluYWxIb2xkZXIpOwotICAgIGZpbmFs
SG9sZGVyLT5tZXRob2RUYWJsZSgpLT5wdXQoZmluYWxIb2xkZXIsIG1fZXhlYywgbV9leGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRpZmllciwgb3V0VmFsdWUsIHNsb3QpOworICAg
IGZpbmFsSG9sZGVyLT5tZXRob2RUYWJsZSgpLT5wdXQoZmluYWxIb2xkZXIsIG1fZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7CiAgICAgcmV0
dXJuIGNhbGxSZXZpdmVyKGZpbmFsSG9sZGVyLCBqc0VtcHR5U3RyaW5nKG1fZXhlYyksIG91dFZh
bHVlKTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMgogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2UgcmVx
dWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJK
U09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIiKSkpOwogICAgIEpTU3Ry
aW5nOjpTYWZlVmlldyBzb3VyY2UgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmlu
ZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogCiAgICAgSlNWYWx1ZSB1bmZp
bHRlcmVkOwotICAgIExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+dm0oKSk7CisgICAgTG9jYWxTY29w
ZSBzY29wZSh2bSk7CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICBMaXRlcmFs
UGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzb3Vy
Y2UubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNl
ci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29u
UGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIu
Z2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBMaXRlcmFsUGFyc2Vy
PFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzMTYoKSwgc291cmNlLmxl
bmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAgICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5
TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIGlmICghdW5maWx0ZXJlZCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNl
ci5nZXRFcnJvck1lc3NhZ2UoKSkpOyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJz
ZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpCkBAIC03NzEsMTggKzc3OSwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTT05Qcm90b0Z1CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9u
ZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFdhbGtlcihleGVjLCBMb2NhbDxKU09iamVjdD4oZXhlYy0+dm0o
KSwgYXNPYmplY3QoZnVuY3Rpb24pKSwgY2FsbFR5cGUsIGNhbGxEYXRhKS53YWxrKHVuZmlsdGVy
ZWQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFdhbGtlcihleGVjLCBMb2NhbDxKU09i
amVjdD4odm0sIGFzT2JqZWN0KGZ1bmN0aW9uKSksIGNhbGxUeXBlLCBjYWxsRGF0YSkud2Fsayh1
bmZpbHRlcmVkKSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1IDE1LjEyLjMKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8g
aW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkp
OwotICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKLSAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBleGVj
LT5hcmd1bWVudCgxKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwgZXhl
Yy0+YXJndW1lbnQoMikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gaW5wdXQgdG8gc3RyaW5n
aWZ5IikpKTsKKyAgICBMb2NhbFNjb3BlIHNjb3BlKHZtKTsKKyAgICBMb2NhbDxVbmtub3duPiB2
YWx1ZSh2bSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIExvY2FsPFVua25vd24+
IHJlcGxhY2VyKHZtLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgTG9jYWw8VW5rbm93bj4gc3Bh
Y2Uodm0sIGV4ZWMtPmFyZ3VtZW50KDIpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lm
aWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIwMTIt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9y
ZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgpAQCAtMTI4Niw2ICsxMjg2LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0
UHJvdG90eXBlRGlyZWN0KFZNJiB2bQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJv
b2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMs
IE5vdFN0cmljdE1vZGUpID09IHRoaXMpOwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURp
cmVjdCgpID09IHByb3RvdHlwZSkKQEAgLTEyOTcsNyArMTI5OCw3IEBAIGJvb2wgSlNPYmplY3Q6
OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKIAogICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAg
ICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0x
MzA2LDcgKzEzMDcsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7
CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRoaXMpIHsKICAgICAgICAgICAgIGlmIChz
aG91bGRUaHJvd0lmQ2FudFNldCkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMg
X19wcm90b19fIHZhbHVlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFi
bGUodm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCkBAIC0xNTQ4LDYg
KzE1NDksOSBAQCBlbnVtIGNsYXNzIFR5cGVIaW50TW9kZSB7IFRha2VzSGludCwgRG9lCiB0ZW1w
bGF0ZTxUeXBlSGludE1vZGUgbW9kZSA9IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50Pgog
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7
CkBAIC0xNTYzLDEzICsxNTY3LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWkKICAgICAgICAgSlNTdHJpbmcqIGhpbnRTdHJpbmcgPSBudWxscHRyOwogICAgICAg
ICBzd2l0Y2ggKGhpbnQpIHsKICAgICAgICAgY2FzZSBOb1ByZWZlcmVuY2U6Ci0gICAgICAgICAg
ICBoaW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOwor
ICAgICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5kZWZhdWx0U3RyaW5nKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQcmVmZXJOdW1iZXI6Ci0gICAgICAg
ICAgICBoaW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCk7
CisgICAgICAgICAgICBoaW50U3RyaW5nID0gdm0uc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJlZmVyU3RyaW5nOgotICAgICAg
ICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygp
OworICAgICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmco
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhbGxBcmdzLmFwcGVu
ZChoaW50U3RyaW5nKTsKQEAgLTE1ODAsMzcgKzE1ODQsNDAgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBjYWxsVG9QcmltaQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQg
PyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC50
b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBtb2RlID09
IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1ZSgpIDogdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wudG9QcmltaXRpdmUgcmV0
dXJuZWQgYW4gb2JqZWN0IikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEVDTUEgNy4x
LjEKIEpTVmFsdWUgSlNPYmplY3Q6Om9yZGluYXJ5VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVj
LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyIGRlZmF1bHQgdmFsdWUgbWV0aG9kcyB0aGVyZSBhcmUg
b24gb2JqZWN0J3MgcHJvdG90eXBlIGNoYWluIGFyZQogICAgIC8vIGJlaW5nIHdhdGNoZWQuCi0g
ICAgdGhpcy0+c3RydWN0dXJlKCktPnN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3BlcnRpZXNJZk5l
Y2Vzc2FyeUZvckVudGlyZUNoYWluKGV4ZWMtPnZtKCkpOworICAgIHRoaXMtPnN0cnVjdHVyZSgp
LT5zdGFydFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnlGb3JFbnRpcmVDaGFp
bih2bSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlOwogICAgIGlmIChoaW50ID09IFByZWZlclN0cmlu
ZykgewogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKGV4ZWMsIHRoaXMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgaGludCk7Ci0gICAgICAgIGlmICh2YWx1
ZSkKKyAgICAgICAgaWYgKHRocm93U2NvcGUuY2hlY2sodmFsdWUpKQogICAgICAgICAgICAgcmV0
dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKGV4ZWMs
IHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsKLSAgICAgICAgaWYg
KHZhbHVlKQorICAgICAgICBpZiAodGhyb3dTY29wZS5jaGVjayh2YWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9Qcmlt
aXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwg
aGludCk7Ci0gICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgaWYgKHRocm93U2NvcGUuY2hlY2so
dmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxU
b1ByaW1pdGl2ZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZywgaGludCk7Ci0gICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgaWYgKHRocm93U2NvcGUu
Y2hlY2sodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KIAogICAgIEFT
U0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJObyBkZWZhdWx0IHZh
bHVlIikpOwogfQogCiBKU1ZhbHVlIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQp
CkBAIC0xNjU5LDEyICsxNjY2LDE0IEBAIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBKU09iamVjdDo6
ZmluZFByb3AKIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSBoYXNJbnN0YW5jZVZhbHVlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgCiAK
ICAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0
YW5jZVZhbHVlICE9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGhhc0luc3RhbmNl
VmFsdWUsIGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KSB7Ci0gICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRo
aXMpKTsKKyAgICAgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
SW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvcmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
bihleGVjLCB0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtMTY3OSw3ICsxNjg4LDcgQEAgYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRl
KiBleAogICAgICAgICByZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBnZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkpOwogICAgIGlmIChpbmZvLmlt
cGxlbWVudHNIYXNJbnN0YW5jZSgpKQogICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5j
dXN0b21IYXNJbnN0YW5jZSh0aGlzLCBleGVjLCB2YWx1ZSk7Ci0gICAgdm0udGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0aW9u
KGV4ZWMsIHRoaXMpKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihleGVjLCB0aGlzKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjkyLDE1ICsxNzAxLDE3IEBAIGJvb2wgSlNP
YmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBKU09iamVjdDo6ZGVmYXVs
dEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBwcm90
bykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnN0YW5jZW9mIGNhbGxlZCBvbiBhbiBvYmpl
Y3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxs
ZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2
bSwgZXhlYyk7CkBAIC0yMTcwLDYgKzIxODEsOSBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIGJv
b2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5k
ZXhpbmdTaGFwZSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogCkBA
IC0yMTc5LDggKzIxOTMsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuCiAgICAgLy8gb3IgZXF1YWwgdG8gdGhlIHZlY3RvciBsZW5ndGguCiAgICAgQVNTRVJUKGkg
Pj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAogICAgICAg
ICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdoRm9yVmVj
dG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAgICAgICAg
IHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwgYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKQEAgLTIxOTQsNyArMjIwNiw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICB9CiAKICAgICBpZiAoIWVuc3VyZUxl
bmd0aCh2bSwgaSArIDEpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgp
OwpAQCAtMjIzMiw2ICsyMjQ0LDcgQEAgdGVtcGxhdGUgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZAogYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBi
b29sIHNob3VsZFRocm93LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAg
IC8vIGkgc2hvdWxkIGJlIGEgdmFsaWQgYXJyYXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRo
ZSBjdXJyZW50IHZlY3Rvci4KICAgICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAt
MjI1OSw3ICsyMjcyLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAt
IGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCi0gICAgICAgIG1hcCA9IGFs
bG9jYXRlU3BhcnNlSW5kZXhNYXAoZXhlYy0+dm0oKSk7CisgICAgICAgIG1hcCA9IGFsbG9jYXRl
U3BhcnNlSW5kZXhNYXAodm0pOwogICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0
aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApAQCAtMjI2OSw3ICsyMjgyLDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAvLyBQ
cm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAg
ICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwpAQCAtMjI3OSw3ICsyMjkyLDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIFdlIGFy
ZSBjdXJyZW50bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8g
YmUgZG9pbmcgc28uCiAgICAgLy8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1h
cCBpZiBTcGFyc2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3Ig
aWYgYWxsb2NhdGlvbiBmYWlscy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNw
YXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0lu
QXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAg
IGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgs
IG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aCh2bSwgbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VWZWN0b3JM
ZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjkxMSw2ICsyOTI0LDkgQEAg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjUwogYm9vbCB2YWxpZGF0ZUFu
ZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgYm9vbCBpc0V4dGVuc2libGUsCiAgICAgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzQ3VycmVudERlZmluZWQs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgY3VycmVudCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgLy8gSWYgd2UgaGF2ZSBhIG5ldyBwcm9wZXJ0eSB3ZSBjYW4ganVz
dCBwdXQgaXQgb24gbm9ybWFsbHkKICAgICAvLyBTdGVwIDIuCiAgICAgaWYgKCFpc0N1cnJlbnRE
ZWZpbmVkKSB7CkBAIC0yOTE4LDcgKzI5MzQsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIC8vIFN0ZXAgMi5hCiAgICAgICAgIGlmICghaXNFeHRl
bnNpYmxlKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5z
aWJsZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFvYmplY3QpCkBAIC0yOTQxLDEyICsyOTU3LDEyIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBs
eVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUg
b2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBj
dXJyZW50LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQot
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1
dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjk1NSw3ICsyOTcxLDcgQEAgYm9vbCB2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlwdG9y
IGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9wZXJ0
eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAgICBp
ZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmIG9iamVjdCkgewotICAg
ICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHko
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJy
ZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yOTY2
LDE0ICsyOTgyLDE0IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigK
ICAgICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgIT0gY3VycmVudC5pc0RhdGFE
ZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nl
c3NNZWNoYW5pc21FcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBy
ZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJl
bnQpOwogICAgIH0KIApAQCAtMjk4MywxMyArMjk5OSwxMyBAQCBib29sIHZhbGlkYXRlQW5kQXBw
bHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUo
KSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53
cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRp
bmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRl
IG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUo
KSkgewogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1
ZShleGVjLCBjdXJyZW50LnZhbHVlKCksIGRlc2NyaXB0b3IudmFsdWUoKSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2
YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGlu
ZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CkBAIC0yOTk4LDcgKzMwMTQsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2Ny
aXB0b3IoCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKCFvYmplY3QpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmpl
Y3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJp
ZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMzAwOCwxNyArMzAy
NCwxNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgaWYg
KCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSAmJiAhKGN1cnJlbnQuc2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIGN1cnJlbnQuc2V0dGVyKCksIGRlc2NyaXB0b3Iuc2V0dGVyKCkpKSkgewog
ICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIHNldHRl
ciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRv
ci5nZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigp
KSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRo
ZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1w
dGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1
cnJlbnQuYXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3IpIHsKICAgICAgICAgICAgIGlmICh0
aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9y
KSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzAy
NiwzMyArMzA0MiwzMyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3Io
CiAgICAgLy8gU3RlcCAxMC8xMS4KICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgSlNWYWx1ZSBhY2Nlc3NvciA9IG9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSk7CisgICAgSlNWYWx1ZSBhY2Nlc3NvciA9IG9iamVjdC0+Z2V0RGlyZWN0
KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghYWNjZXNzb3IpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlcjsKICAgICBib29sIGdldHRlclNl
dHRlckNoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAoYWNjZXNzb3IuaXNDdXN0b21HZXR0ZXJTZXR0
ZXIoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVj
LT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICBnZXR0ZXJTZXR0
ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKICAgICAgICAgYXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0ganNDYXN0PEN1c3RvbUdldHRl
clNldHRlcio+KGFjY2Vzc29yKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlci0+c2V0
dGVyKCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcihleGVjLT52bSgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
Rm9yR2V0dGVyU2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBK
U0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpUeXBlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAg
IGdldHRlclNldHRlci0+c2V0U2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9yR2V0dGVyU2V0dGVyKGV4ZWMsIHByb3Bl
cnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9u
OjpUeXBlOjpTZXR0ZXIpKTsKICAgICAgICAgaWYgKGN1c3RvbUdldHRlclNldHRlci0+Z2V0dGVy
KCkpCi0gICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT52bSgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdldEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9y
R2V0dGVyU2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU0N1
c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpUeXBlOjpHZXR0ZXIpKTsKKyAgICAgICAgICAgIGdl
dHRlclNldHRlci0+c2V0R2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGdl
dEN1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uRm9yR2V0dGVyU2V0dGVyKGV4ZWMsIHByb3BlcnR5
TmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uOjpU
eXBlOjpHZXR0ZXIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoYWNjZXNzb3IuaXNH
ZXR0ZXJTZXR0ZXIoKSk7CiAgICAgICAgIGdldHRlclNldHRlciA9IGFzR2V0dGVyU2V0dGVyKGFj
Y2Vzc29yKTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpKSB7Ci0g
ICAgICAgIGdldHRlclNldHRlciA9IGdldHRlclNldHRlci0+d2l0aFNldHRlcihleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3Iuc2V0dGVyT2JqZWN0KCkp
OworICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhTZXR0ZXIodm0sIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7CiAg
ICAgICAgIGdldHRlclNldHRlckNoYW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoZGVzY3Jp
cHRvci5nZXR0ZXJQcmVzZW50KCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0
dGVyLT53aXRoR2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
ZGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CisgICAgICAgIGdldHRlclNldHRlciA9IGdldHRl
clNldHRlci0+d2l0aEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNj
cmlwdG9yLmdldHRlck9iamVjdCgpKTsKICAgICAgICAgZ2V0dGVyU2V0dGVyQ2hhbmdlZCA9IHRy
dWU7CiAgICAgfQogICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAm
JiAhZ2V0dGVyU2V0dGVyQ2hhbmdlZCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNj
cmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KTsKICAgICBvYmplY3Qt
PnB1dERpcmVjdEFjY2Vzc29yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRy
cyB8IEFjY2Vzc29yKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMyMDAsNiArMzIxNiw5IEBAIHZv
aWQgSlNPYmplY3Q6OmdldEdlbmVyaWNQcm9wZXJ0eU5hbWVzKEoKIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvaW5kZXguaHRtbCNzZWMtZ2V0bWV0aG9k
CiBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBDYWxsRGF0YSYg
Y2FsbERhdGEsIENhbGxUeXBlJiBjYWxsVHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIG1ldGhv
ZCA9IGdldChleGVjLCBpZGVudCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMyMDgsMTMgKzMyMjcsMTMgQEAgSlNWYWx1
ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZQogICAgICAgICBpZiAobWV0aG9kLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgY2FsbFR5cGUgPSBtZXRob2QuYXND
ZWxsKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1ldGhvZC5hc0NlbGwoKSwgY2FsbERh
dGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAKICNpbmNsdWRl
ICJQdXREaXJlY3RJbmRleE1vZGUuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKICNp
bmNsdWRlICJSdW50aW1lVHlwZS5oIgotCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVk
ZSAiVGhyb3dTY29wZUlubGluZXMuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiU3BhcnNlQXJyYXlWYWx1ZU1hcC5oIgpAQCAtNjUsMTAgKzY1LDEx
IEBAIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXk7CiBjbGFzcyBTdHJ1Y3R1cmU7CitjbGFzcyBUaHJvd1Njb3BlOwog
c3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBIYXNoVGFibGVWYWx1ZTsKIAotSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYp
OworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKFRocm93U2NvcGUm
LCBFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIGV4dGVybiBKU19FWFBPUlREQVRBIGNvbnN0
IGNoYXIqIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcjsKIGV4dGVybiBKU19F
WFBPUlREQVRBIGNvbnN0IGNoYXIqIFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NN
ZWNoYW5pc21FcnJvcjsKIApAQCAtMTY1NSw2ICsxNjU2LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IEFkZEZ1bmN0aW9uPiAvLyBBZGQgZgogdm9pZCBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJyYXlMaWtlVmFsdWUsIFJ1bnRpbWVUeXBlTWFzayBsZWdh
bFR5cGVzRmlsdGVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgQWRkRnVuY3Rpb24gYWRk
RnVuY3Rpb24pCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7CiAgICAg
SlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVjLCBleGVjLT52
bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpAQCAt
MTY3MSw3ICsxNjc0LDcgQEAgdm9pZCBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShFeGVjU3RhdGUq
IAogCiAgICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBydW50aW1lVHlwZUZvclZhbHVlKG5leHQp
OwogICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
MTAgKzU2LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUYKIC8v
IEVDTUEgOC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQo
dmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1
ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
IAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkp
KQogICAgICAgICByZXR1cm4gb3JkaW5hcnlTZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1ZhbHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpA
QCAtNzAsMTAgKzcyLDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6cHV0SW5saW5l
KEoKICAgICAgICAgcmV0dXJuIHB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgudmFs
dWUoKSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3Qt
PmNhblBlcmZvcm1GYXN0UHV0SW5saW5lKGV4ZWMsIHZtLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAg
ICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJ
bnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkpOworICAgICAgICBBU1NF
UlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0
U3RvcmVUbyh2bSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QpKSB7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC05NCwxMiArOTQsMTMgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6YWRk
T3duSW50ZXJuYQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CiAgICAgaWYg
KG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAKICAgICBTdHJ1Y3R1cmUqIHByb21pc2VTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9u
OjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFs
T2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTExMiw3ICsxMTMsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm9taXNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb21pc2Ui
KSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIlByb21p
c2UiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNQcm9taXNlQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5
LDkgKzEzOSwxMiBAQCBib29sIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om5leHQoRXhlY1N0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvcGVydHlOYW1lSXRlcmF0b3JGdW5jTmV4
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2Fs
bCBQcm9wZXJ0eU5hbWVJdGVyYXRvci5uZXh0KCkgb24gYSBub24tUHJvcGVydHlOYW1lSXRlcmF0
b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFByb3BlcnR5
TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBvYmplY3Qi
KSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0KGV4ZWMs
IHJlc3VsdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zODAsMTEg
KzM4MCwxNCBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVCiAKIHZv
aWQgSlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIGNsZWFyRmliZXJzKCk7CiAgICAgQVNTRVJUKGlzUm9wZSgpKTsKICAgICBB
U1NFUlQobV92YWx1ZS5pc051bGwoKSk7CiAgICAgaWYgKGV4ZWMpCi0gICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93
U2NvcGUsIGV4ZWMpOwogfQogCiBKU1ZhbHVlIEpTU3RyaW5nOjp0b1ByaW1pdGl2ZShFeGVjU3Rh
dGUqLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDIwNDg3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03MSwxNyArNzEsMTkgQEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBidWlsZChF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
ICAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICAgICAgaWYgKCFtX29r
YXkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsK
ICAgICAgICAgaWYgKG1faXM4Qml0KSB7CiAgICAgICAgICAgICBidWZmZXI4LnNocmlua1RvRml0
KCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgICAgIHJl
dHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0KGJ1ZmZlcjgpKTsKICAgICAgICAgfQog
ICAgICAgICBidWZmZXIxNi5zaHJpbmtUb0ZpdCgpOwogICAgICAgICBpZiAoIWJ1ZmZlcjE2LmRh
dGEoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikp
OwogICAgIH0KIApAQCAtMTI3LDkgKzEyOSwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250
cml2aWFsU3RyaW5nKEV4CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4u
LiBTdHJpbmdUeXBlcz4KIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcsIGNvbnN0IFN0cmluZ1R5cGVz
Ji4uLiBzdHJpbmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IFdURjo6dHJ5TWFr
ZVN0cmluZyhzdHJpbmcsIHN0cmluZ3MuLi4pOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcoZXhlYywgV1RGTW92ZShyZXN1bHQpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAkocmV2aXNpb24gMjA0
ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODEsNiArODEsOSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBq
b2luU3RyaW5ncyhjb25zdCBWCiAKIGlubGluZSB1bnNpZ25lZCBKU1N0cmluZ0pvaW5lcjo6am9p
bmVkTGVuZ3RoKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIHVuc2ln
bmVkIG51bWJlck9mU3RyaW5ncyA9IG1fc3RyaW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1iZXJP
ZlN0cmluZ3MpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTEsNyArOTQsNyBAQCBpbmxpbmUgdW5z
aWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAg
ICAgaWYgKHRvdGFsTGVuZ3RoLnNhZmVHZXQocmVzdWx0KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92
ZXJmbG93KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OSw2ICsxMDIsOSBAQCBpbmxp
bmUgdW5zaWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKIEpTVmFsdWUgSlNTdHJpbmdK
b2luZXI6OmpvaW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQVNTRVJUKG1f
c3RyaW5ncy5zaXplKCkgPD0gbV9zdHJpbmdzLmNhcGFjaXR5KCkpOwogCiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gam9pbmVkTGVuZ3RoKHN0YXRlKTsKQEAgLTExNSw3ICsxMjEsNyBAQCBKU1ZhbHVl
IEpTU3RyaW5nSm9pbmVyOjpqb2luKEV4ZWNTdGF0ZSYgCiAgICAgICAgIHJlc3VsdCA9IGpvaW5T
dHJpbmdzPFVDaGFyPihtX3N0cmluZ3MsIG1fc2VwYXJhdG9yLCBsZW5ndGgpOwogCiAgICAgaWYg
KHJlc3VsdC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUs
ICZzdGF0ZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoJnN0YXRlLCBXVEZNb3ZlKHJlc3VsdCkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pv
aW5lci5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZ0pvaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsMTYgKzYwLDIwIEBAIGlu
bGluZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXgKICAgICA6IG1fc2VwYXJhdG9y
KHNlcGFyYXRvcikKICAgICAsIG1faXNBbGw4Qml0KG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0
cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIH0KIAogaW5s
aW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pvaW5lcihFeGVjU3RhdGUmIHN0YXRlLCBMQ2hh
ciBzZXBhcmF0b3IsIHVuc2lnbmVkIHN0cmluZ0NvdW50KQogICAgIDogbV9zaW5nbGVDaGFyYWN0
ZXJTZXBhcmF0b3Ioc2VwYXJhdG9yKQogICAgICwgbV9zZXBhcmF0b3IgeyAmbV9zaW5nbGVDaGFy
YWN0ZXJTZXBhcmF0b3IsIDEgfQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmlu
Z3MudHJ5UmVzZXJ2ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dT
Y29wZSwgJnN0YXRlKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpTU3RyaW5nSm9pbmVyOjph
cHBlbmQoU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nJiYgc3RyaW5nKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3Qu
aAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
eW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlEZXNjcmlw
dG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTY2LDYgKzE2Nyw3IEBAIHRlbXBsYXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBz
eW1ib2xUYWJsZVAKIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJvbFRhYmxlT2JqZWN0
VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9y
ZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIFdhdGNo
cG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
cmVnOwpAQCAtMTgyLDcgKzE4NCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJv
bFRhYmxlT2IKICAgICAgICAgQVNTRVJUKCFmYXN0RW50cnkuaXNOdWxsKCkpOwogICAgICAgICBp
ZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsKICAg
ICAgICAgICAgIGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCi0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcHV0UmVzdWx0
ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjAwLDkg
KzIwMiw5IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJvbFRhYmxlT2IKICAgICAv
LyB0aGUgcmlnaHQgZm9yIGJhcnJpZXJzIHRvIGJlIGFibGUgdG8gdHJpZ2dlciBHQy4gQW5kIEkg
ZG9uJ3Qgd2FudCB0byBob2xkIFZNCiAgICAgLy8gbG9ja3Mgd2hpbGUgR0MnaW5nLgogICAgIGlm
IChzeW1ib2xUYWJsZVB1dE1vZGUgPT0gU3ltYm9sVGFibGVQdXRNb2RlOjpJbnZhbGlkYXRlKQot
ICAgICAgICBzeW1ib2xUYWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KGV4ZWMtPnZtKCks
IG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOworICAgICAgICBzeW1ib2xU
YWJsZVB1dEludmFsaWRhdGVXYXRjaHBvaW50U2V0KHZtLCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHJlZywgc2V0KTsKICAgICBlbHNlCi0gICAgICAgIHN5bWJvbFRhYmxlUHV0VG91Y2hX
YXRjaHBvaW50U2V0KGV4ZWMtPnZtKCksIG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVn
LCBzZXQpOworICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh2bSwgb2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CiAgICAgcHV0UmVzdWx0ID0gdHJ1
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NSw3ICs2NSw5IEBAIFN0
cnVjdHVyZSogSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjoKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
JVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CiB9CiAKIENv
bnN0cnVjdFR5cGUgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDcgKzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8
SlNVaW50MTZBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBlZEFycmF5OiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKQEAgLTcyLDIwICs3MiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1
bWVudC5pc0NlbGwoKSB8fCAhaXNUeXBlZFZpZXcoYXJndW1lbnQuYXNDZWxsKCktPmNsYXNzSW5m
bygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIp
KTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJV
bmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRo
ZSB2aWV3IikpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2Jq
ZWN0LT5sZW5ndGgoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJpdmF0ZUZ1bmNHZXRPcmlnaW5hbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmdldE9iamVjdCgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0
b3JhZ2VUeXBlOwogICAgIEFTU0VSVChpc1R5cGVkVmlldyh0eXBlKSk7CkBAIC05NCwxMTEgKzk4
LDEzOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCBleGVjLCBjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk7CiB9CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFz
dEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9G
VU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBF
X0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0pvaW4oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
dWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOwogfQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVE
QVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENB
TExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIw
NDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDE2IEBAIHZvaWQgTWFwQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE1hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMs
ICJNYXAiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
Ik1hcCIpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0TWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2Jh
bE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2Jh
bE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTY5LDExICs3NCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFk
ZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlw
ZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYykpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUs
IFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAg
ICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhSW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDQsNiArMjA0LDkgQEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpT
SXRlcmF0bwogdGVtcGxhdGU8dHlwZW5hbWUgRW50cnksIHR5cGVuYW1lIEpTSXRlcmF0b3I+CiBp
bmxpbmUgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjplbnN1
cmVTcGFjZUZvckFwcGVuZChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIGlmIChtX2NhcGFjaXR5ID4gbV9zaXplKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IApAQCAtMjExLDcgKzIxNCw3IEBAIGlubGluZSBDaGVja2VkQm9vbGVhbiBNYXBEYXRhSW1wbDxF
bnRyeSwKICAgICB2b2lkKiBuZXdTdG9yYWdlID0gbnVsbHB0cjsKICAgICBEZWZlckdDIGRlZmVy
KCpleGVjLT5oZWFwKCkpOwogICAgIGlmICghZXhlYy0+aGVhcCgpLT50cnlBbGxvY2F0ZVN0b3Jh
Z2Uob3duZXIsIHJlcXVpcmVkU2l6ZSAqIHNpemVvZihFbnRyeSksICZuZXdTdG9yYWdlKSkgewot
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3U3RvcmFn
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
SXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDgsOSArNDgsMTIgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE1hcEl0ZXJhdG9yUHJvdG90eXBlRnVu
Y05leHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNYXBJ
dGVyYXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPihjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgY2FsbCBNYXBJdGVyYXRvci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCBjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgTWFwSXRlcmF0b3IubmV4
dCgpIG9uIGEgbm9uLU1hcEl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBpZiAoaXRlcmF0b3ItPm5leHQoY2FsbEZyYW1lLCByZXN1bHQpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMyArODgsMTYgQEAgdm9pZCBNYXBQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0
TWFwKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFs
dWUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgY3JlYXRl
Tm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgSlNNYXAqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0
aGlzVmFsdWUpOwogICAgIGlmICghbWFwKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVj
dCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBBU0NJ
SUxpdGVyYWwoIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2JqZWN0IikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1hcDsKQEAgLTE1MywyNiAr
MTU2LDM1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW4KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNWYWx1ZXMoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBqc0R5bmFt
aWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2Jq
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVlIGl0ZXJhdG9yIGZvciBh
IG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU01hcEl0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVl
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAgdmFsdWUg
aXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1
ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJp
ZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNNYXAqIHRo
aXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGVudHJ5
IGl0ZXJhdG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09i
aiwgSXRlcmF0ZUtleVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZy
YW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRo
aXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hcFByb3RvRnVuY0tleXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZS0+
dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3Ry
dWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBrZXkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcml2YXRlRnVuY0lzTWFwKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDksNiArMTA5LDggQEAg
TW9kdWxlTG9hZGVyUHJvdG90eXBlOjpNb2R1bGVMb2FkZXJQcm90bwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhl
Yy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xMjcsNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVM
b2FkZQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJDb21tZW50
TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewot
ICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIGVycm9yLnRvRXJyb3JPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLCBzb3VyY2VDb2RlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgfQogICAgIEFTU0VSVChtb2R1bGVQcm9ncmFtTm9kZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDEx
IEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4ZWNTdGF0ZSogZXgKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJldHVyblVuZGVmaW5lZChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChjYWxsZXJJc1N0cmljdChleGVjKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVy
IikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNSArMzY0LDE4IEBA
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCAKIC8vIHRvIGFyZ3VtZW50
LXBsdXMtb25lIHNpZ25pZmljYW50IGZpZ3VyZXMpLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1Zh
bHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICAvLyBH
ZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQ7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhl
YywgMCwgMjAsIGRlY2ltYWxQbGFjZXNJbkV4cG9uZW50LCBpc1VuZGVmaW5lZCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoInRvRXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAi
KSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQg
bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIElu
ZmluaXR5LgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKQEAgLTM5NSwxNSArMzk4LDE4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIG1ldGhvZCB3aWxs
IGluc3RlYWQgZmFsbGJhY2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlz
VmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIC8v
IEdldCB0aGUgYXJndW1lbnQuIAogICAgIGludCBkZWNpbWFsUGxhY2VzOwogICAgIGJvb2wgaXNV
bmRlZmluZWQ7IC8vIFRoaXMgaXMgaWdub3JlZDsgdW5kZWZpbmVkIHRyZWF0ZWQgYXMgMC4KICAg
ICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMCwgMjAsIGRlY2ltYWxQbGFj
ZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9GaXhlZCgpIGFyZ3VtZW50IG11c3Qg
YmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4
ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUu
Ny40LjUuNyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIK
ICAgICAvLyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNr
IHNvIHRoYXQgTmFOCkBAIC00MjgsMTUgKzQzNCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG51bWJlclByb3RvCiAvLyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBl
eHBvbmVudGlhbCByZXByZXNlbnRhdGlvbi4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwg
eCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIC8vIEdldCB0aGUg
YXJndW1lbnQuIAogICAgIGludCBzaWduaWZpY2FudEZpZ3VyZXM7CiAgICAgYm9vbCBpc1VuZGVm
aW5lZDsKICAgICBpZiAoIWdldEludGVnZXJBcmd1bWVudEluUmFuZ2UoZXhlYywgMSwgMjEsIHNp
Z25pZmljYW50RmlndXJlcywgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b1ByZWNpc2lv
bigpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMSIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5k
IDIxIikpKTsKIAogICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBp
cyB0cmVhdGVkIGFzIFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ4NSwyMiAr
NDk0LDIzIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdlclZhbHUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKICAgICBpZiAo
IXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFJh
ZGl4RnJvbUFyZ3MoZXhlYyk7CiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFu
ZCAzNiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJn
dW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMyX3QgaW50ZWdl
clZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAgIGlmIChpbnRl
Z2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCiAgICAgICAgIHJldHVybiBpbnRlZ2VyVmFsdWVUb1N0
cmluZyhleGVjLCByYWRpeCwgaW50ZWdlclZhbHVlKTsKIAotICAgIGlmIChyYWRpeCA9PSAxMCkg
ewotICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyh2bSwgdm0tPm51bWVyaWNTdHJpbmdzLmFkZChkb3VibGVWYWx1ZSkp
KTsKLSAgICB9CisgICAgaWYgKHJhZGl4ID09IDEwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKCZ2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkp
OwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZVZhbHVlKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJU
b1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKSk7CkBAIC01MTEsMTkgKzUyMSwyNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihl
eGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkudG9TdHJpbmcoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVl
T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVy
KHRoaXNWYWx1ZSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFdU
Rjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwg
anNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSkt
PnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNv
bXBhdGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywg
dGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcih4KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE3LDEzICsyMTcsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9yU2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1Zh
bHVlIG9iamVjdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVjdFZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsK
IAogICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICgh
cHJvdG9WYWx1ZS5pc09iamVjdCgpICYmICFwcm90b1ZhbHVlLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0
VmFsdWUudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MjMyLDcgKzIzNSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QK
ICAgICBpZiAoIWNoZWNrUHJvdG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogCi0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gdHJ1ZTsKICAg
ICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBw
cm90b1ZhbHVlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgQVNTRVJUX1VOVVNFRChkaWRT
ZXRQcm90b3R5cGUsIHZtLmV4Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CkBAIC0zNDQs
OCArMzQ2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb3duRW51bWVyYWIKIGJv
b2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImIGRlc2MpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghaW4uaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5
IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBt
dXN0IGJlIGFuIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
SlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNPYmplY3QoaW4pOwpAQCAtMzkwLDcgKzM5NCw3IEBA
IGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFn
ZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
ICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUp
IHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdl
dHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5j
dGlvbi4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC00MDUsNyArNDA5LDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZQogICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQs
IGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJTZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxNywxMiArNDIxLDEy
IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBpZiAoZGVzYy52YWx1ZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2Vu
dCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHku
ICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChkZXNjLndyaXRhYmxlUHJl
c2VudCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRl
ciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24g
cHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQzMCwxOSArNDM0LDIyIEBAIGJvb2wgdG9Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRp
ZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2NvcGUuZm9yd2FyZCh0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpKTsK
ICAgICBKU09iamVjdCogTyA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUuZm9yd2FyZChKU1ZhbHVl
OjplbmNvZGUoanNOdWxsKCkpKTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
ICAgICBpZiAoIXRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBk
ZXNjcmlwdG9yKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vzc29yKSB8fCAo
IWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwogICAgIEFTU0VSVCghZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwotICAgIE8tPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVP
d25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTyk7CisgICAgTy0+bWV0aG9kVGFibGUodm0pLT5kZWZp
bmVPd25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRydWUpOwor
ICAgIHJldHVybiB0aHJvd1Njb3BlLmZvcndhcmQoSlNWYWx1ZTo6ZW5jb2RlKE8pKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNDg1LDggKzQ5MiwxMSBAQCBzdGF0
aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CiAgICAgSlNPYmplY3Qq
IHRhcmdldE9iaiA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBKU09iamVjdCog
cHJvcHMgPSBleGVjLT5hcmd1bWVudCgxKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIXByb3Bz
KQpAQCAtNDk2LDE2ICs1MDYsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSBwcm90byA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8u
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4i
KSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKICAgICAgICAg
PyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVjdChwcm90bykpCiAgICAgICAgIDog
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5u
dWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudCgx
KS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVj
dCk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0
b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRv
ciBsaXN0IG11c3QgYmUgYW4gT2JqZWN0LiIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGRlZmluZVByb3BlcnRpZXMoZXhlYywgbmV3T2JqZWN0LCBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgxKSkpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTEyNyw2ICsxMjcsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0LDcgKzEzNyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBKU1ZhbHVlIGdldCA9IGV4ZWMt
PmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0
YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDYsMTMgKzE0OSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1
ZSk7CiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMo
ZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMTYwLDcgKzE2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG8KICAgICBKU1ZhbHVlIHNldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6
Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIp
KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0
eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNzIsNyArMTc4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2Ny
aXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRy
dWU7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blBy
b3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxk
VGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJv
dyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
MjY5LDYgKzI3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8K
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKICAgICBpZiAodGhpc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhp
c1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkT2JqZWN0U3Ry
aW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmluZygpKTsKQEAgLTI5OCw5ICsz
MDYsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgbmV3U3RyaW5nID0gV1RGOjp0cnlN
YWtlU3RyaW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIik7CisgICAgICAgIFN0cmluZyBuZXdTdHJpbmcg
PSBXVEY6OnRyeU1ha2VTdHJpbmcoIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIik7CiAgICAgICAgIGlmICghbmV3U3RyaW5n
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAK
ICAgICAgICAgYXV0byByZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBuZXdTdHJpbmcp
OwogICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5zZXRPYmplY3RUb1N0cmluZ1Zh
bHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFnU2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUtMjAwOSwgMjAxMy0yMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC00MCw2ICs0MCw3IEBAIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUK
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KiBzMSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpbnQzMl90IGxlbmd0aDEgPSBz
MS0+bGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGgxKQpAQCAtNDgsNyArNDksNyBAQCBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiAgICAgaWYgKCFsZW5ndGgyKQogICAg
ICAgICByZXR1cm4gczE7CiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBs
ZW5ndGgyKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAog
ICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIHMyKTsKIH0KQEAgLTU2LDEz
ICs1NywxNCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IHUxLCBjb25zdCBTdHJpbmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgKnZtKTsKIAog
ICAgIGludDMyX3QgbGVuZ3RoMSA9IHUxLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMiA9
IHUyLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMyA9IHUzLmxlbmd0aCgpOwogICAgIAog
ICAgIGlmIChsZW5ndGgxIDwgMCB8fCBsZW5ndGgyIDwgMCB8fCBsZW5ndGgzIDwgMCkKLSAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAKICAgICBpZiAoIWxl
bmd0aDEpCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBqc1N0cmluZyh2bSwgdTIpLCBq
c1N0cmluZyh2bSwgdTMpKTsKQEAgLTcyLDcgKzc0LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3RyaW5nKEV4ZWNTdGF0ZQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywganNTdHJp
bmcodm0sIHUxKSwganNTdHJpbmcodm0sIHUyKSk7CiAKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGlu
dDMyX3Q+KGxlbmd0aDEsIGxlbmd0aDIsIGxlbmd0aDMpKQotICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5n
KHZtLCB1MykpOwogfQpAQCAtODAsMTIgKzgyLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdp
c3RlckFycmF5KEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgKnZtKTsKICAgICBKU1JvcGVTdHJpbmc6OlJvcGVCdWlsZGVyIHJvcGVCdWls
ZGVyKCp2bSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewog
ICAgICAgICBKU1ZhbHVlIHYgPSBzdHJpbmdzWy1zdGF0aWNfY2FzdDxpbnQ+KGkpXS5qc1ZhbHVl
KCk7CiAgICAgICAgIGlmICghcm9wZUJ1aWxkZXIuYXBwZW5kKHYudG9TdHJpbmcoZXhlYykpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKQEAgLTk0LDEzICs5NywxNCBA
QCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmdGcm9tUmVnaXN0CiBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdHJpbmdGcm9tQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0
aGlzVmFsdWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCAqdm0pOwogICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIgcm9w
ZUJ1aWxkZXIoKnZtKTsKICAgICByb3BlQnVpbGRlci5hcHBlbmQodGhpc1ZhbHVlLnRvU3RyaW5n
KGV4ZWMpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENv
dW50KCk7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudChpKTsKICAg
ICAgICAgaWYgKCFyb3BlQnVpbGRlci5hcHBlbmQodi50b1N0cmluZyhleGVjKSkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw5IEBAIFByb3h5Q29uc3RydWN0b3I6OlByb3h5
Q29uc3RydWN0b3IoVk0mIHYKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWFrZVJldm9jYWJsZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIGV4ZWMtPnZtKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRz
OiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUg
bmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhl
IGhhbmRsZXIiKSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFyZ0xpc3QgYXJn
cyhleGVjKTsKQEAgLTgwLDcgKzgxLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWFrZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJl
dm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUg
Y2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiKSk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCBleGVjLT52bSgpKTsKKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5LnJldm9jYWJs
ZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxlZCIpKTsKIH0KIAog
dm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIq
IG5hbWUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC05Myw4ICs5NSw5IEBAIHZv
aWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJveHlPYmplY3QoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CiAgICAg
aWYgKGV4ZWMtPm5ld1RhcmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQcm94eSBjb25z
dHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQ
cm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CiAKICAgICBBcmdMaXN0
IGFyZ3MoZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDApOwpAQCAtMTEwLDcg
KzExMyw4IEBAIENvbnN0cnVjdFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3QKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb3h5IikpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsICJQcm94eSIpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlDb25zdHJ1Y3Rv
cjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA0
ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MSwxOSArNjEsMjAgQEAgU3RydWN0dXJlKiBQcm94eU9iamVjdDo6
c3RydWN0dXJlRm9yVGFyZwogCiB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0YXJnZXQsIEpTVmFsdWUgaGFuZGxlcikKIHsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQg
YmUgYW4gT2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChQcm94eU9iamVjdCogdGFyZ2V0QXNQ
cm94eSA9IGpzRHluYW1pY0Nhc3Q8UHJveHlPYmplY3QqPih0YXJnZXQpKSB7CiAgICAgICAgIGlm
ICh0YXJnZXRBc1Byb3h5LT5oYW5kbGVyKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94eSdzIGhhbmRsZXIgaXMgYW5v
dGhlciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91bGQgbm90IGhhdmUgYmVlbiBy
ZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
QVNDSUlMaXRlcmFsKCJJZiBhIFByb3h5J3MgaGFuZGxlciBpcyBhbm90aGVyIFByb3h5IG9iamVj
dCwgdGhlIG90aGVyIFByb3h5IHNob3VsZCBub3QgaGF2ZSBiZWVuIHJldm9rZWQiKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFoYW5kbGVyLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBIFBy
b3h5J3MgJ2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVy
JyBzaG91bGQgYmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
OCw4ICs5OSw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWQKIHN0
YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3h5T2JqZWN0
KiBwcm94eU9iamVjdCwgSlNWYWx1ZSByZWNlaXZlciwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgp
KSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMTcsNyArMTE5LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVy
Zm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94
eU9iamVjdC0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JN
ZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhh
bmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC0xNDEsMTAgKzE0MywxMCBA
QCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlCiAgICAgaWYgKHRhcmdl
dC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
cikpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNj
cmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAg
ICAgICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgdHJhcFJlc3Vs
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUg
YW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBzaG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IHRhcmdldCdzIHByb3BlcnR5IikpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0
JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkg
c2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3JpcHRvci5nZXR0ZXIoKS5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXRyYXBSZXN1bHQuaXNVbmRlZmluZWQoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94
eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBw
cm9wZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUg
YWNjZXNzb3IgcHJvcGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIikp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjcsOCArMTY5LDkgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybUdldChFeGVjU3RhdGUqIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0
YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAgLTE4Miw3ICsxODUsNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9
IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2
b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAzLDcgKzIwNiw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNP
YmplY3QoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
cmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBi
ZSBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBhbiBPYmplY3Qgb3IgdW5kZWZpbmVkIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMTYsNyArMjE5LDcgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgICAgICBpZiAoIWlzVGFy
Z2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKCF0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXaGVuIHRo
ZSByZXN1bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgaXMgdW5kZWZpbmVkIHRoZSB0
YXJnZXQgbXVzdCBiZSBjb25maWd1cmFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9mICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUg
Y29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3Qgd29yayBpZiAndGFyZ2V0JyBpcyBhbm90aGVy
IFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0ZW5zaWJsZSBpbXBsZW1lbnRlZCBpbiBhIHdheSB0
aGF0IGZpdHMgdy8gUHJveHlzLgpAQCAtMjI4LDcgKzIzMSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21lIHVwIHdp
dGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUgaG93IHRvIGJlY2F1c2UKICAg
ICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBhbGwgZmllbGRzIFtbQ29uZmln
dXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyByZXR1cm5zIHVu
ZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxkIGJlIGV4dGVuc2libGUiKSk7
CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwg
dGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxkIGJlIGV4dGVuc2libGUiKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjQ2LDEzICsyNDksMTMgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogICAgIGJvb2wgdmFsaWQgPSB2
YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5
TmFtZSwgaXNFeHRlbnNpYmxlLAogICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1Rh
cmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwg
dGhyb3dFeGNlcHRpb24pOwogICAgIGlmICghdmFsaWQpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwo
IlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBh
dGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghdHJhcFJlc3VsdEFzRGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoIWlzVGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCB8fCB0YXJn
ZXRQcm9wZXJ0eURlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yJyBjYW4ndCBiZSBub24tY29uZmlndXJhYmxlIHdoZW4gdGhlICd0YXJnZXQn
IGRvZXNuJ3QgaGF2ZSBpdCBhcyBhbiBvd24gcHJvcGVydHkgb3IgaWYgaXQgaXMgYSBjb25maWd1
cmFibGUgb3duIHByb3BlcnR5IG9uICd0YXJnZXQnIikpOworICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUg
J3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBh
IGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzMsOCArMjc2LDkgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5p
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogdGFyZ2V0ID0g
dGhpcy0+dGFyZ2V0KCk7CkBAIC0yODksNyArMjkzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUhhc1Byb3BlcnR5KEV4ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5o
YW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBB
U0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMyMCwxNCArMzI0LDE0IEBAIGJvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKGlzUHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAg
aWYgKCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0
cnVlJyBmb3Igbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzIikpOworICAgICAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAn
aGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcyIp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3Qg
cmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmplY3Qgd2l0aCBh
IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1
cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIG9iamVjdCB3aXRoIGEgY29u
ZmlndXJhYmxlIHByb3BlcnR5IikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzM4LDggKzM0MiwxMCBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlCiAKIGJvb2wgUHJveHlPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdENvbW1vbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPnZtKCku
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgeworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBzbG90LmRpc2FibGVDYWNoaW5n
KCk7CkBAIC0zNzYsOCArMzgyLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0
UHV0RnVuYwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0UHV0KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAg
ICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMzg2LDcgKzM5Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhl
Y1N0YXRlKiAKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwog
ICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC00MTgsMTEgKzQyNSwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtUHV0KEV4ZWNTdGF0ZSogCiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYm
ICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghc2FtZVZhbHVlKGV4
ZWMsIGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBv
biBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0
JyBzaG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5
IG9uIHRoZSAndGFyZ2V0JyIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEg
bm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNo
b3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9yIGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24g
dGhlICd0YXJnZXQnIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3JpcHRvci5zZXR0ZXIoKS5p
c1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFi
bGUgYWNjZXNzb3IgcHJvcGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNl
IikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJh
YmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxz
ZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ2
OCwxNCArNDc1LDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWwK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwor
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KICAgICBQcm94eU9i
amVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
SlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVy
VmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRs
ZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxE
YXRhOwpAQCAtNTE3LDE0ICs1MjUsMTUgQEAgQ2FsbFR5cGUgUHJveHlPYmplY3Q6OmdldENhbGxE
YXRhKEpTQ2VsbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVBy
b3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwogICAgIGlmIChVTkxJS0VM
WSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IodGhyb3dTY29w
ZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAg
ICB9CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+
Y2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsK
ICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTU1MSw3ICs1NjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICgh
cmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1l
dGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tIFByb3h5IGhh
bmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJlIGFuIG9iamVjdCIpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKQEAgLTU3Miw4ICs1ODEsOSBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uCiBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0RGVsZXRlKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtNTgyLDcgKzU5Miw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhl
Y1N0YXQKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAg
IGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC02MTMsNyArNjIzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURl
bGV0ZShFeGVjU3RhdAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGlm
ICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IpKSB7CiAgICAgICAgIGlmICghZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewot
ICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhh
bmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4g
dGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUiKSk7CisgICAgICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkg
aGFuZGxlcidzICdkZWxldGVQcm9wZXJ0eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hl
biB0aGUgdGFyZ2V0J3MgcHJvcGVydHkgaXMgbm90IGNvbmZpZ3VyYWJsZSIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTY0OCwxNCArNjU4LDE1IEBA
IGJvb2wgUHJveHlPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleCgKIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhh
bmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFs
cmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTY4NCw3ICs2OTUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4
dGVuc2lvCiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKHRhcmdldElzRXh0ZW5zaWJsZSkgewotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ3ByZXZlbnRF
eHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggaXRzIHRhcmdldCBpcyBl
eHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKKyAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0
YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03MDAsMTQgKzcx
MSwxNSBAQCBib29sIFByb3h5T2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhKU09iCiBib29sIFBy
b3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAo
aGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5
QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtNzM5LDExICs3NTEsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0
ZW5zaWJsZShFeAogICAgIGlmICh0cmFwUmVzdWx0QXNCb29sICE9IGlzVGFyZ2V0RXh0ZW5zaWJs
ZSkgewogICAgICAgICBpZiAoaXNUYXJnZXRFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIXRyYXBSZXN1bHRBc0Jvb2wpOwotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJu
ZWQgZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIHRydWUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCBy
ZXR1cm5lZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgdHJ1ZSIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VCghaXNUYXJnZXRFeHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNC
b29sKTsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQ
cm94eSBvYmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUg
dGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIp
KTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm94eSBvYmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUg
d2hlbiB0aGUgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5l
ZCBmYWxzZSIpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTc1OCw4ICs3NzAsOSBAQCBi
b29sIFByb3h5T2JqZWN0Ojppc0V4dGVuc2libGUoSlNPYmplY3QqCiBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wg
c2hvdWxkVGhyb3cpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03NzMsNyArNzg2LDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJl
dm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3Bl
LCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTgxOCwxMSArODMxLDExIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKIAogICAgIGlmICghaXNUYXJn
ZXREZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICBpZiAoIXRhcmdldElzRXh0ZW5zaWJsZSkg
ewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmlu
ZWQgYW5kIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUiKSk7CisgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVm
aW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3VnaCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCBhbmQg
dGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFsc2UpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi1jb25maWd1cmFi
bGUgZmllbGQgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQcm94
eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBub24tY29uZmlndXJhYmxlIGZpZWxkIGV2
ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJveHkncyB0YXJnZXQg
cmV0dXJuZWQgdW5kZWZpbmVkIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTgzNSwxMSArODQ4LDExIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZp
bmVPd25Qcm9wZXIKICAgICBib29sIHRocm93RXhjZXB0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBp
c0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5hbWUsIHRhcmdldElzRXh0ZW5zaWJsZSwgZGVzY3Jp
cHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3VycmVudCwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlm
ICghaXNDb21wYXRpYmxlRGVzY3JpcHRvcikgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBk
ZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRo
ZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0
cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBh
dGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKHNldHRpbmdDb25maWd1cmFibGVUb0ZhbHNlICYmIHRh
cmdldERlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBu
b3QgZGVmaW5lIGEgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4g
dGhvdWdoIHRoZSBpbnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBz
byIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxp
dGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgbm9u
LWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRoZSBpbnB1
dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyIpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTg1NSwxMyArODY4LDE0IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2IKIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZv
cm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHRyYXBSZXN1bHQsIEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUpCiB7CiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEpT
VmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFs
dWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2
b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NTEsNyAr
OTY1LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAg
Zm9yIChVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMp
IHsKICAgICAgICAgaWYgKHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGlt
cGwpID09IElzTm90Q29udGFpbmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29u
ZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0
aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyAn
dGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBs
KSwgIicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAi
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC05NjEsMTMgKzk3
NSwxMyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOCiAKICAgICBm
b3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Q29uZmlndXJhYmxlS2V5cykgewog
ICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tlZFJlc3VsdEtleXMoaW1wbCkg
PT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBoYXMg
Y29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBp
biB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3Qn
cyBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBoYXMgY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBT
dHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25L
ZXlzJyB0cmFwIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKHVuY2hlY2tlZFJlc3VsdEtleXMuc2l6ZSgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhv
ZCByZXR1cm5lZCBhIGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgbm9uLWV4dGVuc2li
bGUgdGFyZ2V0IikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQg
YSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTEwMDQsMTQgKzEwMTgsMTUgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIEFTU0VSVChwcm90b3R5
cGUuaXNPYmplY3QoKSB8fCBwcm90b3R5cGUuaXNOdWxsKCkpOwogCiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAo
VU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgSlNW
YWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1
ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZv
a2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEw
MzksNyArMTA1NCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgK
ICAgICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRo
cm93SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBp
dCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4
cGVjdGVkIHRvIHN1Y2NlZWQiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5l
ZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4g
VGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTA1Myw3ICsxMDY4LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHByb3RvdHlwZSwgdGFyZ2V0
UHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFy
Z2V0IGlzIG5vbi1leHRlbnNpYmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3Qg
dGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSBy
ZXR1cm5lZCBmYWxzZSIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0
cnVlIHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5
cGUgdmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4g
SXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTEwNjgsMTQgKzEwODMsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6c2V0UHJv
dG90eXBlKEpTT2JqZWN0KgogSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlw
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2Fm
ZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZh
bHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTA5Nyw3ICsxMTEz
LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogCiAgICAgaWYgKCF0cmFwUmVzdWx0LmlzT2JqZWN0KCkgJiYgIXRy
YXBSZXN1bHQuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVp
dGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldFBy
b3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIikp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTExMSw3ICsxMTI3LDcg
QEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQogICAgIGlmICh2bS5l
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBpZiAoIXNhbWVWYWx1
ZShleGVjLCB0YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdnZXRQcm90b3R5cGVPZicgdHJh
cCBmb3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1
ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZ2V0UHJvdG90eXBlT2Yn
IHRyYXAgZm9yIGEgbm9uLWV4dGVuc2libGUgdGFyZ2V0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUg
dmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3RvdHlwZSIpKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxl
Y3RPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZmxlY3RPYmplY3QuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMjYg
Kzk1LDI5IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuY29uc3RydWN0CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0
cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlmICghdGFy
Z2V0LmlzQ29uc3RydWN0b3IoY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25z
dHJ1Y3RvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBKU1Zh
bHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDMpIHsKICAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMik7CiAgICAgICAgIGlm
ICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0
cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVz
ZW50IikpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1
aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciBpZiBwcmVzZW50IikpKTsK
ICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CiAgICAgSlNPYmpl
Y3QqIGFyZ3VtZW50c09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihleGVjLT5hcmd1
bWVudCgxKSk7CiAgICAgaWYgKCFhcmd1bWVudHNPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNv
bnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25k
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlr
ZShleGVjLCBhcmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCBBU0NJSUxp
dGVyYWwoIlRoaXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIiksIFsmXSAoSlNWYWx1ZSB2YWx1
ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVl
KTsKQEAgLTEyOSw5ICsxMzIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5k
ZWZpbmVwcm9wZXJ0eQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVl
IHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1
bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5kZWZp
bmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsK
ICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXko
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ1LDI1ICsxNTEsMzEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogICAgIC8vIFJlZmxlY3QuZGVmaW5l
UHJvcGVydHkgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvciB3aGVuIHRoZSBkZWZpbmVPd25Qcm9w
ZXJ0eSBvcGVyYXRpb24gZmFpbHMuCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IGZhbHNlOwogICAg
IEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRo
cm93KSkpOwogfQogCiAvLyBGSVhNRTogUmVmbGVjdC5lbnVtZXJhdGUgaXMgcmVtb3ZlZCBpbiBF
Q01BIDIwMTYgZHJhZnQuCiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtcmVmbGVjdC5lbnVtZXJhdGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdEVudW1lcmF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJn
ZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVm
bGVjdC5lbnVtZXJhdGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIp
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVy
YXRvclN0cnVjdHVyZSgpLCBhc09iamVjdCh0YXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0CiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgY29u
c3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5
S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MCw5ICsxOTIs
MTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2Ny
aXB0b3IKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAgICBhdXRvIGtleSA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MTk0LDE4ICsyMDksMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRwcm90
b3R5cGVvZgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJv
dG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdl
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXRQcm90b3R5
cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2YoZXhl
YywgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0IikpKTsKIAogICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+
aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIx
NiwyMCArMjM3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUK
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5cwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Qub3du
S2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1l
bnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG93blByb3Bl
cnR5S2V5cyhleGVjLCBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2Rl
OjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOwog
fQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnByZXZl
bnRleHRlbnNpb25zCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RQ
cmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIGJv
b2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHJldmVudEV4dGVu
c2lvbnMob2JqZWN0LCBleGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwpAQCAtMjM4
LDkgKzI2NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXQgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Iikp
KTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIAogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVj
KTsKQEAgLTI1NCwyNSArMjg0LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamUKICAgICAvLyBEbyBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhh
cHBlbiBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFs
c2U7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3VsZFRocm93SWZDYW50
U2V0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOwog
fQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHBy
b3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQ
cm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGFy
Z2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3Rv
dHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAg
IEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvLmlzT2Jq
ZWN0KCkgJiYgIXByb3RvLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXRQcm90b3R5cGVP
ZiByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVs
bCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVp
cmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsK
IAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAgaWYgKCFj
aGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgYm9v
bCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8s
IHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOSBAQCBp
bmxpbmUgU3RydWN0dXJlKiBnZXRSZWdFeHBTdHJ1Y3R1cmUoRXhlCiAKIGlubGluZSBSZWdFeHBG
bGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmbGFncykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgaWYgKGZsYWdzLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBOb0ZsYWdzOwog
ICAgIEpTU3RyaW5nKiBmbGFnc1N0cmluZyA9IGZsYWdzLnRvU3RyaW5nKGV4ZWMpOwpAQCAtMjIy
LDEzICsyMjUsMTUgQEAgaW5saW5lIFJlZ0V4cEZsYWdzIHRvRmxhZ3MoRXhlY1N0YXRlKiBleAog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRGbGFn
czsKICAgICBpZiAocmVzdWx0ID09IEludmFsaWRGbGFncykKLSAgICAgICAgdGhyb3dTeW50YXhF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhw
IGNvbnN0cnVjdG9yLiIpKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcih0aHJvd1Njb3BlLCBl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0
cnVjdG9yLiIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIHJl
Z0V4cENyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgbmV3VGFyZ2V0LCBKU1ZhbHVlIHBhdHRlcm5BcmcsIEpTVmFsdWUgZmxhZ3NBcmcp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBwYXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5l
ZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0yMzksNyArMjQ0LDcgQEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVhdGUoRXhl
Y1N0YXRlKgogCiAgICAgUmVnRXhwKiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVy
biwgZmxhZ3MpOwogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVy
cm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsK
IAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0UmVnRXhwU3RydWN0dXJlKGV4ZWMsIGds
b2JhbE9iamVjdCwgbmV3VGFyZ2V0KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsOCBAQCBNYXRjaFJlc3VsdCBSZWdF
eHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXhFbmRGdW5jPgog
SlNWYWx1ZSBjb2xsZWN0TWF0Y2hlcyhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcq
IHN0cmluZywgY29uc3QgU3RyaW5nJiBzLCBSZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3Is
IFJlZ0V4cCogcmVnRXhwLCBjb25zdCBGaXhFbmRGdW5jJiBmaXhFbmQpCiB7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSBj
b25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKQEAgLTE5Nyw3ICsxOTksNyBA
QCBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZNJiB2bSwgRXhlY1N0YXRlCiAgICAgICAgICAgICBN
YXRjaFJlc3VsdCBzYXZlZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgICAgIGRvIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXJyYXktPmxlbmd0aCgpICsgbWF0Y2hDb3VudCA+PSBNQVhfU1RPUkFH
RV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjA0ODcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiUmVnRXhwLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZUlubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAgICAgCkBAIC00MywyMiArNDQsMjggQEAgcHVibGljOgogCiAgICAgYm9vbCBzZXRM
YXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAgIHsKKyAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7
CiAgICAgICAgICAgICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVy
KGxhc3RJbmRleCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBib29sIHNldExhc3RJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbGFzdElu
ZGV4LCBib29sIHNob3VsZFRocm93KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAgICAg
aWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAgICBtX2xhc3RJ
bmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFzdEluZGV4KTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgSlNWYWx1ZSBnZXRMYXN0SW5kZXgoKSBjb25zdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCwxMiBAQCB2b2lkIFJlZ0V4cFByb3Rv
dHlwZTo6dmlzaXRDaGlsZHJlbihKU0NlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG9GdW5jVGVzdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEwOSw5ICsxMTIsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjLCAiQnVpbHRpbiBSZWdFeHAgZXhlYyBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlmICghc3RyaW5nKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTIwLDkgKzEy
NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jTWF0Y2hGYXN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBKU1N0cmluZyogc3Ry
aW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xMzMsOSArMTQyLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIFJl
Z0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAt
MTQzLDcgKzE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8K
ICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKICAg
ICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBj
b25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5u
b3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVy
LiIpKTsKICAgICAgICAgcmVnRXhwID0gYXNSZWdFeHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsK
QEAgLTE1NiwxNSArMTY4LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAg
aWYgKGZsYWdzID09IEludmFsaWRGbGFncykKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpKTsKICAgICAgICAgfQotICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNy
ZWF0ZShleGVjLT52bSgpLCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIHJlZ0V4cCA9IFJlZ0V4
cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgfQogCiAgICAgaWYgKCFyZWdFeHAt
PmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVn
RXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogCi0gICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+
c2V0UmVnRXhwKGV4ZWMtPnZtKCksIHJlZ0V4cCk7CisgICAgYXNSZWdFeHBPYmplY3QodGhpc1Zh
bHVlKS0+c2V0UmVnRXhwKHZtLCByZWdFeHApOwogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1
ZSktPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZSk7CiB9CkBAIC0yMTIsOSArMjI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NTdHJp
bmcgZmxhZ3NTdHJpbmcoRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogCkBAIC0yMjIsNyArMjM3LDYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgIGlmIChKU1Zh
bHVlIGVhcmx5UmV0dXJuVmFsdWUgPSBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShlYXJseVJldHVyblZhbHVlKTsKIAotICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNWYWx1ZSBzb3VyY2VWYWx1ZSA9IHRoaXNPYmplY3QtPmdl
dChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zb3VyY2UpOwogICAgIGlmICh2bS5leGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI0
MiwxMSArMjU2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckdsb2JhbChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVn
RXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1Jl
Z0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpKTsKQEAgLTI1NCwxMSAr
MjcxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9yZUNhc2UoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4
cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdF
eHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBA
IC0yNjYsMTEgKzI4NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0
aWxpbmUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+cmVnRXhwKCktPm11bHRpbGluZSgp
KSk7CkBAIC0yNzgsMTEgKzMwMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0
ZXJTdGlja3koRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlu
aGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJl
Z0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5zdGlja3koKSkp
OwpAQCAtMjkwLDExICszMTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVy
VW5pY29kZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmlu
aGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBS
ZWdFeHAgb2JqZWN0IikpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+dW5pY29kZSgp
KSk7CkBAIC0zMDIsOSArMzMxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRl
ckZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09i
amVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCIpKTsKIAogICAgIGF1dG8gZmxhZ3Mg
PSBmbGFnc1N0cmluZyhleGVjLCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCkBAIC00MjEsMTEgKzQ1MywxNCBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUgcmVnRXhwUHJvdG9HZXR0ZXJTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9HZXR0ZXJTb3VyY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86
KSIpKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJj
ZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAgICB9
CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5wYXR0ZXJuKCk7CkBAIC01NDEsNiArNTc2LDcgQEAgdm9pZCBnZW5lcmljU3BsaXQoCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1NwbGl0RmFzdChFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAogICAgIC8vIDEuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0
aW5dIExldCByeCBiZSB0aGUgdGhpcyB2YWx1ZS4KICAgICAvLyAyLiBbaGFuZGxlZCBieSBKUyBi
dWlsdGluXSBJZiBUeXBlKHJ4KSBpcyBub3QgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNl
cHRpb24uCkBAIC02NDYsNyArNjgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90bwogICAgICAgICB9KTsKICAgICAKICAgICBpZiAocmVzdWx0TGVuZ3RoICsgZHJ5
UnVuQ291bnQgPj0gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJv
d1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWpl
Y3QuaAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDggKzMzLDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBpbmxpbmUgYm9vbCByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9u
LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgbWVzc2FnZSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDExICs0OSwxNiBA
QCB2b2lkIFNldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgCiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxTZXQoRXhlY1N0YXRlKiBleGVjKQogewotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNG
dW5jdGlvblR5cGVFcnJvcihleGVjLCAiU2V0IikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVy
cm9yKHRocm93U2NvcGUsIGV4ZWMsICJTZXQiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4
ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MCw3ICs3NSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRk
ZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlv
bkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAKICAgICBmb3JFYWNoSW5JdGVy
YWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5l
eHRWYWx1ZSkgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEw
ICs0OCwxMyBAQCB2b2lkIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNTZXRJdGVy
YXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRlcmF0b3IpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1TZXRJdGVy
YXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBT
ZXRJdGVyYXRvci5uZXh0KCkgb24gYSBub24tU2V0SXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAg
IGlmIChpdGVyYXRvci0+bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3QoY2FsbEZyYW1lLCByZXN1
bHQsIGZhbHNlKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEzICs4Miwx
NiBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAKIEFMV0FZU19J
TkxJTkUgc3RhdGljIEpTU2V0KiBnZXRTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
dGhpc1ZhbHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0
KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IodGhyb3dT
Y29wZSwgY2FsbEZyYW1lLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1Zh
bHVlKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU1NldCogc2V0ID0g
anNEeW5hbWljQ2FzdDxKU1NldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFzZXQpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRpb24g
Y2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24g
bm9uLVNldCBvYmplY3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBy
ZXR1cm4gc2V0OwpAQCAtMTM5LDE4ICsxNDIsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bgogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQ
cm90b0Z1bmNWYWx1ZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2Fs
bEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgSlNTZXQqIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRl
IGEgU2V0IHZhbHVlIGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgp
LCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgSlNTZXQqIHRoaXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgY3JlYXRlIGEgU2V0IGVudHJ5IGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0
LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUo
Y2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0
SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZy
YW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBTZXQgZW50cnkgaXRlcmF0b3IgZm9y
IGEgbm9uLVNldCBvYmplY3QuIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0
SXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jSXNTZXQoRXhlY1N0YXRl
KiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
MiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDYgKzkwLDggQEAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRk
UmVzdWx0IFNwYXJzZUFycgogCiBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVl
LCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAK
ICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKQEAgLTEwMSw3ICsxMDMsNyBA
QCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTCiAgICAgaWYgKHJlc3Vs
dC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAgICAg
ICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIApAQCAtMTQ4LDE0ICsxNTAsMTcgQEAgdm9pZCBTcGFyc2VBcnJh
eUVudHJ5OjpnZXQoUHJvcGVydHlEZXNjcgogCiBib29sIFNwYXJzZUFycmF5RW50cnk6OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBTcGFyc2VBcnJheVZhbHVlTWFwKiBt
YXAsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlm
ICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHNldChleGVjLT52bSgpLCBtYXAsIHZhbHVlKTsK
KyAgICAgICAgc2V0KHZtLCBtYXAsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC05MSw2ICs5MSw5IEBAIEpTQ2VsbCogSlNDX0hPU1RfQ0FMTCBzdHJpbmdG
cm9tQ2hhckNvZGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
RnJvbUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKQEAgLTEwMyw3ICsxMDYs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpCiAgICAgICAgIHVp
bnQzMl90IGNvZGVQb2ludCA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2RlUG9pbnRBc0RvdWJs
ZSk7CiAKICAgICAgICAgaWYgKGNvZGVQb2ludCAhPSBjb2RlUG9pbnRBc0RvdWJsZSB8fCBjb2Rl
UG9pbnQgPiBVQ0hBUl9NQVhfVkFMVUUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcmd1bWVudHMgY29u
dGFpbiBhIHZhbHVlIHRoYXQgaXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIikpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhh
dCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiKSkpOwogCiAgICAgICAgIGlmIChVX0lT
X0JNUChjb2RlUG9pbnQpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8
VUNoYXI+KGNvZGVQb2ludCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNjMsNiArNjMsOSBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90QnlJCiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZ
KGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC03MCw3ICs3Myw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCkBAIC04MCwxMCArODMs
MTMgQEAgYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogCiBib29sIFN0
cmluZ09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBTdHJpbmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0
SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODksNiArMjg5LDkgQEAgc3RydWN0IFN0cmluZ1JhbmdlIHsKIAog
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIGlmIChyYW5nZUNvdW50ID09IDEpIHsKICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBz
b3VyY2UubGVuZ3RoKCk7CiAgICAgICAgIGludCBwb3NpdGlvbiA9IHN1YnN0cmluZ1Jhbmdlc1sw
XS5wb3NpdGlvbjsKQEAgLTMxMSw3ICszMTQsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzU3BsaWNlU3ViCiAgICAgICAgIGNvbnN0IExDaGFyKiBzb3VyY2VEYXRhID0gc291cmNl
LmNoYXJhY3RlcnM4KCk7CiAgICAgICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAg
ICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJh
bmdlQ291bnQ7IGkrKykgewpAQCAtMzI5LDcgKzMzMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTcGxpY2VTdWIKIAogICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFpbXBsKQot
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgaW50IGJ1
ZmZlclBvcyA9IDA7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsK
QEAgLTM0NCw2ICszNDcsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3ViCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0
aFNlcGFyYXRvcnMoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJh
bmdlQ291bnQsIGNvbnN0IFN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBpZiAocmFuZ2VDb3VudCA9PSAxICYmIHNlcGFyYXRvckNvdW50ID09
IDApIHsKICAgICAgICAgaW50IHNvdXJjZVNpemUgPSBzb3VyY2UubGVuZ3RoKCk7CiAgICAgICAg
IGludCBwb3NpdGlvbiA9IHN1YnN0cmluZ1Jhbmdlc1swXS5wb3NpdGlvbjsKQEAgLTM2NCw3ICsz
NzAsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAgICAgICAg
ICAgICBhbGxTZXBhcmF0b3JzOEJpdCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAodG90YWxMZW5n
dGguaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2NvcGUs
IGV4ZWMpOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlT
dHJpbmcoZXhlYyk7CkBAIC0zNzUsNyArMzgxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1NwbGljZVN1YgogCiAgICAgICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNy
ZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1ZmZlcik7CiAgICAg
ICAgIGlmICghaW1wbCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogCiAgICAgICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQs
IHNlcGFyYXRvckNvdW50KTsKICAgICAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CkBAIC00MDAsNyAr
NDA2LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgIFVD
aGFyKiBidWZmZXI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh0b3RhbExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwp
Ci0gICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBpbnQg
bWF4Q291bnQgPSBzdGQ6Om1heChyYW5nZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CiAgICAgaW50
IGJ1ZmZlclBvcyA9IDA7CkBAIC03NTIsMTAgKzc1OCwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
Y2hlY2tPYmplY3RDb2VyY2libGUoCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4K
IHN0YXRpYyBpbmxpbmUgSlNTdHJpbmcqIHJlcGVhdENoYXJhY3RlcihFeGVjU3RhdGUmIGV4ZWMs
IENoYXJhY3RlclR5cGUgY2hhcmFjdGVyLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8gaW1wbCA9
IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVwZWF0Q291bnQsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcih0aHJvd1Njb3BlLCAmZXhlYyk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzk3LDggKzgwNiwxMCBAQCBBTFdBWVNf
SU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2UoCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIHJlcGxhY2UoCiAgICAgVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIHNlYXJjaFZhbHVlLCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtODQxLDYgKzg1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgLy8gQWxzbyB1c2VkIGZvciB2
YWx1ZU9mLgogCkBAIC04NTAsMTQgKzg2NCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhTdHJpbmdPYmplY3Q6
OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmdPYmplY3Qo
dGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJB
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgSlNTdHJpbmc6OlNh
ZmVWaWV3IHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkp
IHsKQEAgLTg3NCw5ICs4OTEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0No
YXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIEpTU3Ry
aW5nOjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhl
Yyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJ
bnQzMigpKSB7CkBAIC05MDMsOSArOTIzLDEyIEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIzMiBjb2Rl
UG9pbnRBdChjb25zdCAKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAK
ICAgICBTdHJpbmcgc3RyaW5nID0gdGhpc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKQEAgLTkyOSwyMCArOTUyLDI2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBhc1N0cmluZyh0
aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSkpOwog
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Z0Zyb21Bcmd1bWVudHMoZXhlYywgdGhpc1ZhbHVlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYyk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAg
ICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtOTc3LDkgKzEwMDYsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQoMSk7CkBAIC0xMDE0LDkgKzEw
NDYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTIwMSw5
ICsxMjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIHVuc2lnbmVkIGxlbjsKICAgICBK
U1N0cmluZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwpAQCAtMTI1Nyw5ICsx
Mjk1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmkKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgSlNTdHJpbmcqIGpzU3RyaW5n
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTEyOTcsOSArMTMzOCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
VG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIEpT
U3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFN0cmlu
ZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmluZyBsb3dlcmNhc2VkU3RyaW5nID0g
cy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7CkBAIC0xMzEwLDkgKzEzNTQsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvVXBwZXJDYXNlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVj
KTsKICAgICBTdHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0
aG91dExvY2FsZSgpOwpAQCAtMTMyMyw5ICsxMzcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBl
eGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0MCwxMCArMTM5MCwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAjaWYgRU5BQkxFKElOVEwpCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUsIGludDMyX3Qg
KCpjb252ZXJ0Q2FzZSkoVUNoYXIqLCBpbnQzMl90LCBjb25zdCBVQ2hhciosIGludDMyX3QsIGNv
bnN0IGNoYXIqLCBVRXJyb3JDb2RlKikpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyAxLiBMZXQgTyBi
ZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7CiAKICAgICAv
LyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1
ZS50b1N0cmluZyhzdGF0ZSk7CkBAIC0xNDExLDEwICsxNDY0LDEwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1MKICAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIo
cmVzdWx0TGVuZ3RoKTsKICAgICAgICAgY29udmVydENhc2UoYnVmZmVyLmRhdGEoKSwgcmVzdWx0
TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2aWV3TGVuZ3RoLCB1dGY4TG9j
YWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShlcnJvcikp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdV9lcnJvck5hbWUo
ZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IHN0YXRlLCB1X2Vycm9yTmFtZShlcnJvcikpOwogICAgICAgICBsb3dlciA9IFN0cmluZyhidWZm
ZXIuZGF0YSgpLCByZXN1bHRMZW5ndGgpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7
CiAKICAgICAvLyAxOC4gUmV0dXJuIEwuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhzdGF0ZSwgbG93ZXIpKTsKQEAgLTE0MzgsOSArMTQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ0OSw5ICsxNTA1LDEyIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNTbWFsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwg
ZXhlYyk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NjAsOSArMTUxOSwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
Y2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDcxLDkgKzE1MzMsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0JvbGQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93
U2NvcGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDgyLDkgKzE1NDcsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZpeGVkKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5Myw5ICsxNTYxLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUwNCw5ICsx
NTc1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTE1
LDkgKzE1ODksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1ND
T1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1
MjYsOSArMTYwMywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3VwKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MTUzNyw5ICsxNjE3LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250Y29s
b3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1Zh
bHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIFN0cmluZyBzID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNTUzLDkgKzE2MzYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBTdHJp
bmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTYwNSw5ICsxNjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xNjIxLDkgKzE3MTAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNjY3LDggKzE3NTksMTEgQEAgZW51bSB7CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSB0cmltU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlz
VmFsdWUsIGludCB0cmltS2luZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICBT
dHJpbmcgc3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpA
QCAtMTcyMCwyMSArMTgxNSwyMyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1
bmNhdGVUCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Rh
cnRzV2l0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBTdHJp
bmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHBy
ZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdF
eHAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdF
eHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTc1NiwyMSArMTg1
MywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhw
KHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24p
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJp
bmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5n
LnByb3RvdHlwZS5lbmRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBz
ZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTgwOCwyMSArMTkwNywyMyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUs
IGV4ZWMpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFs
dWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CiAgICAg
aWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVz
IGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBj
YW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtMTg1NSw0MiArMTk1Niw1MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0
aW5TdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRl
cmF0b3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVUNoYXIqIHNv
dXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgVU5vcm1hbGl6YXRpb25Nb2RlIGZvcm0pCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGludDMy
X3Qgbm9ybWFsaXplZFN0cmluZ0xlbmd0aCA9IHVub3JtX25vcm1hbGl6ZShzb3VyY2UsIHNvdXJj
ZUxlbmd0aCwgZm9ybSwgMCwgbnVsbHB0ciwgMCwgJnN0YXR1cyk7CiAKICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykgJiYgc3RhdHVzICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CiAgICAg
ICAgIC8vIFRoZSBiZWhhdmlvciBpcyBub3Qgc3BlY2lmaWVkIHdoZW4gbm9ybWFsaXplIGZhaWxz
LgogICAgICAgICAvLyBOb3cgd2UgdGhyb3cgYSB0eXBlIGVyb3JyIHNpbmNlIGl0IHNlZW1zIHRo
YXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgYXJlIGludmFsaWQuCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMpOwogICAgIH0KIAogICAgIFVDaGFyKiBidWZmZXIgPSBudWxscHRyOwog
ICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQobm9ybWFs
aXplZFN0cmluZ0xlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAgICAgdW5vcm1fbm9ybWFsaXplKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBmb3JtLCAwLCBi
dWZmZXIsIG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICByZXR1cm4g
anNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjKTsKICAgICBKU1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE5
MTEsNyArMjAyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
ICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAgICAgICBmb3Jt
ID0gVU5PUk1fTkZLRDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnQg
ZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlv
biBmb3JtIikpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6
ZShleGVjLCBzb3VyY2UuZ2V0KCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHNvdXJjZS5sZW5n
dGgoKSwgZm9ybSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAxMS0yMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTI4LDcgKzI4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTVmFs
dWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IoKQogewot
ICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHRocm93U2NvcGUsIG1f
ZXhlYyk7CiB9CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmco
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTg3LDcgKzg3LDkgQEAgSlNPYmplY3QqIFN5bWJvbDo6dG9PYmplY3QoRXhlY1N0
YXRlKiBleAogCiBkb3VibGUgU3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVy
dCBhIHN5bWJvbCB0byBhIG51bWJlciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworICAgIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8g
YSBudW1iZXIiKSk7CiAgICAgcmV0dXJuIDAuMDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0xMTAsMTYgKzExMCwxOSBAQCBjb25zdCBjaGFyKiBTeW1ib2xLZXlGb3JU
eXBlRXJyb3IgPSAiU3ltCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sQ29u
c3RydWN0b3JLZXlGb3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVl
IHN5bWJvbFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5p
c1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIFN5bWJvbEtleUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIFN5bWJvbEtleUZvclR5cGVF
cnJvcikpOwogCiAgICAgU3ltYm9sSW1wbCogdWlkID0gYXNTeW1ib2woc3ltYm9sVmFsdWUpLT5w
cml2YXRlTmFtZSgpLnVpZCgpOwogICAgIGlmICghdWlkLT5zeW1ib2xSZWdpc3RyeSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgQVNTRVJU
KHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmZXhlYy0+dm0oKS5zeW1ib2xSZWdpc3RyeSgpKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGV4ZWMtPnZtKCkuc3lt
Ym9sUmVnaXN0cnkoKS5rZXlGb3JTeW1ib2woKnVpZCkpKTsKKyAgICBBU1NFUlQodWlkLT5zeW1i
b2xSZWdpc3RyeSgpID09ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHZtLnN5bWJvbFJlZ2lzdHJ5KCkua2V5Rm9yU3ltYm9s
KCp1aWQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC03MiwxNiArNzIsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFN5bWJvbFZhbHVlT2ZU
eXBlRXJybwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1Rv
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBTeW1ib2wqIHN5bWJvbCA9IG51bGxwdHI7CiAg
ICAgaWYgKHRoaXNWYWx1ZS5pc1N5bWJvbCgpKQogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbCh0
aGlzVmFsdWUpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgU3ltYm9sVG9TdHJp
bmdUeXBlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBKU09iamVjdCog
dGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmICghdGhpc09iamVj
dC0+aW5oZXJpdHMoU3ltYm9sT2JqZWN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3ltYm9sVG9TdHJp
bmdUeXBlRXJyb3IpOwogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbChqc0Nhc3Q8U3ltYm9sT2Jq
ZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiAgICAgfQogCkBAIC05MCwxNiAr
OTMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNTeW1ib2woKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgU3ltYm9sVmFsdWVPZlR5
cGVFcnJvcik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3Qg
PSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3lt
Ym9sT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rocm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKworI2luY2x1ZGUgIlRocm93U2NvcGVT
dGFjay5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAorI2lmIEVO
QUJMRShFWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FUSU9OKQorCituYW1lc3BhY2UgeworCitib29s
IHRyYWNlT24gPSBmYWxzZTsKKworfTsKKworLyoKKyAgICBUaHJvd1Njb3BlIHZlcmlmaWNhdGlv
biB3b3JrcyB0byBzaW11bGF0ZSBleGNlcHRpb24gdGhyb3dzIGFuZCBjYXRjaCBjYXNlcyB3aGVy
ZQorICAgIGV4Y2VwdGlvbiBjaGVja3MgYXJlIG1pc3NpbmcuIFRoaXMgaXMgaG93IGl0IHdvcmtz
OgorCisgMS4gV2hhdCBpcyBiZWluZyBjaGVja2VkPworCisgICAgVGhlIGdpc3Qgb2YgaXQgaXMg
dGhhdCBwb3RlbnRpYWwgdGhyb3cgc2l0ZXMgd2lsbCBzZXQgYSBmbGFnIHRvIGluZGljYXRlIHRo
YXQgYW4KKyAgICBleGNlcHRpb24gbWF5IGJlIHRocm93bi4KKworIDIuIEluc3RhbnRpYXRpbmcg
dGhlIFRocm93U2NvcGUuCisKKyAgICBCeSBjb252ZW50aW9uLCB0aGUgVGhyb3dTY29wZSBtdXN0
IGJlIGluc3RhbnRpYXRlZCBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbi4KKyAgICBUaGlzIGFs
bG93cyB0aGUgVGhyb3dTY29wZSB0byBjb3ZlciB0aHJvd3MgdGhhdCBtYXkgb2NjdXIgYW55d2hl
cmUgaW4gdGhlIGZ1bmN0aW9uLgorICAgIFRoZSBvbmx5IGxpbmVzIG9mIGNvZGUgdGhhdCBtYXkg
cHJlY2VlZCB0aGUgVGhyb3dTY29wZSBhcmUgY29kZSBuZWVkZWQgdG8gc2FmZWx5CisgICAgYXR0
YWluIHRoZSBWTSByZWZlcmVuY2UgbmVlZGVkIHRvIGluc3RhbnRpYXRlIHRoZSBUaHJvd1Njb3Bl
LgorCisgICAgVG8gaW5zdGFudGlhdGUgdGhlIFRocm93U2NvcGUsIHVzZSB0aGUgIE1BS0VfVEhS
T1dfU0NPUEUgbWFjcm8uIFRoZSBtYWNybyB3aWxsCisgICAgY2FwdHVyZSB0aGUgX19QUkVUVFlf
RlVOQ1RJT05fXyBuYW1lIG9mIHRoZSBvd25lciBmdW5jdGlvbiwgYW5kIHVzZSB0aGF0IHRvCisg
ICAgcmVjb25zdHJ1Y3QgdGhlIEMgc3RhY2sgdHJhY2UgZm9yIGlkZW50aWZ5aW5nIHRoZSBzb3Vy
Y2Ugb2YgdGhlIHRocm93IHRoYXQgaXMgbm90CisgICAgYmVpbmcgaGFuZGxlZC4KKworIDMuIEV2
ZXJ5IHRocm93IGhlbHBlciBmdW5jdGlvbiBtdXN0IHRha2UgYSBUaHJvd1Njb3BlLgorCisgICAg
VGhpcyBlbnN1cmVzIHRoYXQgd2UgY2FuIHNpbXVsYXRlIGEgdGhyb3cgZnJvbSB0aGUgZnVuY3Rp
b25zIHRoYXQgY2FsbCB0aG9zZSB0aHJvdworICAgIGhlbHBlcnMuIEl0IGlzIG5vdCBhZGVxdWF0
ZSB0byBqdXN0IHNldCB0aGUgbmVlZHNDaGVjayBmbGFnIGluIHRoZSBib3R0b20gZnVuY3Rpb24K
KyAgICB0aGF0IHRocm93cyB0aGUgZXhjZXB0aW9uLiBUaGlzIGlzIGJlY2F1c2UgdGhhdCBmdW5j
dGlvbiB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgbm90CisgICAgYmUgY2FsbGVkIGR1cmluZyB0aGUg
ZXhlY3V0aW9uIG9mIG5vcm1hbCB3b3JrIGxvYWRzLiBUbyBpbmNyZWFzZSBjb3ZlcmFnZSwgd2Ug
cmVseQorICAgIGluc3RlYWQgb24gdGhlIFRocm93U2NvcGUgKG5lY2Vzc2l0YXRlZCBieSB0aGUg
dGhyb3cgaGVscGVycykgdG8gc2V0IHRoZSBuZWVkc0NoZWNrCisgICAgZmxhZy4KKworIDQuIFRo
ZSBib3R0b20gdGhyb3cgZnVuY3Rpb24gbXVzdCBhbHNvIHNldCB0aGUgbmVlZHNDaGVjayBmbGFn
LgorCisgICAgQ29uc2lkZXIgdGhpcyBjYXNlOgorCisgICAgICAgIHZvaWQgZ29vKC4uLikKKyAg
ICAgICAgeworICAgICAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7Cisg
ICAgICAgICAgICAuLi4KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAg
ICAgeworICAgICAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAg
ICAgICAgICAuLi4KKyAgICAgICAgICAgIGlmICh4KQorICAgICAgICAgICAgICAgIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oLi4uKTsgLy8gKGEpIHRocm93cworCisgICAgICAgICAgICAvLyAo
YikgU2hvdWxkIGNoZWNrIGFuZCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBoZXJlIGJlZm9yZSBjYWxs
aW5nIGdvbygpOworCisgICAgICAgICAgICBnb28oKTsgLy8gKGMpIEV4cGVjdHMgbm8gcGVuZGlu
ZyBleGNlcHRpb25zLgorICAgICAgICB9CisKKyAgICBUaGUgVGhyb3dTY29wZSBpbiBmb28gd2ls
bCBoZWxwIGRldGVjdCB0aGUgY2FzZSB3aGVyZSBjYWxsZXJzIG9mIGZvbygpIGlzIG1pc3NpbmcK
KyAgICBhbiBleGNlcHRpb24gY2hlY2suIEl0IHdpbGwgbm90IGRldGVjdCB0aGUgbWlzc2luZyBj
aGVjayBhdCAoYikgZXZlbiBpZiBnb28oKQorICAgIGhhcyBhIFRocm93U2NvcGUuIFRvIGFsbG93
IHRoZSBUaHJvd1Njb3BlIGluIGdvbygpIHRvIGRldGVjdCB0aGUgbWlzc2luZyBjaGVjayBhdAor
ICAgIChiKSwgdGhlIGJvdHRvbSB0aHJvdyBmdW5jdGlvbiBuZWVkcyB0byBzZXQgdGhlIG5lZWRz
Q2hlY2sgZmxhZyBpLmUuIGluIChhKS4KKyovCisKK0pTX0VYUE9SVF9QUklWQVRFCitUaHJvd1Nj
b3BlOjpUaHJvd1Njb3BlKFZNJiB2bSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBj
aGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQorICAgIDogbV92bSh2bSkKKyAgICAsIG1fcHJldmlv
dXNTY29wZSh2bS5tX3RvcFRocm93U2NvcGUpCisgICAgLCBtX2Z1bmN0aW9uTmFtZShmdW5jdGlv
bk5hbWUpCisgICAgLCBtX2ZpbGUoZmlsZSkKKyAgICAsIG1fbGluZShsaW5lKQoreworICAgIGlm
ICh0cmFjZU9uKQorICAgICAgICBkYXRhTG9nKCJUaHJvd1Njb3BlIFsiLCBtX3ZtLm1fdGhyb3dT
Y29wZVN0YWNrLnNpemUoKSwgIl0gRW50ZXI6ICIsIG1fZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9m
aWxlLCAiOiIsIG1fbGluZSwgIlxuIik7CisKKyAgICBtX3ZtLm1fdGhyb3dTY29wZVN0YWNrLnB1
c2goVGhyb3dTY29wZVN0YWNrOjpFbnRyeShmdW5jdGlvbk5hbWUsIGZpbGUsIGxpbmUpKTsKKyAg
ICBtX3ZtLm1fdG9wVGhyb3dTY29wZSA9IHRoaXM7CisgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tO
ZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6U2NvcGVFbnRyeSk7Cit9CisKK0pTX0VYUE9SVF9QUklWQVRF
CitUaHJvd1Njb3BlOjp+VGhyb3dTY29wZSgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0u
bV90aHJvd1Njb3BlU3RhY2suaXNFbXB0eSgpKTsKKworICAgIHZlcmlmeUV4Y2VwdGlvbkNoZWNr
TmVlZElzU2F0aXNmaWVkKFNpdGU6OlNjb3BlRXhpdCk7CisKKyAgICBib29sIHdpbGxCZUhhbmRs
ZUJ5TExJbnRPckpJVCA9IGZhbHNlOworICAgIHZvaWQqIHByZXZpb3VzU2NvcGUgPSBtX3ByZXZp
b3VzU2NvcGU7CisgICAgdm9pZCogdG9wQ2FsbEZyYW1lID0gbV92bS50b3BDYWxsRnJhbWU7Cisg
ICAgCisgICAgLy8gSWYgdGhlIHRvcENhbGxGcmFtZSB3YXMgcHVzaGVkIG9uIHRoZSBzdGFjayBh
ZnRlciB0aGUgcHJldmlvdXNTY29wZSB3YXMgaW5zdGFudGlhdGVkLAorICAgIC8vIHRoZW4gdGhp
cyBWTUVudHJ5IHRocm93U2NvcGUgd2lsbCBiZSByZXR1cm5pbmcgdG8gTExJTlQgb3IgSklUIGNv
ZGUgdGhhdCBhbHdheXMgZG8KKyAgICAvLyBhbiBleGNlcHRpb24gY2hlY2suIEluIHRoYXQgY2Fz
ZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRocm93IGJlY2F1c2UgdGhlIExMSW50IGFuZCBKSVQKKyAg
ICAvLyB3aWxsIGJlIGNoZWNraW5nIGZvciB0aGUgZXhjZXB0aW9uIHRoZWlyIG93biB3YXkgaW5z
dGVhZCBvZiBjYWxsaW5nIHZtLmV4Y2VwdGlvbigpLgorICAgIGlmICh0b3BDYWxsRnJhbWUgJiYg
cHJldmlvdXNTY29wZSA+IHRvcENhbGxGcmFtZSkKKyAgICAgICAgd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAoIXdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCkK
KyAgICAgICAgc2ltdWxhdGVUaHJvdygpOworCisgICAgLy8gTWFrZSBzdXJlIHRvIGRvIHRoZSBy
ZXRocm93aW5nIGJlZm9yZSB3ZSBwb3AgdGhlIHNjb3BlLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUg
dGhyb3cKKyAgICAvLyBpcyBhdHRyaWJ1dGVkIHRvIHRoaXMgc2NvcGUgaW5zdGVhZCBvZiB0aGUg
cGFyZW50IHNjb3BlIHRoYXQgd2UncmUgcG9wcGluZyBiYWNrIHRvLgorICAgIG1fdm0ubV90b3BU
aHJvd1Njb3BlID0gbV9wcmV2aW91c1Njb3BlOworICAgIGF1dG8gZW50cnkgPSBtX3ZtLm1fdGhy
b3dTY29wZVN0YWNrLnBvcCgpOworICAgIFJFTEVBU0VfQVNTRVJUKGVudHJ5LmZ1bmN0aW9uTmFt
ZSA9PSBtX2Z1bmN0aW9uTmFtZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZW50cnkubGluZSA9PSBt
X2xpbmUpOworCisgICAgaWYgKHRyYWNlT24pCisgICAgICAgIGRhdGFMb2coIlRocm93U2NvcGUg
WyIsIG1fdm0ubV90aHJvd1Njb3BlU3RhY2suc2l6ZSgpLCAiXSBFeGl0OiAiLCBtX2Z1bmN0aW9u
TmFtZSwgIiBAICIsIG1fZmlsZSwgIjoiLCBtX2xpbmUsICh3aWxsQmVIYW5kbGVCeUxMSW50T3JK
SVQgPyAiIiA6ICIgd2l0aCByZXRocm93IiksICJcbiIpOworfQorCitKU19FWFBPUlRfUFJJVkFU
RQordm9pZCBUaHJvd1Njb3BlOjpzYXRpc2Z5RXhjZXB0aW9uQ2hlY2tOZWVkKGNvbnN0IFZNJiB2
bSkKK3sKKyAgICB2bS5tX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOworCisgICAgaWYgKHRy
YWNlT24pCisgICAgICAgIGRhdGFMb2coIlRocm93U2NvcGUgQ0hFQ0tFRCBleGNlcHRpb25cbiIp
OworfQorCisvL2Jvb2wgVGhyb3dTY29wZTo6aGFzRXhjZXB0aW9uKCkKKy8veworLy8gICAgbV92
bS5tX25lZWRFeGNlcHRpb25DaGVjayA9IGZhbHNlOyAvLyBUaGUgY2hlY2sgaGFzIGJlZW4gc2F0
aXNmaWVkLgorLy8gICAgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7CisvL30KKy8vCisvL2Jvb2wg
VGhyb3dTY29wZTo6Y2hlY2tBbmRDbGVhckV4Y2VwdGlvbigpCisvL3sKKy8vICAgIGJvb2wgaGFk
RXhjZXB0aW9uID0gbV92bS5leGNlcHRpb24oKTsKKy8vICAgIG1fdm0uY2xlYXJFeGNlcHRpb24o
KTsKKy8vICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKy8vCisvLyAgICBy
ZXR1cm4gaGFkRXhjZXB0aW9uOworLy99CisKK3ZvaWQgVGhyb3dTY29wZTo6c2ltdWxhdGVUaHJv
dygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV90aHJvd1Njb3BlU3RhY2suaXNFbXB0
eSgpKTsKKyAgICBtX3ZtLm1fc3RhY2tJbmRleEF0U2ltdWxhdGVkVGhyb3dQb2ludCA9IG1fdm0u
bV90aHJvd1Njb3BlU3RhY2subGFzdEVudHJ5SW5kZXgoKTsKKyAgICBtX3ZtLm1fbmVlZEV4Y2Vw
dGlvbkNoZWNrID0gdHJ1ZTsKK30KKwordm9pZCBUaHJvd1Njb3BlOjp2ZXJpZnlFeGNlcHRpb25D
aGVja05lZWRJc1NhdGlzZmllZChUaHJvd1Njb3BlOjpTaXRlIHNpdGUpCit7CisgICAgaWYgKFVO
TElLRUxZKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spKSB7CisgICAgICAgIHNpemVfdCB0aHJv
d0luZGV4ID0gbV92bS5tX3N0YWNrSW5kZXhBdFNpbXVsYXRlZFRocm93UG9pbnQ7CisgICAgICAg
IHNpemVfdCBmYWlsSW5kZXggPSBtX3ZtLm1fdGhyb3dTY29wZVN0YWNrLmxhc3RFbnRyeUluZGV4
KCk7CisgICAgICAgIGF1dG8gdGhyb3dQb2ludCA9IG1fdm0ubV90aHJvd1Njb3BlU3RhY2suZW50
cnlBdCh0aHJvd0luZGV4KTsKKyAgICAgICAgYXV0byBmYWlsUG9pbnQgPSBtX3ZtLm1fdGhyb3dT
Y29wZVN0YWNrLmxhc3RFbnRyeSgpOworCisgICAgICAgIGF1dG8gc2l0ZU5hbWUgPSBbXSAoU2l0
ZSBzaXRlKSAtPiBjb25zdCBjaGFyKiB7CisgICAgICAgICAgICBzd2l0Y2ggKHNpdGUpIHsKKyAg
ICAgICAgICAgIGNhc2UgU2l0ZTo6U2NvcGVFbnRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4g
IkVudHJ5IjsKKyAgICAgICAgICAgIGNhc2UgU2l0ZTo6U2NvcGVFeGl0OgorICAgICAgICAgICAg
ICAgIHJldHVybiAiRXhpdCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH07CisKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJGQUlMRUQgZXhjZXB0aW9uIGNo
ZWNrIHZlcmlmaWNhdGlvbjpcbiIKKyAgICAgICAgICAgICIgICAgU2ltdWxhdGVkIHRocm93IGZy
b20gVGhyb3dTY29wZSBbIiwgdGhyb3dJbmRleCwgIl06ICIsIHRocm93UG9pbnQuZnVuY3Rpb25O
YW1lLCAiIEAgIiwgdGhyb3dQb2ludC5maWxlLCAiOiIsIHRocm93UG9pbnQubGluZSwgIlxuIgor
ICAgICAgICAgICAgIiAgICBVbmhhbmRsZWQgYXQgVGhyb3dTY29wZSBbIiwgZmFpbEluZGV4LCAi
XSAiLCBzaXRlTmFtZShzaXRlKSwgIjogIiwgZmFpbFBvaW50LmZ1bmN0aW9uTmFtZSwgIiBAICIs
IGZhaWxQb2ludC5maWxlLCAiOiIsIGZhaWxQb2ludC5saW5lLCAiXG4iCisgICAgICAgICAgICAi
XG4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sp
OworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShFWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FU
SU9OKQorICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBFeGVjU3RhdGU7CitjbGFzcyBFeGNlcHRpb247CitjbGFzcyBKU09iamVjdDsKK2NsYXNz
IFZNOworCisjaWZuZGVmIEVOQUJMRV9FWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FUSU9OCisjZGVm
aW5lIEVOQUJMRV9FWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FUSU9OICghZGVmaW5lZChOREVCVUcp
KQorI2VuZGlmCisKK2NsYXNzIFRocm93U2NvcGUgeworcHVibGljOgorICAgIFRocm93U2NvcGUo
Vk0mLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIHVuc2lnbmVk
IGxpbmUpOworICAgIH5UaHJvd1Njb3BlKCk7CisKKyAgICBpbmxpbmUgdm9pZCB0aHJvd0V4Y2Vw
dGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBpbmxpbmUgSlNWYWx1ZSB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBpbmxpbmUgSlNPYmplY3QqIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKKyAgICBzdGF0aWMgdm9pZCBzYXRp
c2Z5RXhjZXB0aW9uQ2hlY2tOZWVkKGNvbnN0IFZNJik7CisvLyAgICBpbmxpbmUgYm9vbCBoYXNF
eGNlcHRpb24oKTsKKy8vICAgIGlubGluZSBib29sIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb24oKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYmIGZvcndhcmQoVCYmIHZhbHVlKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBjaGVjayhUIHZhbHVlKTsKKworcHJp
dmF0ZToKKyNpZiBFTkFCTEUoRVhDRVBUSU9OX0NIRUNLX1ZFUklGSUNBVElPTikKKyAgICB2b2lk
IHNpbXVsYXRlVGhyb3coKTsKKworICAgIGVudW0gY2xhc3MgU2l0ZSB7CisgICAgICAgIFNjb3Bl
RW50cnksCisgICAgICAgIFNjb3BlRXhpdAorICAgIH07CisgICAgdm9pZCB2ZXJpZnlFeGNlcHRp
b25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlKTsKKyNlbmRpZgorCisgICAgVk0mIG1fdm07Cisj
aWYgRU5BQkxFKEVYQ0VQVElPTl9DSEVDS19WRVJJRklDQVRJT04pCisgICAgVGhyb3dTY29wZSog
bV9wcmV2aW91c1Njb3BlOworICAgIGNvbnN0IGNoYXIqIG1fZnVuY3Rpb25OYW1lOworICAgIGNv
bnN0IGNoYXIqIG1fZmlsZTsKKyAgICB1bnNpZ25lZCBtX2xpbmU7CisjZW5kaWYKK307CisKKyNk
ZWZpbmUgTUFLRV9USFJPV19TQ09QRShuYW1lX18sIHZtX18pIFwKKyAgICBKU0M6OlRocm93U2Nv
cGUgbmFtZV9fKHZtX18sIF9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fKQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93
U2NvcGVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGhyb3dTY29wZUlubGluZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UaHJvd1Njb3BlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKyNpbmNsdWRlICJWTS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworI2lmIEVOQUJMRShFWENFUFRJT05fQ0hFQ0tfVkVSSUZJQ0FU
SU9OKQorCitpbmxpbmUgdm9pZCBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIC8vIEZJWE1FOiBDYWxsIHNpbXVs
YXRlVGhyb3coKSB0byBzZXQgdGhlIG5lZWRFeGNlcHRpb25DaGVjayBmbGFnIGhlcmUuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MgorICAgIG1f
dm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30KKworaW5saW5lIEpTVmFsdWUg
VGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9y
KQoreworICAgIC8vIEZJWE1FOiBDYWxsIHNpbXVsYXRlVGhyb3coKSB0byBzZXQgdGhlIG5lZWRF
eGNlcHRpb25DaGVjayBmbGFnIGhlcmUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MgorICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKTsKK30KKworaW5saW5lIEpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKK3sKKyAgICAvLyBGSVhNRTog
Q2FsbCBzaW11bGF0ZVRocm93KCkgdG8gc2V0IHRoZSBuZWVkRXhjZXB0aW9uQ2hlY2sgZmxhZyBo
ZXJlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEx
NzIKKyAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgVCYmIFRocm93U2NvcGU6OmZvcndhcmQoVCYmIHZh
bHVlKQoreworICAgIHNhdGlzZnlFeGNlcHRpb25DaGVja05lZWQobV92bSk7CisgICAgcmV0dXJu
IFdURk1vdmUodmFsdWUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFQgVGhy
b3dTY29wZTo6Y2hlY2soVCB2YWx1ZSkKK3sKKyAgICBzYXRpc2Z5RXhjZXB0aW9uQ2hlY2tOZWVk
KG1fdm0pOworICAgIHJldHVybiB2YWx1ZTsKK30KKworI2Vsc2UgLy8gRU5BQkxFKEVYQ0VQVElP
Tl9DSEVDS19WRVJJRklDQVRJT04pIGRpc2FibGVkCisKK2lubGluZSBUaHJvd1Njb3BlOjpUaHJv
d1Njb3BlKFZNJiB2bSwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCkKKyAgICA6
IG1fdm0odm0pCit7Cit9CisKK2lubGluZSBUaHJvd1Njb3BlOjp+VGhyb3dTY29wZSgpIHsgfQor
CitpbmxpbmUgdm9pZCBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0
aW9uKTsgfQoraW5saW5lIEpTVmFsdWUgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGVycm9yKTsgfQoraW5saW5lIEpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikgeyByZXR1cm4gbV92bS50aHJvd0V4
Y2VwdGlvbihleGVjLCBlcnJvcik7IH0KKworaW5saW5lIHZvaWQgVGhyb3dTY29wZTo6c2F0aXNm
eUV4Y2VwdGlvbkNoZWNrTmVlZChjb25zdCBWTSYpIHsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorVCYmIFRocm93U2NvcGU6OmZvcndhcmQoVCYmIHZhbHVlKSB7IHJldHVybiBXVEZNb3ZlKHZh
bHVlKTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1QgVGhyb3dTY29wZTo6Y2hlY2soVCB2YWx1
ZSkgeyByZXR1cm4gdmFsdWU7IH0KKworI2VuZGlmIC8vIEVOQUJMRShFWENFUFRJT05fQ0hFQ0tf
VkVSSUZJQ0FUSU9OKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVTdGFjay5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVTdGFjay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisjaWYgRU5BQkxFKEVYQ0VQVElPTl9DSEVDS19WRVJJRklDQVRJT04p
CisKK2NsYXNzIFRocm93U2NvcGVTdGFjayB7CitwdWJsaWM6CisgICAgc3RydWN0IEVudHJ5IHsK
KyAgICAgICAgRW50cnkoKSB7IH0KKyAgICAgICAgRW50cnkoY29uc3QgY2hhciogZnVuY3Rpb25O
YW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQorICAgICAgICAgICAgOiBmdW5j
dGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICAgICAgICAgLCBmaWxlKGZpbGUpCisgICAgICAg
ICAgICAsIGxpbmUobGluZSkKKyAgICAgICAgeyB9CisKKyAgICAgICAgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBjaGFyKiBmaWxlIHsgbnVsbHB0
ciB9OworICAgICAgICB1bnNpZ25lZCBsaW5lIHsgMCB9OworICAgIH07CisKKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtYmVyT2ZFbnRyaWVzOyB9CisgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbnVtYmVyT2ZFbnRyaWVzOyB9CisKKyAgICBFbnRyeSBl
bnRyeUF0KHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbaW5k
ZXhdOworICAgIH0KKworICAgIEVudHJ5IGxhc3RFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGVudHJ5
QXQobGFzdEVudHJ5SW5kZXgoKSk7IH0KKyAgICBzaXplX3QgbGFzdEVudHJ5SW5kZXgoKSBjb25z
dAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkVudHJpZXMgPiAwKTsK
KyAgICAgICAgcmV0dXJuIG1fbnVtYmVyT2ZFbnRyaWVzIC0gMTsKKyAgICB9CisKKyAgICBzaXpl
X3QgcHVzaChFbnRyeSBlbnRyeSkKKyAgICB7CisgICAgICAgIHNpemVfdCBpbmRleCA9IG1fbnVt
YmVyT2ZFbnRyaWVzKys7CisgICAgICAgIGlmIChtX251bWJlck9mRW50cmllcyA+IG1fZW50cmll
cy5zaXplKCkpCisgICAgICAgICAgICBtX2VudHJpZXMuZ3JvdyhtX251bWJlck9mRW50cmllcyk7
CisgICAgICAgIG1fZW50cmllc1tpbmRleF0gPSBlbnRyeTsKKyAgICAgICAgcmV0dXJuIGluZGV4
OworICAgIH0KKyAgICBFbnRyeSBwb3AoKSB7IHJldHVybiBtX2VudHJpZXNbLS1tX251bWJlck9m
RW50cmllc107IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8RW50cnksIDUxMj4gbV9lbnRyaWVz
OworICAgIHNpemVfdCBtX251bWJlck9mRW50cmllcyB7IDAgfTsKK307CisKKyNlbmRpZiAvLyBF
TkFCTEUoRVhDRVBUSU9OX0NIRUNLX1ZFUklGSUNBVElPTikKKworfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIwNDg3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNpbmNsdWRlICJTb3VyY2VD
b2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZVN0YWNrLmgi
CiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCkBAIC00NDMsMTYgKzQ0NCwxNiBA
QCBwdWJsaWM6CiAKICAgICBFeGVjU3RhdGUqKiBhZGRyZXNzT2ZDYWxsRnJhbWVGb3JDYXRjaCgp
IHsgcmV0dXJuICZjYWxsRnJhbWVGb3JDYXRjaDsgfQogCi0gICAgRXhjZXB0aW9uKiBleGNlcHRp
b24oKSBjb25zdCB7IHJldHVybiBtX2V4Y2VwdGlvbjsgfQorICAgIEV4Y2VwdGlvbiogZXhjZXB0
aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIFRocm93U2NvcGU6OnNhdGlzZnlFeGNlcHRpb25D
aGVja05lZWQoKnRoaXMpOworICAgICAgICByZXR1cm4gbV9leGNlcHRpb247CisgICAgfQogICAg
IEpTQ2VsbCoqIGFkZHJlc3NPZkV4Y2VwdGlvbigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
SlNDZWxsKio+KCZtX2V4Y2VwdGlvbik7IH0KIAogICAgIEV4Y2VwdGlvbiogbGFzdEV4Y2VwdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV4Y2VwdGlvbjsgfQogICAgIEpTQ2VsbCoqIGFkZHJl
c3NPZkxhc3RFeGNlcHRpb24oKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEpTQ2VsbCoqPigm
bV9sYXN0RXhjZXB0aW9uKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCop
OwotCiAgICAgdm9pZCBzZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpIHsgbV9mYWlsTmV4dE5ld0Nv
ZGVCbG9jayA9IHRydWU7IH0KICAgICBib29sIGdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxv
Y2soKQogICAgIHsKQEAgLTY0NCw3ICs2NDUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9sYXN0
RXhjZXB0aW9uID0gZXhjZXB0aW9uOwogICAgIH0KIAotI2lmICFFTkFCTEUoSklUKSAgICAKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2Vw
dGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKKyNpZiAhRU5BQkxFKEpJVCkKICAg
ICBib29sIGVuc3VyZVN0YWNrQ2FwYWNpdHlGb3JDTG9vcChSZWdpc3RlciogbmV3VG9wT2ZTdGFj
ayk7CiAgICAgYm9vbCBpc1NhZmVUb1JlY3Vyc2VTb2Z0Q0xvb3AoKSBjb25zdDsKICNlbmRpZiAv
LyAhRU5BQkxFKEpJVCkKQEAgLTY3Myw2ICs2NzgsMTMgQEAgcHJpdmF0ZToKIAogICAgIEV4Y2Vw
dGlvbiogbV9leGNlcHRpb24geyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNl
cHRpb24geyBudWxscHRyIH07CisjaWYgRU5BQkxFKEVYQ0VQVElPTl9DSEVDS19WRVJJRklDQVRJ
T04pCisgICAgVGhyb3dTY29wZVN0YWNrIG1fdGhyb3dTY29wZVN0YWNrOworICAgIFRocm93U2Nv
cGUqIG1fdG9wVGhyb3dTY29wZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBtX3N0YWNrSW5k
ZXhBdFNpbXVsYXRlZFRocm93UG9pbnQgeyAwIH07CisgICAgbXV0YWJsZSBib29sIG1fbmVlZEV4
Y2VwdGlvbkNoZWNrIHsgZmFsc2UgfTsKKyNlbmRpZgorCiAgICAgYm9vbCBtX2ZhaWxOZXh0TmV3
Q29kZUJsb2NrIHsgZmFsc2UgfTsKICAgICBEZWxldGVQcm9wZXJ0eU1vZGUgbV9kZWxldGVQcm9w
ZXJ0eU1vZGUgeyBEZWxldGVQcm9wZXJ0eU1vZGU6OkRlZmF1bHQgfTsKICAgICBib29sIG1fZ2xv
YmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3cgeyB0cnVlIH07CkBAIC02OTUsNiArNzA3
LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dDaGlja2Vu
PiBtX3NoYWRvd0NoaWNrZW47CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk+IG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsKKworICAgIGZyaWVuZCBjbGFz
cyBUaHJvd1Njb3BlOwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMSArNDYsMTYgQEAg
dm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKAogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFrTWFwIikpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJXZWFrTWFwIikpOwogfQogCiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFrTWFwKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50
ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVj
dHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBT
dHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjcsMTEgKzcy
LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxs
RGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
KTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGlmICghbmV4dEl0
ZW0uaXNPYmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9X
ZWFrTWFwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTUsMTUgKzU1LDE4IEBAIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24oVk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFT
Q0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0
ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKEpTV2Vha01hcCogd2Vha01hcCA9IGpz
RHluYW1pY0Nhc3Q8SlNXZWFrTWFwKj4odmFsdWUpKQogICAgICAgICByZXR1cm4gd2Vha01hcC0+
d2Vha01hcERhdGEoKTsKIAotICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
IikpOworICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
IikpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC05OCwxMyArMTAxLDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2UKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogewor
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtN
YXAiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcCIpKSk7CisgICAgbWFw
LT5zZXQodm0sIGFzT2JqZWN0KGtleSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTEgKzQ2LDE2
IEBAIHZvaWQgV2Vha1NldENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbigKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtTZXQoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiV2Vha1NldCIpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiV2Vha1NldCIpKTsKIH0KIAogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBh
c0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBT
dHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJj
bGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFr
U2V0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTY3LDcg
KzcyLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENh
bGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERh
dGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4
ZWMpKTsKIAogICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtTZXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTUzLDE1ICs1MywxOCBAQCB2b2lkIFdlYWtTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNCiAKIHN0YXRpYyBXZWFrTWFwRGF0YSogZ2V0V2Vha01hcERhdGEoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCF2YWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxp
dGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChKU1dlYWtTZXQqIHdlYWtTZXQgPSBq
c0R5bmFtaWNDYXN0PEpTV2Vha1NldCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHdlYWtTZXQt
PndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVND
SUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVj
dCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBjYWxsRnJhbWUsIFdURjo6QVND
SUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVj
dCIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODUsMTMgKzg4LDE2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2UKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKENhbGxGcmFtZSogY2FsbEZyYW1lKQogewor
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtT
ZXQiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwganNV
bmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVkIHRv
IGFkZCBhIG5vbi1vYmplY3Qga2V5IHRvIGEgV2Vha1NldCIpKSk7CisgICAgbWFwLT5zZXQodm0s
IGFzT2JqZWN0KGtleSksIGpzVW5kZWZpbmVkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNz
aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9u
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAi
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsICJBcHBsZVBh
eVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIpKTsKIAogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNBcHBsZVBheVNlc3Npb246Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1F
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHVpbnQxNl90IHN0YXR1
cyA9IGNvbnZlcnQ8dWludDE2X3Q+KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC03MCwxNSArNzMsMTggQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6
Y29tcGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNz
aW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24i
LCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCAiQXBw
bGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uIikpOwogCiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lv
bjo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dWTUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdWludDE2X3Qg
c3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBOb3Jt
YWxDb252ZXJzaW9uKTsKQEAgLTEwNCwxNSArMTEwLDE4IEBAIEpTVmFsdWUgSlNBcHBsZVBheVNl
c3Npb246OmNvbXBsZXRlU2hpcHAKIAogSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CiAgICAgSlNBcHBsZVBh
eVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIkFwcGxlUGF5U2Vz
c2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCAi
QXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbiIpKTsKIAog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNBcHBsZVBheVNlc3Np
b246OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRo
cm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIERpY3Rpb25h
cnkgbmV3VG90YWwgPSB7ICZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTYgKzQ2LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U0F1ZGlvQ29udGV4dChFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgRE9NQ29uc3Ry
dWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3Qq
PihleGVjLmNhbGxlZSgpKTsKICAgICBpZiAoIWpzQ29uc3RydWN0b3IpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZleGVjLCAiQXVkaW9D
b250ZXh0IGNvbnN0cnVjdG9yIGNhbGxlZSBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
JmV4ZWMsICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3IgY2FsbGVlIGlzIHVuYXZhaWxhYmxlIikp
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9
IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKCZleGVjLCAiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIHNjcmlw
dCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJmV4ZWMs
ICJBdWRpb0NvbnRleHQgY29uc3RydWN0b3Igc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVu
YXZhaWxhYmxlIikpOwogCiAgICAgaWYgKCFpczxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSZWZlcmVu
Y2VFcnJvcigmZXhlYywgIkF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciBjYWxsZWQgaW4gYSBzY3Jp
cHQgZXhlY3V0aW9uIGNvbnRleHQgd2hpY2ggaXMgbm90IGEgZG9jdW1lbnQiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKCZleGVjLCAiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNhbGxlZCBpbiBhIHNjcmlwdCBl
eGVjdXRpb24gY29udGV4dCB3aGljaCBpcyBub3QgYSBkb2N1bWVudCIpKTsKIAogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CiAKQEAgLTcwLDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKUwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghYXVkaW9Db250ZXh0LmdldCgpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoJmV4ZWMsICJhdWRp
byByZXNvdXJjZXMgdW5hdmFpbGFibGUgZm9yIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3Rpb24iKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBjcmVh
dGVTeW50YXhFcnJvcigmZXhlYywgImF1ZGlvIHJlc291cmNlcyB1bmF2YWlsYWJsZSBmb3IgQXVk
aW9Db250ZXh0IGNvbnN0cnVjdGlvbiIpKTsKICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShMRUdB
Q1lfV0VCX0FVRElPKQogICAgICAgICAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAocmVuZGVy
LXRhcmdldCkgQXVkaW9Db250ZXh0IHdoaWNoIHJlbmRlcnMgaW50byBhbiBBdWRpb0J1ZmZlci4K
QEAgLTc4LDM1ICs4MSwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTCiAgICAgICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIEFTQ0lJTGl0ZXJhbCgiRGVwcmVjYXRlZCBBdWRpb0Nv
bnRleHQgY29uc3RydWN0b3I6IHVzZSBPZmZsaW5lQXVkaW9Db250ZXh0IGluc3RlYWQiKSk7CiAK
ICAgICAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVj
KSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOwogCiAgICAgICAgIGludDMyX3Qg
bnVtYmVyT2ZDaGFubmVscyA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmZXhl
Yyk7CiAgICAgICAgIGludDMyX3QgbnVtYmVyT2ZGcmFtZXMgPSBleGVjLnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW50MzIoJmV4ZWMpOwogICAgICAgICBmbG9hdCBzYW1wbGVSYXRlID0gZXhlYy51
bmNoZWNrZWRBcmd1bWVudCgyKS50b0Zsb2F0KCZleGVjKTsKIAogICAgICAgICBpZiAobnVtYmVy
T2ZDaGFubmVscyA8PSAwIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKCZleGVjLCAiSW52YWxp
ZCBudW1iZXIgb2YgY2hhbm5lbHMiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHRocm93U2NvcGUsICZleGVjLCBjcmVhdGVTeW50YXhFcnJvcigmZXhlYywgIkludmFsaWQgbnVt
YmVyIG9mIGNoYW5uZWxzIikpOwogCiAgICAgICAgIGlmIChudW1iZXJPZkZyYW1lcyA8PSAwKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlU3ludGF4RXJyb3Io
JmV4ZWMsICJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMiKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBjcmVhdGVTeW50YXhFcnJvcigmZXhlYywg
IkludmFsaWQgbnVtYmVyIG9mIGZyYW1lcyIpKTsKIAogICAgICAgICBpZiAoc2FtcGxlUmF0ZSA8
PSAwKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoJmV4ZWMsICJJbnZhbGlkIHNhbXBsZSByYXRlIikpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoJmV4ZWMs
ICJJbnZhbGlkIHNhbXBsZSByYXRlIikpOwogCiAKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgICAgIGF1ZGlvQ29udGV4dCA9IE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShk
b2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUsIGVj
KTsKICAgICAgICAgaWYgKGVjKSB7CiAgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJmV4ZWMs
IGVjKTsKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVN5bnRh
eEVycm9yKCZleGVjLCAiRXJyb3IgY3JlYXRpbmcgT2ZmbGluZUF1ZGlvQ29udGV4dCIpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZVN5
bnRheEVycm9yKCZleGVjLCAiRXJyb3IgY3JlYXRpbmcgT2ZmbGluZUF1ZGlvQ29udGV4dCIpKTsK
ICAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoJmV4ZWMsICJJbGxlZ2FsIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRl
U3ludGF4RXJyb3IoJmV4ZWMsICJJbGxlZ2FsIEF1ZGlvQ29udGV4dCBjb25zdHJ1Y3RvciIpKTsK
ICNlbmRpZgogICAgIH0KIAogICAgIGlmICghYXVkaW9Db250ZXh0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmZXhlYywgIkVycm9yIGNy
ZWF0aW5nIEF1ZGlvQ29udGV4dCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJv
d1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJmV4ZWMsICJFcnJvciBjcmVhdGlu
ZyBBdWRpb0NvbnRleHQiKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9E
T01fV1JBUFBFUihqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQXVkaW9Db250ZXh0LCBh
dWRpb0NvbnRleHQucmVsZWFzZU5vbk51bGwoKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaXF1YWRGaWx0ZXJOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZp
bHRlck5vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDExICs0MCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgSlNCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogI2lmIEVOQUJMRShMRUdBQ1lfV0VC
X0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5
cGUgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwogICAgICAgICBpZiAoIXdyYXBwZWQoKS5zZXRU
eXBlKHR5cGUpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiSWxsZWdhbCBC
aXF1YWRGaWx0ZXJOb2RlIHR5cGUiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93
U2NvcGUsICZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU2LDcgKzYwLDcgQEAgdm9pZCBKU0JpcXVhZEZp
bHRlck5vZGU6OnNldFR5cGUoRXhlY1N0YQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgQmlxdWFkRmlsdGVyTm9kZSB0eXBlIik7Cisg
ICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCAiSWxsZWdhbCBCaXF1YWRGaWx0
ZXJOb2RlIHR5cGUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTYyLDEwICs2MywxMyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4
ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganND
b25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkp
OwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmZXhlYywgIkJsb2Ig
Y29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmZXhlYywgY3JlYXRlUmVmZXJlbmNl
RXJyb3IoJmV4ZWMsICJCbG9iIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5h
dmFpbGFibGUiKSk7CiAKICAgICBpZiAoIWV4ZWMuYXJndW1lbnRDb3VudCgpKSB7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBCbG9iLCBCbG9iOjpjcmVhdGUoKSkpOwpAQCAtODQsNyArODgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAgICAgICAgIEpTVmFs
dWUgYmxvYlByb3BlcnR5QmFnVmFsdWUgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogCiAg
ICAgICAgIGlmICghYmxvYlByb3BlcnR5QmFnVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBj
b25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3QiKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZleGVjLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRo
ZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3QiKTsKIAogICAgICAgICAvLyBHaXZl
biB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAg
ICAgIEpTT2JqZWN0KiBibG9iUHJvcGVydHlCYWdPYmplY3QgPSBibG9iUHJvcGVydHlCYWdWYWx1
ZS50b09iamVjdCgmZXhlYyk7CkBAIC05OSw3ICsxMDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICAgICAgaWYgKGNvbnRhaW5zRW5kaW5ncykgewog
ICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50IiAmJiBlbmRpbmdzICE9ICJu
YXRpdmUiKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCAi
VGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwi
bmF0aXZlXCIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCAmZXhlYywgIlRoZSBlbmRpbmdzIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIFwidHJh
bnNwYXJlbnRcIiBvciBcIm5hdGl2ZVwiIik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBBdHRl
bXB0IHRvIGdldCB0aGUgdHlwZSBwcm9wZXJ0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNDgsOCArMzQ4LDExIEBAIGJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpw
dXREZWxlZ2F0ZSgKIAogSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgU3RyaW5nIHByb3Bl
cnR5TmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7
CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0
b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw5IEBAIGVu
dW0gY2xhc3MgSGFzaFJlcXVpcmVtZW50IHsKIAogYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rp
b25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyJiBhbGdvcml0aG1JZGVudGlmaWVyKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICAvLyB0eXBlZGVmIChBbGdvcml0aG0gb3IgRE9NU3RyaW5nKSBBbGdvcml0
aG1JZGVudGlmaWVyOwogCiAgICAgU3RyaW5nIGFsZ29yaXRobU5hbWU7CkBAIC04MSw3ICs4NCw3
IEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGcKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgaWYgKCFhbGdvcml0aG1OYW1lLmNvbnRhaW5zT25seUFTQ0lJKCkp
IHsKLSAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTeW50YXhF
cnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMTIyLDggKzEyNSwxMSBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3JpdGhtKEpTRGljdGlv
bmFyCiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVz
Q2JjUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNDAsNyArMTQ2LDcgQEAgc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogICAgIH0KIAogICAgIGlmIChpdkRhdGEuc2Vjb25k
ICE9IDE2KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgIkFFUy1DQkMgaW5pdGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVz
IikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsICJBRVMtQ0JDIGluaXRpYWxpemF0aW9uIGRhdGEgbXVzdCBiZSAxNiBieXRlcyIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNTEsOCArMTU3LDExIEBAIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVBZXNLZXlHZW5QYXJhbXMoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtMTY5LDggKzE3OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4g
Y3JlYXRlSG1hY1BhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODcsOCArMTk5LDExIEBAIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVIbWFjS2V5UGFyYW1zKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTIwOSw4ICsyMjQsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNy
ZWF0ZVJzYUtleUdlblBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRl
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzIsNyArMjUwLDcgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IHB1YmxpY0V4cG9uZW50QXJyYXkgPSB0b1VpbnQ4QXJyYXkocHVibGljRXhwb25l
bnRWYWx1ZSk7CiAgICAgaWYgKCFwdWJsaWNFeHBvbmVudEFycmF5KSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVu
dCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsICJFeHBlY3Rl
ZCBhIFVpbnQ4QXJyYXkgaW4gcHVibGljRXhwb25lbnQiKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIHJlc3VsdC0+cHVibGljRXhwb25lbnQuYXBwZW5kKHB1YmxpY0V4cG9u
ZW50QXJyYXktPmRhdGEoKSwgcHVibGljRXhwb25lbnRBcnJheS0+Ynl0ZUxlbmd0aCgpKTsKQEAg
LTI1MCw4ICsyNjgsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVJzYU9h
ZXBQYXJhbXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI4NCw4ICszMDUsMTEgQEAgc3RhdGljIFJlZlB0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgJnN0YXRlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCShyZXZpc2lv
biAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNywxMyArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBK
U1ZhbHVlIGJ1ZmZlciA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlcik7CiAgICAg
aWYgKCFhcnJheUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1
ZXMoYXJyYXlCdWZmZXJWaWV3LmdldCgpLCBlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJ
KHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVz
dWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTYxLDcgKzY0LDcgQEAg
c3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUgdmFs
dWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50aWZpZXIpOwogICAgIEFTU0VSVCghZXhlYy0+
aGFkRXhjZXB0aW9uKCkpOwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYW4gYXJyYXkgZm9y
IFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVzXCIg
SlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTcy
LDYgKzc1LDkgQEAgc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZQogCiBz
dGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBq
c29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7
CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CiAKQEAgLTg0LDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJv
bUpTT04oRXhlY1N0YXRlKgogICAgICAgICAvLyBDYW4gZ2V0IGFuIG91dCBvZiBtZW1vcnkgZXhj
ZXB0aW9uLgogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0
KCJFeHBlY3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBTdHJpbmc6OmZvcm1hdCgi
RXhwZWN0ZWQgYSBzdHJpbmcgdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTMsNiArOTksOSBAQCBzdGF0aWMgYm9v
bCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqCiAKIHN0YXRpYyBib29sIGdldEJvb2xlYW5G
cm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXks
IGJvb2wmIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90
KGpzb24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC0xMDIs
NyArMTExLDcgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZQogICAg
IEpTVmFsdWUganNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CiAgICAg
QVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFqc1ZhbHVlLmlzQm9vbGVh
bigpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVj
dGVkIGEgYm9vbGVhbiB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTIsMTcgKzEyMSwyMCBAQCBzdGF0aWMgYm9v
bCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdldEJpZ0ludGVn
ZXJWZWN0b3JGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBj
aGFyKiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJp
bmcgYmFzZTY0dXJsRW5jb2RlZE51bWJlcjsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKGV4
ZWMsIGpzb24sIGtleSwgYmFzZTY0dXJsRW5jb2RlZE51bWJlcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghYmFzZTY0VVJMRGVjb2RlKGJhc2U2NHVybEVuY29kZWROdW1iZXIs
IHJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
YW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBKV0siKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBi
YXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKHJlc3VsdFswXSA9PSAwKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXplIHRoZSBtaW5pbXVt
IG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdl
ciBtdXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQg
dGhlIHZhbHVlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsMTYg
KzE0NCwxOSBAQCBzdGF0aWMgYm9vbCBnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oCiBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYganNvblN0cmluZykKICAgICA6IG1fZXhlYyhleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGpzb25WYWx1ZSA9IEpTT05QYXJzZShleGVjLCBq
c29uU3RyaW5nKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghanNvblZhbHVlIHx8ICFqc29uVmFsdWUuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgSldLIHNlcmlh
bGl6YXRpb24iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fanNvbi5zZXQobV9leGVjLT52bSgpLCBhc09iamVjdChqc29uVmFs
dWUpKTsKKyAgICBtX2pzb24uc2V0KHZtLCBhc09iamVjdChqc29uVmFsdWUpKTsKIH0KIAogSlND
cnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKCkK
QEAgLTE2NSw2ICsxODAsOSBAQCBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
IGNyCiAKIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSogc3VnZ2VzdGVkQWxn
b3JpdGhtLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKiBzdWdnZXN0ZWRQYXJhbWV0ZXJzKSBj
b25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBt
X2pzb24uZ2V0KCksICJhbGciLCBtX2p3a0FsZ29yaXRobU5hbWUpKSB7CiAgICAgICAgIC8vIEFs
Z29yaXRobSBpcyBvcHRpb25hbCBpbiBKV0suCiAgICAgICAgIHJldHVybiBDcnlwdG9BbGdvcml0
aG1QYWlyIHsgc3VnZ2VzdGVkQWxnb3JpdGhtLCBzdWdnZXN0ZWRQYXJhbWV0ZXJzIH07CkBAIC0y
MTYsNyArMjM0LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQog
ICAgICAgICBhbGdvcml0aG0gPSBhbGdvcml0aG1SZWdpc3R5LmNyZWF0ZShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyOjpBRVNfS1cpOwogICAgICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5l
dyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKTsKICAgICB9IGVsc2UgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0Fs
Z29yaXRobU5hbWUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMs
ICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwogICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKQEAgLTI1NCw5ICsyNzIsMTIgQEAgT3B0aW9u
YWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQogCiBzdGF0aWMgYm9vbCB0cnlKV0tL
ZXlPcHNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIENyeXB0b0tleVVzYWdlJiB1c2FnZXMsIGNvbnN0
IFN0cmluZyYgb3BlcmF0aW9uLCBjb25zdCBTdHJpbmcmIHRyeU9wZXJhdGlvbiwgQ3J5cHRvS2V5
VXNhZ2UgdHJ5VXNhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChvcGVyYXRpb24gPT0gdHJ5T3Bl
cmF0aW9uKSB7CiAgICAgICAgIGlmICh1c2FnZXMgJiB0cnlVc2FnZSkgewotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250YWlucyBh
IGR1cGxpY2F0ZSBvcGVyYXRpb24iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGlj
YXRlIG9wZXJhdGlvbiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICB1c2FnZXMgfD0gdHJ5VXNhZ2U7CkBAIC0yNjYsNiArMjg3LDkgQEAgc3RhdGljIGJv
b2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRlKgogCiB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKENyeXB0b0tleVVzYWdlJiBzdWdnZXN0ZWRVc2Fn
ZXMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIE1BS0VfVEhST1df
U0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQ3J5cHRvS2V5VXNhZ2UgandrVXNhZ2VzID0g
MDsKIAogICAgIEpTQXJyYXkqIGtleU9wczsKQEAgLTI3NSw3ICsyOTksNyBAQCB2b2lkIEpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jCiAgICAgICAgICAgICBTdHJpbmcgb3BlcmF0
aW9uOwogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmdldFN0cmluZyhtX2V4ZWMsIG9wZXJhdGlv
bikpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sg
a2V5X29wcyBhdHRyaWJ1dGUgY291bGQgbm90IGJlIHByb2Nlc3NlZCIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpXSyBrZXlfb3BzIGF0dHJpYnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghdHJ5SldL
S2V5T3BzVmFsdWUobV9leGVjLCBqd2tVc2FnZXMsIG9wZXJhdGlvbiwgQVNDSUlMaXRlcmFsKCJz
aWduIiksIENyeXB0b0tleVVzYWdlU2lnbikpCkBAIC0zMTAsNyArMzM0LDcgQEAgdm9pZCBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uYwogICAgICAgICBlbHNlIGlmIChqd2tVc2VT
dHJpbmcgPT0gInNpZyIpCiAgICAgICAgICAgICBqd2tVc2FnZXMgfD0gKENyeXB0b0tleVVzYWdl
U2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBc
IiIgKyBqd2tVc2VTdHJpbmcgKyAiXCIiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsIG1fZXhlYywgIlVuc3VwcG9ydGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3
a1VzZVN0cmluZyArICJcIiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtMzYyLDIxICszODYsMjQgQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6
OmtleVNpegogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRTZXF1ZW5jZSgpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgU3RyaW5nIGtleUJhc2U2NFVSTDsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAiayIsIGtleUJhc2U2NFVSTCkpIHsKICAgICAgICAgaWYgKCFt
X2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVj
LCBBU0NJSUxpdGVyYWwoIlNlY3JldCBrZXkgZGF0YSBpcyBub3QgcHJlc2VudCBpcyBKV0siKSk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFTQ0lJTGl0
ZXJhbCgiU2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9jdGV0U2VxdWVu
Y2U7CiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoa2V5QmFzZTY0VVJMLCBvY3RldFNlcXVlbmNl
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNl
NjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG9jdGV0U2VxdWVuY2Uuc2l6ZSgpICogOCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZv
ciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgbV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0
aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zODUsMjQgKzQx
MiwyNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LCiAKIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6Omtl
eURhdGFSU0FDb21wb25lbnRzKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBWZWN0b3I8dWlu
dDhfdD4gbW9kdWx1czsKICAgICBWZWN0b3I8dWludDhfdD4gZXhwb25lbnQ7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHByaXZhdGVFeHBvbmVudDsKIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3Rv
ckZyb21KU09OKG1fZXhlYywgbV9qc29uLmdldCgpLCAibiIsIG1vZHVsdXMpKSB7CiAgICAgICAg
IGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3Np
bmciKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiblwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG1v
ZHVsdXMuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5
IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlk
IGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgaWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBtX2pz
b24uZ2V0KCksICJlIiwgZXhwb25lbnQpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFs
KCJSZXF1aXJlZCBKV0sgXCJlXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQg
SldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKQEAgLTQ1OCwyMiArNDg4LDIyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhPiBKU0NyeXB0b0sKICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKCFlbGVtZW50LmlzT2JqZWN0KCkp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sg
XCJvdGhcIiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKHRocm93U2NvcGUsIG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgXCJvdGhc
IiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21K
U09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJyIiwgaW5mby5wcmltZUZhY3RvcikpIHsK
ICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmltZSBm
YWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgZ2V0IHByaW1lIGZhY3RvciBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdl
dEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAiZCIs
IGluZm8uZmFjdG9yQ1JURXhwb25lbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBleHBvbmVudCBmb3IgYSBwcmltZSBpbiBc
Im90aFwiIGRpY3Rpb25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBleHBv
bmVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0
b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAidCIsIGluZm8uZmFjdG9yQ1JU
Q29lZmZpY2llbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkNh
bm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRp
Y3Rpb25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwg
bV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBm
b3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBvdGhlclByaW1lSW5mb3MuYXBwZW5kKGluZm8p
OwpAQCAtNDg0LDEwICs1MTQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpT
Q3J5cHRvSwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBTdHJpbmcg
andrS2V5VHlwZTsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1fZXhlYywgbV9qc29uLmdl
dCgpLCAia3R5IiwgandrS2V5VHlwZSkpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IlJlcXVpcmVkIEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVk
IEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTQ5Nyw3ICs1MzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5
RGF0YT4gSlNDcnlwdG9LCiAgICAgaWYgKGp3a0tleVR5cGUgPT0gIlJTQSIpCiAgICAgICAgIHJl
dHVybiBrZXlEYXRhUlNBQ29tcG9uZW50cygpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IobV9leGVj
LCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBlICIgKyBqd2tLZXlUeXBlKTsKKyAgICB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCBtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiAr
IGp3a0tleVR5cGUpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC01NjAsNiArNTkzLDkg
QEAgc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgdm9p
ZCBhZGRKV0tBbGdvcml0aG1Ub0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwg
Y29uc3QgQ3J5cHRvS2V5JiBrZXkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBqd2tBbGdvcml0
aG07CiAgICAgc3dpdGNoIChrZXkuYWxnb3JpdGhtSWRlbnRpZmllcigpKSB7CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpITUFDOgpAQCAtNjUyLDcgKzY4OCw3IEBAIHN0YXRp
YyB2b2lkIGFkZEpXS0FsZ29yaXRobVRvSlNPTihFeGVjU3QKIAogICAgIGlmIChqd2tBbGdvcml0
aG0uaXNOdWxsKCkpIHsKICAgICAgICAgLy8gVGhlIHNwZWMgZG9lc24ndCBjdXJyZW50bHkgdGVs
bCB3aGV0aGVyIGV4cG9ydCBzaG91bGQgZmFpbCwgb3IganVzdCBza2lwICJhbGciICh3aGljaCBp
cyBhbiBvcHRpb25hbCBrZXkgaW4gSldLKS4KLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5vdCBtYXAgdG8gYW55IEpX
SyBhbGdvcml0aG0gaWRlbnRpZmllciIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5vdCBt
YXAgdG8gYW55IEpXSyBhbGdvcml0aG0gaWRlbnRpZmllciIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNjg5LDEwICs3MjUsMTMgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9KU09O
KEV4ZWNTdGF0ZSogZQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJp
YWxpemUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IGtleURhdGEgPSBrZXkuZXhwb3J0
RGF0YSgpOwogICAgIGlmICgha2V5RGF0YSkgewogICAgICAgICAvLyBUaGlzIGdlbmVyYWxseSBz
aG91bGRuJ3QgaGFwcGVuIGFzIGxvbmcgYXMgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0
RGF0YSgpLCBidXQgYXMgdW5kZXJseWluZyBsaWJyYXJpZXMgcmV0dXJuIGVycm9ycywgdGhlcmUg
bWF5IGJlIHNvbWUgcmFyZSBmYWlsdXJlIGNvbmRpdGlvbnMuCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJD
b3VsZG4ndCBleHBvcnQga2V5IG1hdGVyaWFsIikpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAgICAgfQogCkBAIC03MTMsNyArNzUyLDcgQEAgU3RyaW5nIEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6c2VyaQogICAgIGVsc2UgaWYgKGlzPENyeXB0b0tleURhdGFSU0FDb21wb25lbnRz
Pigqa2V5RGF0YSkpCiAgICAgICAgIGJ1aWxkSlNPTkZvclJTQUNvbXBvbmVudHMoZXhlYywgZG93
bmNhc3Q8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KCprZXlEYXRhKSwgcmVzdWx0KTsKICAg
ICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJLZXkg
ZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtleSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJLZXkgZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtl
eSIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09w
ZXJhdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM2LDEyICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgY3J5cHRvT3Bl
cmF0aW9uRGF0YUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoQXJyYXlCdWZm
ZXIqIGJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIodmFsdWUpKQogICAgICAgICByZXN1bHQgPSBzdGQ6
Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXIt
PmJ5dGVMZW5ndGgoKSk7CiAgICAgZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVm
ZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNz
KCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5
QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFs
KCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFz
c2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMDksNyArMTA5LDkgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6OnVwZ3JhZGVFbAogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLSAgICBKU0xvY2tIb2xkZXIg
bG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOworICAgIFZNJiB2bSA9IG1faXNvbGF0ZWRXb3Js
ZC0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBpZiAoIW1fY29uc3RydWN0b3IpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
dXBncmFkZUVsCiAKICAgICBFbGVtZW50KiB3cmFwcGVkRWxlbWVudCA9IEpTRWxlbWVudDo6dG9X
cmFwcGVkKHJldHVybmVkRWxlbWVudCk7CiAgICAgaWYgKCF3cmFwcGVkRWxlbWVudCB8fCB3cmFw
cGVkRWxlbWVudCAhPSAmZWxlbWVudCkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KCpzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0byB1cGdyYWRlIGFu
IGVsZW1lbnQiKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcih0aHJvd1Njb3BlLCAq
c3RhdGUsICJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBmYWlsZWQgdG8gdXBncmFkZSBhbiBl
bGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd3JhcHBlZEVsZW1lbnQtPnNl
dEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxl
bWVudENhbGxiYWNrKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0JiBwcm90b3R5cGUsIGNvbnN0
IElkZW50aWZpZXImIGlkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJv
dG90eXBlLmdldCgmc3RhdGUsIGlkKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWNhbGxiYWNrLmlzRnVuY3Rpb24oKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20g
ZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJBIGN1c3RvbSBlbGVtZW50
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIHJldHVybiBjYWxsYmFjay5nZXRPYmplY3QoKTsKQEAgLTU2LDggKzU5LDEx
IEBAIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWMKIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI2RvbS1jdXN0b21lbGVtZW50cmVnaXN0cnktZGVmaW5lCiBK
U1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIp
KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dT
Y29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOwogCiAgICAgQXRvbWljU3RyaW5nIGxvY2FsTmFtZShzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT50b0F0b21pY1N0cmluZygmc3RhdGUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQpAQCAtNjUsNyArNzEsNyBAQCBK
U1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoCiAKICAgICBKU1ZhbHVlIGNv
bnN0cnVjdG9yVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBpZiAoIWNv
bnN0cnVjdG9yVmFsdWUuaXNDb25zdHJ1Y3RvcigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBh
IGNvbnN0cnVjdG9yIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNv
bnN0cnVjdG9yIikpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yVmFs
dWUuZ2V0T2JqZWN0KCk7CiAKICAgICAvLyBGSVhNRTogVGhyb3cgYSBUeXBlRXJyb3IgaWYgY29u
c3RydWN0b3IgZG9lc24ndCBpbmhlcml0IGZyb20gSFRNTEVsZW1lbnQuCkBAIC03NSwxMSArODEs
MTEgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogICAgIGNhc2Ug
Q3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dp
dGhCdWlsdGluTmFtZXM6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBv
ZiB0aGUgYnVpbHRpbiBlbGVtZW50cyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJy
b3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUg
Y2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOwogICAgIGNh
c2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKLSAgICAgICAg
cmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVt
ZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOworICAgICAgICByZXR1cm4gdGhyb3dT
eW50YXhFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1l
bnQgbmFtZSBtdXN0IGNvbnRhaW4gYSBoeXBoZW4iKSk7CiAgICAgY2FzZSBDdXN0b21FbGVtZW50
TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOgotICAgICAgICByZXR1cm4g
dGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFt
ZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNlIGxldHRlciIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U3ludGF4RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3Rv
bSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IENoZWNrIHJlLWVudHJhbmN5IGhlcmUuCkBAIC04NywyMSAr
OTMsMjAgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogCiAgICAg
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5JiByZWdpc3RyeSA9IHdyYXBwZWQoKTsKICAgICBpZiAocmVn
aXN0cnkuZmluZEludGVyZmFjZShsb2NhbE5hbWUpKSB7Ci0gICAgICAgIHRocm93Tm90U3VwcG9y
dGVkRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0
b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSIpKTsKKyAgICAgICAgdGhyb3dOb3RT
dXBwb3J0ZWRFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVm
aW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAocmVnaXN0cnku
Y29udGFpbnNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdGhyb3dOb3RTdXBw
b3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1
c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOworICAgICAgICB0aHJvd05vdFN1
cHBvcnRlZEVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWZp
bmUgbXVsdGlwbGUgY3VzdG9tIGVsZW1lbnRzIHdpdGggdGhlIHNhbWUgY2xhc3MiKSk7CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIGF1dG8mIHZtID0gZ2xvYmFs
T2JqZWN0KCktPnZtKCk7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGVWYWx1ZSA9IGNvbnN0cnVjdG9y
LT5nZXQoJnN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYg
KCFwcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJv
dG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yJ3MgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOwogICAgIEpTT2JqZWN0JiBw
cm90b3R5cGVPYmplY3QgPSAqYXNPYmplY3QocHJvdG90eXBlVmFsdWUpOwogCiAgICAgUXVhbGlm
aWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1lc3Bh
Y2VVUkkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMTggKzMzOCwyNCBAQCBKU1ZhbHVl
IGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4CiAKIHZvaWQgc2V0RE9NRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYg
KCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMp
KTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlv
bihleGVjLCBlYykpOwogfQogCiB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgaWYgKCFlYy5jb2RlIHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlv
bihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CisgICAgdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMuY29kZSwgZWMubWVzc2FnZSkp
OwogfQogCiAjdW5kZWYgVFJZX1RPX0NSRUFURV9FWENFUFRJT04KQEAgLTQzMCwxMyArNDM2LDE2
IEBAIHN0YXRpYyBTdHJpbmcgcmFuZ2VFcnJvclN0cmluZyhkb3VibGUgdmEKIAogc3RhdGljIGRv
dWJsZSBlbmZvcmNlUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgZG91YmxlIHgsIGRvdWJsZSBtaW5p
bXVtLCBkb3VibGUgbWF4aW11bSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkg
fHwgc3RkOjppc2luZih4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJhbmdl
RXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCAmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11
bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgeCA9IHRydW5jKHgpOwogICAgIGlm
ICh4IDwgbWluaW11bSB8fCB4ID4gbWF4aW11bSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWlu
aW11bSwgbWF4aW11bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIHg7
CkBAIC00NzUsNiArNDg0LDkgQEAgc3RydWN0IEludFR5cGVMaW1pdHM8dWludDE2X3Q+IHsKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Np
Z25lZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25s
eSBiZSB1c2VkIGZvciBzaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVkZWYgSW50
VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBzdGF0aWMgaW5s
aW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiAgICAgICAgIGNhc2UgTm9ybWFsQ29udmVy
c2lvbjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IGNhc2UgQ2xhbXA6CiAgICAgICAgICAgICByZXR1cm4gZCA8IExpbWl0c1RyYWl0OjptaW5WYWx1
ZSA/IExpbWl0c1RyYWl0OjptaW5WYWx1ZSA6IExpbWl0c1RyYWl0OjptYXhWYWx1ZTsKQEAgLTUy
MSw2ICs1MzMsOSBAQCBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0YXRpYyBpbmxpbmUgVCB0b1NtYWxsZXJVSW50KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dW5zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAiU2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVk
ZWYgSW50VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTUzMyw3ICs1NDgsNyBAQCBzdGF0
aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmCiAgICAgICAgIGNhc2UgTm9ybWFs
Q29udmVyc2lvbjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihkKTsKICAgICAg
ICAgY2FzZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENsYW1wOgogICAgICAgICAgICAgcmV0dXJu
IExpbWl0c1RyYWl0OjptYXhWYWx1ZTsKQEAgLTc5MSw5ICs4MDYsOSBAQCBib29sIEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUCiAgICAgcmV0dXJuIHRhcmdldCAmJiBjYW5BY2Nl
c3NEb2N1bWVudChzdGF0ZSwgJnRhcmdldC0+ZG9jdW1lbnQoKSk7CiB9CiAgICAgCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJvd1R5cGVF
cnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJnN0YXRlLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsICZzdGF0ZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5k
QXJndW1lbnRNdXN0QmUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWduZWQgYXJndW1lbnRJ
bmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCkBAIC04MjgsNzAgKzg0Myw3MCBAQCB2b2lkIHJl
cG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4CiAgICAgY29udGV4dC5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmlu
ZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIHNldCBwcm9wZXJ0eSAnIiwgYXR0cmlidXRlTmFtZSwg
Iicgb24gYSBub24tIiwgaW50ZXJmYWNlTmFtZSwgIiBvYmplY3QuIikpOwogfQogCi12b2lkIHRo
cm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKQordm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQogewog
ICAgIEFTU0VSVCghc3RhdGUuaGFkRXhjZXB0aW9uKCkpOwogICAgIFN0cmluZyBtZXNzYWdlU3Ry
aW5nKG1lc3NhZ2UpOwotICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVET01FeGNlcHRpb24oJnN0YXRlLCBOT1RfU1VQUE9SVEVEX0VSUiwgJm1lc3NhZ2VTdHJpbmcp
KTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZv
aWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNo
YXIqIG1lc3NhZ2UpCit2b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
CiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7CiAgICAgU3RyaW5nIG1lc3Nh
Z2VTdHJpbmcobWVzc2FnZSk7Ci0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSLCAmbWVzc2FnZVN0
cmluZykpOworICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVET01F
eGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3NhZ2VTdHJpbmcpKTsKIH0K
IAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJn
dW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCitKU0M6OkVuY29kZWRK
U1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNv
bnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShi
dWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFt
ZSwgZnVuY3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm9uZSBvZjogIik7
CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRWYWx1ZXMpOwotICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAK
LUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBh
cmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9u
RXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQogewogICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBh
cmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSk7
CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsK
IH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1l
bnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQorSlNDOjpFbmNvZGVkSlNWYWx1
ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBh
cmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCiB7CiAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3Vt
ZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5h
bWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYW4gaW5zdGFuY2Ugb2YgIik7CiAgICAg
YnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRUeXBlKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi12b2lkIHRo
cm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhy
b3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5
cGUiKSk7CiB9CiAKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit2b2lkIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VT
dHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmli
dXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7CisgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VO
YW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmlidXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ug
b2YgIiwgZXhwZWN0ZWRUeXBlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25z
dHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3Ry
dWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUpCiB7CiAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgY29uZnVzaW5nIGV4Y2VwdGlvbiB3b3JkaW5nLiBDYW4gd2Ug
cmV3b3JkIHRvIGJlIGNsZWFyZXIgYW5kIG1vcmUgc3BlY2lmaWM/Ci0gICAgcmV0dXJuIHRocm93
Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhp
bnRlcmZhY2VOYW1lLCAiIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFp
bGFibGUiKSkpOworICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBj
cmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNlTmFtZSwgIiBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpKTsKIH0KIAot
dm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQg
dGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBzdGF0ZSwgQVNDSUlMaXRlcmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsK
IH0KIAotdm9pZCB0aHJvd05vbkZpbml0ZVR5cGVFcnJvcihFeGVjU3RhdGUmIHN0YXRlKQordm9p
ZCB0aHJvd05vbkZpbml0ZVR5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIlRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlIikpOworICAgIHRocm93VHlwZUVy
cm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJUaGUgcHJvdmlkZWQgdmFsdWUg
aXMgbm9uLWZpbml0ZSIpKTsKIH0KIAogU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdl
KGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCkBA
IC04OTksMTQgKzkxNCwxNCBAQCBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29u
c3QgCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0
dHJpYnV0ZU5hbWUsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIs
IGludGVyZmFjZU5hbWUpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlLCBKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBtYWtlR2V0dGVyVHlw
ZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBtYWtlR2V0dGVyVHlwZUVycm9y
TWVzc2FnZShpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKSk7CiB9CiAKLWJvb2wgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQorYm9vbCB0aHJvd1NldHRlclR5cGVF
cnJvcihKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsK
LSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5h
bWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0
YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsIHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1
dGVOYW1lLCAiIHNldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRl
cmZhY2VOYW1lKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05MTUsOSArOTMwLDkgQEAg
U3RyaW5nIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShjb25zdCBjaAogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJDYW4gb25seSBjYWxsICIsIGludGVyZmFjZU5hbWUsICcuJywgZnVuY3Rpb25OYW1l
LCAiIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRlcmZhY2VOYW1lKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQorRW5jb2RlZEpTVmFsdWUg
dGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUpCiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlVGhpc1R5
cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3Nh
Z2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHZvaWQgY2FsbEZ1bmN0aW9u
V2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpAQCAtOTQyLDcgKzk1Nyw5
IEBAIHZvaWQgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVj
dG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisgICAgdGhyb3dUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAn
bmV3JyBvcGVyYXRvciIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJl
dmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMjMgKzExNSwyMyBAQCBET01XaW5kb3cmIGZpcnN0
RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlCiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1Zh
bHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKIAot
dm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciog
bWVzc2FnZSk7Ci12b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKLXZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1l
LCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1Nl
cXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHRo
cm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHRo
cm93Tm9uRmluaXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci0KLVdFQkNPUkVfRVhQT1JU
IEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25l
ZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKLVdFQkNPUkVf
RVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKTsKK3ZvaWQgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihK
U0M6OlRocm93U2NvcGUmLCBKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwor
dm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Cit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVy
cm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJik7Cit2b2lkIHRocm93QXR0cmli
dXRlVHlwZUVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciog
ZXhwZWN0ZWRUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJv
cihKU0M6OlRocm93U2NvcGUmLCBKU0M6OkV4ZWNTdGF0ZSYpOworV0VCQ09SRV9FWFBPUlQgYm9v
bCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmLCBKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwor
V0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd05vbkZpbml0ZVR5cGVFcnJvcihKU0M6OlRocm93U2Nv
cGUmLCBKU0M6OkV4ZWNTdGF0ZSYpOworCitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1Zh
bHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiwgSlNDOjpF
eGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5h
bWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcyk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6
RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnRO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoSlNDOjpUaHJvd1Njb3BlJiwgSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBh
cmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBl
eHBlY3RlZFR5cGUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yRG9jdW1l
bnRVbmF2YWlsYWJsZUVycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJiwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSk7CiAKIFN0cmluZyBtYWtlR2V0dGVyVHlwZUVycm9yTWVz
c2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1l
KTsKIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JF
X0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVy
cm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6
OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OlRocm93U2NvcGUmLCBKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSk7CiAKIFdFQkNPUkVfRVhQT1JUIEpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01T
dHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogV0VC
Q09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFs
T2JqZWN0JiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpAQCAtNDg2
LDkgKzQ4NiwxMiBAQCBpbmxpbmUgaW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWCiAv
LyBWYWxpZGF0ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVy
IHNlY3Rpb24gNC4xLjEzIG9mIHRoZSBXZWJJREwgc3BlYy4KIGlubGluZSBKU0M6OkpTT2JqZWN0
KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
dW5zaWduZWQmIGxlbmd0aCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpTQzo6SlNPYmplY3QqIG9i
amVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJy
b3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtNDk3LDcgKzUwMCw3IEBAIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlND
OjoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobGVuZ3RoVmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTcxNCwyNSArNzE3LDMzIEBAIHRlbXBsYXRl
PD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGRvdWIKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgSlNUPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6
RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0g
PSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVj
KTsKICAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWZQdHI8VD4+KCk7CiAgICAgfQogCiAgICAgVmVj
dG9yPFJlZlB0cjxUPj4gcmVzdWx0OwotICAgIGZvckVhY2hJbkl0ZXJhYmxlKCZleGVjLCB2YWx1
ZSwgWyZyZXN1bHRdKEpTQzo6Vk0mLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlKSB7CisgICAgZm9yRWFjaEluSXRlcmFibGUoJmV4ZWMsIHZhbHVlLCBbJnJlc3Vs
dF0oSlNDOjpWTSYgdm0sIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFs
dWUpIHsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAg
ICAgaWYgKGpzVmFsdWUuaW5oZXJpdHMoSlNUOjppbmZvKCkpKQogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChKU1Q6OnRvV3JhcHBlZChqc1ZhbHVlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpzdGF0ZSk7CisgICAgICAgICAgICB0aHJv
d0FycmF5RWxlbWVudFR5cGVFcnJvcih0aHJvd1Njb3BlLCAqc3RhdGUpOwogICAgIH0pOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05h
dGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dT
ZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcih0
aHJvd1Njb3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIFZlY3RvcjxUPigpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqICBDb3B5cmln
aHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTQ1LDcgKzQ2LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIklsbGVnYWwgY29uc3RydWN0b3IiKSk7CisgICAgICAgIEpTQzo6Vk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICAgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisgICAgICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgQVNDSUlMaXRl
cmFsKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIikpOwogICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVl
OjplbmNvZGUoSlNDOjpqc051bGwoKSk7CiAgICAgfQogCkBAIC0yMjYsOCArMjI5LDEwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkUKIAogdGVtcGxhdGU8dHlwZW5h
bWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNCdWlsdGluQ29uc3RydWN0
b3I8SlNDbGFzcz46OmNhbGxDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
SlNPYmplY3QqIG9iamVjdCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKHN0YXRl
LCBpbmZvKCktPmNsYXNzTmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9j
dW1lbnRVbmF2YWlsYWJsZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBpbmZvKCktPmNsYXNzTmFt
ZSk7CiAgICAgcmV0dXJuIGNhbGxDb25zdHJ1Y3RvcihzdGF0ZSwgKm9iamVjdCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCShyZXZpc2lvbiAy
MDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNzMsOSArNzMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5l
IEVuYWJsZUlmRmxvYQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IGlubGlu
ZSBUKiBjb252ZXJ0V3JhcHBlclR5cGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUgdmFsdWUsIElzTnVsbGFibGUgaXNOdWxsYWJsZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CiAgICAgVCog
b2JqZWN0ID0gSlNUOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmICghb2JqZWN0ICYmIChpc051
bGxhYmxlID09IElzTnVsbGFibGU6Ok5vIHx8ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSkK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0yNzUsOSAr
Mjc3LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252
ZXJ0ZXI8VD4gewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKKyAg
ICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKICAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLnRvTnVtYmVy
KCZzdGF0ZSk7CiAgICAgICAgIGlmIChhbGxvdyA9PSBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8g
JiYgVU5MSUtFTFkoIXN0ZDo6aXNmaW5pdGUobnVtYmVyKSkpCi0gICAgICAgICAgICB0aHJvd05v
bkZpbml0ZVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd05vbkZpbml0ZVR5cGVF
cnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihu
dW1iZXIpOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JdGVyYXRvci5oCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMxLDEyIEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JDcmVhdGUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBJdGVyYXRpb25LaW5kIGtpbmQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJv
d1Njb3BlLCB2bSk7CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNX
cmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5m
bygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUs
IHByb3BlcnR5TmFtZSk7CiAgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCA9ICp3
cmFwcGVyLT5nbG9iYWxPYmplY3QoKTsKICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUo
SlNET01JdGVyYXRvcjxKU1dyYXBwZXI+OjpjcmVhdGUoZ2xvYmFsT2JqZWN0LnZtKCksIGdldERP
TVN0cnVjdHVyZTxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4+KGdsb2JhbE9iamVjdC52bSgpLCBn
bG9iYWxPYmplY3QpLCAqd3JhcHBlciwga2luZCkpOwogfQpAQCAtMTgwLDkgKzE4NCwxMiBAQCBh
cHBlbmRGb3JFYWNoQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBzCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBKU1dyYXBwZXI+CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGl0ZXJhdG9yRm9yRWFjaChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0M6OlZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3Rh
dGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05h
bWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IodGhy
b3dTY29wZSwgc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFt
ZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgY2FsbGJhY2sgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAg
ICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUuYXJndW1lbnQoMSk7CkBAIC0xOTAsNyAr
MTk3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOgogICAgIEpT
Qzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6
Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlND
OjpDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsK
IAogICAgIGF1dG8gaXRlcmF0b3IgPSB3cmFwcGVyLT53cmFwcGVkKCkuY3JlYXRlSXRlcmF0b3Io
KTsKICAgICB3aGlsZSAoYXV0byB2YWx1ZSA9IGl0ZXJhdG9yLm5leHQoKSkgewpAQCAtMjI2LDkg
KzIzMywxMiBAQCBKU0M6OkpTVmFsdWUgSlNET01JdGVyYXRvcjxKU1dyYXBwZXI+OjpuCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBKU1dyYXBwZXI+CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNET01JdGVyYXRvclByb3RvdHlwZTxKU1dyYXBwZXI+OjpuZXh0KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNE
eW5hbWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkg
b24gYSBub24tSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAg
cmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yLT5uZXh0KCpzdGF0ZSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsOCArNDQwLDExIEBAIGlu
bGluZSBKU1ZhbHVlIERpYWxvZ0hhbmRsZXI6OnJldHVyblZhbHUKIAogSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6c2hvd01vZGFsRGlhbG9nKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IFN0cmluZyB1cmxTdHJpbmcgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
KCZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKQEAgLTQ2MSw4ICs0NjQsMTEgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2hvd01vZGFsRGlh
bG9nKEV4ZQogCiBzdGF0aWMgSlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShET01XaW5kb3cmIGlt
cGwsIEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIE1lc3NhZ2VQb3J0QXJyYXkg
bWVzc2FnZVBvcnRzOwogICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJzOwpAQCAtNTA4
LDggKzUxNCwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93Ojpwb3N0TWVzc2FnZShFeGVjU3RhCiAK
IEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwg
dm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kg
PSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5KTsKQEAgLTUzMCw4ICs1MzksMTEg
QEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdAogCiBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQo
KS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OSw5ICs0OSwxMiBAQCB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNEYXRhQ3VlKEV4ZWNT
dGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAg
IGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBkb3VibGUgc3RhcnRUaW1lKGV4ZWMudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9OdW1iZXIoJmV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy5o
YWRFeGNlcHRpb24oKSkpCkBAIC02MywxMyArNjYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRl
eHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVy
cm9yKGV4ZWMsICJEYXRhQ3VlIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9j
dW1lbnRVbmF2YWlsYWJsZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsICJEYXRhQ3VlIik7CiAKICAg
ICBTdHJpbmcgdHlwZTsKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBpZiAoZXhlYy5h
cmd1bWVudENvdW50KCkgPiAzKSB7CiAgICAgICAgIGlmICghZXhlYy51bmNoZWNrZWRBcmd1bWVu
dCgzKS5pc1N0cmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBu
b3Qgb2YgdHlwZSBTdHJpbmciKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNvbmQgYXJndW1lbnQgb2YgdGhl
IGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIFN0cmluZyIpKTsKICAgICAgICAgdHlwZSA9IGV4
ZWMudW5jaGVja2VkQXJndW1lbnQoMykuZ2V0U3RyaW5nKCZleGVjKTsKICAgICB9CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkocmV2
aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTc4LDkgKzE3OCwxMiBAQCB2b2lkIEpTRGljdGlvbmFyeTo6
Y29udmVydFZhbHVlKEV4ZWNTdGF0CiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPERPTVdpbmRvdz4mIHJlc3Vs
dCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIGF1dG8qIHdpbmRvdyA9IEpTRE9NV2luZG93Ojp0b1dyYXBw
ZWQoKnN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF3aW5kb3cpICYmICF2YWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsICJE
aWN0aW9uYXJ5IG1lbWJlciBpcyBub3Qgb2YgdHlwZSBXaW5kb3ciKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBv
ZiB0eXBlIFdpbmRvdyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlc3VsdCA9IHdp
bmRvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0x
MzAsMTIgKzEzMCwxNSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91
Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGF1dG8gdG91Y2hMaXN0
ID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Rh
dGUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgYXV0byogaXRlbSA9IEpTVG91Y2g6
OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghaXRl
bSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgaSwgInRvdWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0Iiwg
IlRvdWNoIikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBpLCAidG91Y2hlcyIsICJEb2N1bWVudCIs
ICJjcmVhdGVUb3VjaExpc3QiLCAiVG91Y2giKSk7CiAKICAgICAgICAgdG91Y2hMaXN0LT5hcHBl
bmQoKml0ZW0pOwogICAgIH0KQEAgLTE0NSw4ICsxNDgsMTEgQEAgSlNWYWx1ZSBKU0RvY3VtZW50
OjpjcmVhdGVUb3VjaExpc3QoRXhlYwogCiBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmdldENTU0NhbnZh
c0NvbnRleHQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgYXV0byBjb250
ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ZpbGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNCArNDIsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTRmlsZShFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgYXV0byogY29uc3RydWN0
b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoJmV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZleGVjLCAiRmlsZSBjb25zdHJ1Y3Rv
ciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHRocm93U2NvcGUsICZleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmZXhl
YywgIkZpbGUgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIp
KTsKIAogICAgIEpTVmFsdWUgYXJnID0gZXhlYy5hcmd1bWVudCgwKTsKICAgICBpZiAoYXJnLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVj
LCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBi
ZSBhIHZhbGlkIHNlcXVlbmNlLCB3YXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJSUxpdGVyYWwoIkZp
cnN0IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHNlcXVlbmNl
LCB3YXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5n
dGggPSAwOwogICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgYXJn
LCBibG9iUGFydHNMZW5ndGgpOwpAQCAtNTksNyArNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBhcmcgPSBleGVjLmFyZ3VtZW50KDEpOwogICAg
IGlmIChhcmcuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25kIGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3Ig
bXVzdCBiZSBhIHZhbGlkIHN0cmluZywgd2FzIHVuZGVmaW5lZCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vjb25k
IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHN0cmluZywgd2Fz
IHVuZGVmaW5lZCIpKTsKIAogICAgIFN0cmluZyBmaWxlbmFtZSA9IGFyZy50b1dURlN0cmluZygm
ZXhlYykucmVwbGFjZSgnLycsICc6Jyk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBA
IC03Miw3ICs3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMK
ICAgICBpZiAoIWFyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBm
aWxlUHJvcGVydHlCYWdPYmplY3QgPSBhcmcuZ2V0T2JqZWN0KCk7CiAgICAgICAgIGlmICghZmls
ZVByb3BlcnR5QmFnT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhpcmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIE9iamVjdCIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJSUxpdGVyYWwoIlRoaXJkIGFyZ3VtZW50IG9mIHRo
ZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3QiKSk7CiAKICAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBkaWN0aW9uYXJ5IHdyYXBwZXIgZnJvbSB0aGUgaW5pdGlhbGl6ZXIgb2JqZWN0Lgog
ICAgICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeSgmZXhlYywgZmlsZVByb3BlcnR5QmFnT2Jq
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTA0LDggKzEwNCwxMSBAQCBib29sIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlCiAKIEpTVmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3Vu
dCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChPcHRpb25hbDx1aW50
MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCphcmd1bWVudC5pbXBsKCkpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykg
Q28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTcxLDgg
KzcxLDExIEBAIHN0YXRpYyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1MKIAogSlNW
YWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmc3RhdGUpOwpAQCAtOTQsOCArOTcsMTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KAogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnBy
b2JhYmx5U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE1Miw2ICsxNTIsOSBAQCBzdGF0aWMgRG9jdW1lbnQqIGZpbmRDYWxsaW5nRG9j
dW1lbnQoRXhlCiAKIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBicm93
c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0aGUg
d2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7CiAgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKSkgewpAQCAtMTYxLDcgKzE2NCw3IEBA
IEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiAKICAgICAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlND
OjpjYWxsKCZzdGF0ZSwgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgd3JhcHBlciwgQXJn
TGlzdCgmc3RhdGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwyNyArNDIsMjkgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBhdXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2Jq
ZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rv
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVF
cnJvcihleGVjLCAiSFRNTEVsZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IodGhyb3dTY29wZSwgZXhlYywgIkhUTUxFbGVtZW50
Iik7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwog
CiAgICAgYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgaWYgKCF3aW5k
b3cpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwo
Im5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJ
SUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IiKSk7CiAKICAgICBhdXRvKiByZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJl
Z2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2YWxpZCBjdXN0
b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IodGhyb3dTY29wZSwgJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2
YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKICAgICBKU1ZhbHVlIG5ld1RhcmdldFZhbHVlID0gZXhlYy50aGlzVmFsdWUoKTsKICAg
ICBKU09iamVjdCogbmV3VGFyZ2V0ID0gbmV3VGFyZ2V0VmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAg
YXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5LT5maW5kSW50ZXJmYWNlKG5ld1Rhcmdl
dCk7CiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBh
IGN1c3RvbSBlbGVtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcih0aHJv
d1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBh
IGN1c3RvbSBlbGVtZW50IikpOwogCiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5pc1VwZ3Jh
ZGluZ0VsZW1lbnQoKSkgewogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3QoKTsKQEAgLTgwLDcgKzgyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgRWxlbWVudCogZWxlbWVudFRvVXBncmFkZSA9
IGVsZW1lbnRJbnRlcmZhY2UtPmxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOwogICAg
IGlmICghZWxlbWVudFRvVXBncmFkZSkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQg
aW5zaWRlIGl0cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOworICAgICAgICB0
aHJvd0ludmFsaWRTdGF0ZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fu
bm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0cyBvd24gY29uc3RyY3V0
b3IgZHVyaW5nIHVwZ3JhZGVzIikpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU2LDgg
KzU2LDExIEBAIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUcKIAogSlNW
YWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoc3RhdGUs
IHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKSk7CiAgICAgcmV0dXJuIHZh
bHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw1NCArMzUsNzIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0
aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIHJldHVybiBq
c051bWJlcihpbnB1dC5zZWxlY3Rpb25TdGFydCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVs
ZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwog
ICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwog
CiAgICAgaW5wdXQuc2V0U2VsZWN0aW9uU3RhcnQodmFsdWUudG9JbnQzMigmc3RhdGUpKTsKIH0K
IAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19T
Q09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdy
YXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKGlucHV0LnNlbGVj
dGlvbkVuZCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVu
ZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVT
ZWxlY3Rpb24oKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlv
bkVuZCh2YWx1ZS50b0ludDMyKCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICgh
aW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0
ZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCBpbnB1dC5zZWxlY3Rp
b25EaXJlY3Rpb24oKSk7CiB9CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rp
b25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOwor
CiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1
dC5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtOTEsMTIgKzEwOSwxNSBAQCB2b2lkIEpTSFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uRGlyCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxl
Y3Rpb25SYW5nZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rp
b24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgaW50IHN0YXJ0
ID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIGludCBl
bmQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDkgKzU1LDEyIEBAIEpTVmFsdWUgSlNIaXN0b3J5Ojpz
dGF0ZShFeGVjU3RhdGUmIHN0YXQKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVj
U3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBhdXRvIGFyZ0NvdW50ID0gc3RhdGUuYXJn
dW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3VudCA8IDIpKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgYXV0byBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgm
c3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCkBAIC04Niw5ICs4OSwxMiBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6cHVz
aFN0YXRlKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpyZXBsYWNlU3RhdGUoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhS
T1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgYXV0byBhcmdDb3VudCA9IHN0YXRlLmFy
Z3VtZW50Q291bnQoKTsKICAgICBpZiAoVU5MSUtFTFkoYXJnQ291bnQgPCAyKSkKLSAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
IAogICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
JnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBNaWNoYWVsIFBydWV0
dCA8bWljaGFlbEA2OGsub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTQ3LDggKzQ4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0lEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBu
YW1lID0gc3RhdGUuYXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC01Niw3ICs2MCw3IEBAIEpTVmFsdWUg
SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUKIAogICAgIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlID0gc3RhdGUuYXJndW1lbnQoMSk7CiAgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiAhb3B0aW9uc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsICJOb3QgYW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCAiTm90IGFuIG9iamVjdC4iKTsKIAog
ICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0y
MDA4LCAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTQ2LDEwICs0NiwxMyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNJbWFn
ZUNvbnN0cnVjdG9yOjpwCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNJbWFnZUNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
SW1hZ2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ltYWdlQ29uc3RydWN0
b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGpzQ29uc3Ry
dWN0b3ItPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJbWFnZSBjb25z
dHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCBjcmVhdGVSZWZlcmVuY2VFcnJv
cihzdGF0ZSwgIkltYWdlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFp
bGFibGUiKSk7CiAKICAgICAvLyBDYWxsaW5nIHRvSlMgb24gdGhlIGRvY3VtZW50IGNhdXNlcyB0
aGUgSlMgZG9jdW1lbnQgd3JhcHBlciB0byBiZQogICAgIC8vIGFkZGVkIHRvIHRoZSB3aW5kb3cg
b2JqZWN0LiBUaGlzIGlzIGRvbmUgdG8gZW5zdXJlIHRoYXQgSlNEb2N1bWVudDo6dmlzaXQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDggKzM1OCwx
MSBAQCBzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3RpCiAKIEpTVmFsdWUg
SlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVj
b2RlKHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRv
IGNvbnN0cmFpbnRzRGljdGlvbmFyeSA9IERpY3Rpb25hcnkoJnN0YXRlLCBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFTZXNzaW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lZGlhU2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTZXNzaW9uQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MSwxMSArNDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTTWVkaWFTZXNzaW9uKEV4ZWNTdGF0ZSYgZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PERPTUNvbnN0cnVjdG9y
T2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhp
cy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAg
cmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIk1l
ZGlhU2Vzc2lvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5h
dmFpbGFibGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCAiTWVkaWFTZXNzaW9uIik7CiAKICAgICBT
dHJpbmcga2luZDsKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgPiAwKSB7CkBAIC01NCw3
ICs1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGtp
bmQgPSBraW5kU3RyaW5nLT52YWx1ZSgmZXhlYyk7CiAgICAgICAgIGlmIChraW5kICE9ICJjb250
ZW50IiAmJiBraW5kICE9ICJ0cmFuc2llbnQiICYmIGtpbmQgIT0gInRyYW5zaWVudC1zb2xvIiAm
JiBraW5kICE9ICJhbWJpZW50IikKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVz
dEJlRW51bUVycm9yKGV4ZWMsIDAsICJraW5kIiwgIk1lZGlhU2Vzc2lvbiIsIG51bGxwdHIsICJc
ImNvbnRlbnRcIiwgXCJ0cmFuc2llbnRcIiwgXCJ0cmFuc2llbnQtc29sb1wiLCBcImFtYmllbnRc
IiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IodGhy
b3dTY29wZSwgZXhlYywgMCwgImtpbmQiLCAiTWVkaWFTZXNzaW9uIiwgbnVsbHB0ciwgIlwiY29u
dGVudFwiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaWVudC1zb2xvXCIsIFwiYW1iaWVudFwiIik7
CiAgICAgfSBlbHNlCiAgICAgICAgIGtpbmQgPSAiY29udGVudCI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMCArNDEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpn
ZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0
U2V0dGluZ3MiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlw
ZUVycm9yKHRocm93U2NvcGUsIHN0YXRlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5n
cyIpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3Rh
dGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMDIsMTAg
KzEwNSwxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjYXBhYmlsaXR5VmFsdWUoY29uc3QgQ2FwCiAKIEpT
Qzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcyhFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNW
YWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsIHN0
YXRlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKIAogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNTksNiArNTksOSBAQCBKU0M6OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3Nh
Z2UoCiAKIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZm
ZXJBcnJheSYgYXJyYXlCdWZmZXJzKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
TUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyBDb252ZXJ0IGZyb20g
dGhlIHBhc3NlZC1pbiBKUyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0QXJyYXku
CiAgICAgLy8gQWxzbyB2YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMg
YW5kIDQuMS4xNSBvZiB0aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhU
TUw1IHNwZWMuCiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKQEAgLTk1LDcg
Kzk4LDcgQEAgdm9pZCBmaWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZQogICAgICAg
ICAgICAgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVy
KHZhbHVlKSkKICAgICAgICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYXJy
YXlCdWZmZXIpKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29w
ZSwgJnN0YXRlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQ
b3J0Q3VzdG9tLmgJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01MCw4ICs1MSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5l
IEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQq
IGltcGwpCiAgICAgeworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFy
cmF5QnVmZmVyQXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBK
U1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjCiAKIHZvaWQgSlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyBjb252
ZXJ0PHVpbnQ4X3Q+KHN0YXRlLCB2YWx1ZSwgRW5mb3JjZVJhbmdlKSB9OwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzcsNyBAQCB2b2lk
IEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBu
b3QgYSB2YWxpZCBkZWNpc2lvblBvaW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CisgICAgdGhy
b3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90
IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTVmFsdWUgdG9KU1ZhbHVlKERlY2lzaW9uIGRlY2lzaW9uKQpAQCAtOTEsNiAr
OTQsOSBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdG9KU1ZhbHVlKERlY2lzaW9uCiAKIHN0YXRp
YyBpbmxpbmUgRGVjaXNpb24gdG9EZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29udmVydDx1aW50
OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CkBAIC0xMDIsNyArMTA4
LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdAogICAgICAgICBy
ZXR1cm4gZGVjaXNpb247CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJp
bmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFs
dWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIFN0cmluZzo6Zm9y
bWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvbiB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwog
ICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTAzLDYgKzEwMyw5IEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjoKIAogSlNDOjpKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSkK
IHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBv
cnQgSlNNb2R1bGVSZWNvcmQuCiAgICAgLy8gT25jZSB0aGUgcmVmbGVjdGl2ZSBwYXJ0IG9mIHRo
ZSBtb2R1bGUgbG9hZGVyIGlzIHN1cHBvcnRlZCwgd2Ugd2lsbCBoYW5kbGUgYXJiaXRyYXJ5IHZh
bHVlcy4KICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeS1w
cm90b3R5cGUtcHJvdmlkZQpAQCAtMTE2LDEwICsxMTksMTAgQEAgSlNDOjpKU1ZhbHVlIEpTTW9k
dWxlTG9hZGVyOjpldmFsdWF0ZShKUwogICAgIGVsc2UgaWYgKG1vZHVsZUtleVZhbHVlLmlzU3Ry
aW5nKCkpCiAgICAgICAgIHNvdXJjZVVybCA9IFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5
VmFsdWUpLT52YWx1ZShleGVjKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gSlNDOjp0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBv
ciBTdHJpbmcuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBvciBTdHJp
bmcuIikpOwogCiAgICAgaWYgKCFzb3VyY2VVcmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
SlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4g
aW52YWxpZCBVUkwuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcih0aHJv
d1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwu
IikpOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBldmFsdWF0aW5nIG1vZHVsZSBjb2RlLgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NDQsMTkgKzQ1LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZl
eGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKICAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsYmFjayBhcmd1
bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHRocm93U2NvcGUsICZleGVjLCBBU0NJSUxpdGVyYWwoIkNhbGxiYWNrIGFyZ3VtZW50IG11
c3QgYmUgYSBmdW5jdGlvbiIpKTsKIAogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0
cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAg
ICAgYXV0byBjYWxsYmFjayA9IEpTTXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganND
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBqc09ic2VydmVyID0g
YXNPYmplY3QodG9KU05ld2x5Q3JlYXRlZCgmZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2Jq
ZWN0KCksIE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKICAg
ICBQcml2YXRlTmFtZSBwcm9wZXJ0eU5hbWU7Ci0gICAganNPYnNlcnZlci0+cHV0RGlyZWN0KGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT52bSgpLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7
CisgICAganNPYnNlcnZlci0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc09ic2VydmVyKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDktMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMiwxMyArMTEyLDE2IEBAIGJvb2wgSlNO
b2RlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVIKIAogSlNWYWx1ZSBKU05vZGU6Omluc2Vy
dEJlZm9yZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBKU1ZhbHVlIG5ld0No
aWxkVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvKiBuZXdDaGls
ZCA9IEpTTm9kZTo6dG9XcmFwcGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
bmV3Q2hpbGQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAiaW5zZXJ0QmVmb3JlIiwgIk5vZGUi
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJv
cih0aHJvd1Njb3BlLCBzdGF0ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJpbnNlcnRCZWZvcmUiLCAi
Tm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSgh
d3JhcHBlZCgpLmluc2VydEJlZm9yZSgqbmV3Q2hpbGQsIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgZWMpKSkgewpAQCAtMTMyLDE2ICsxMzUsMTkgQEAgSlNW
YWx1ZSBKU05vZGU6Omluc2VydEJlZm9yZShFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTTm9kZTo6
cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8qIG5l
d0NoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIEpTVmFsdWUgb2xkQ2hpbGRWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwog
ICAgIGF1dG8qIG9sZENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQob2xkQ2hpbGRWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFuZXdDaGlsZCB8fCAhb2xkQ2hpbGQpKSB7CiAgICAgICAgIGlmICgh
bmV3Q2hpbGQpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1l
bnRUeXBlRXJyb3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5v
ZGUiKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJy
b3IodGhyb3dTY29wZSwgc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwg
Ik5vZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5
cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNo
aWxkIiwgIk5vZGUiKSk7CiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0x
NTYsMTAgKzE2MiwxMyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYg
CiAKIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2
bSk7CisKICAgICBKU1ZhbHVlIGNoaWxkVmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBh
dXRvKiBjaGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKGNoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2hpbGQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1l
bnRUeXBlRXJyb3Ioc3RhdGUsIDAsICJjaGlsZCIsICJOb2RlIiwgInJlbW92ZUNoaWxkIiwgIk5v
ZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQi
LCAiTm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VM
WSghd3JhcHBlZCgpLnJlbW92ZUNoaWxkKCpjaGlsZCwgZWMpKSkgewpAQCAtMTczLDEwICsxODIs
MTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgcwogCiBKU1ZhbHVl
IEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAg
SlNWYWx1ZSBuZXdDaGlsZFZhbHVlID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgYXV0byBuZXdD
aGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghbmV3Q2hpbGQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1l
bnRUeXBlRXJyb3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9k
ZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKHRocm93U2NvcGUsIHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwg
Ik5vZGUiKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoVU5MSUtFTFko
IXdyYXBwZWQoKS5hcHBlbmRDaGlsZCgqbmV3Q2hpbGQsIGVjKSkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAkocmV2aXNp
b24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw3ICs0Miw5IEBAIHVpbnQxNl90IEpTTm9kZUZpbHRl
cjo6YWNjZXB0Tm9kZShOb2RlKiAKIHsKICAgICBSZWY8SlNOb2RlRmlsdGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0
KCktPnZtKCkpOworICAgIFZNJiB2bSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOwogCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtNTQsNyAr
NTYsNyBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb25Pck9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhz
dGF0ZSwgImFjY2VwdE5vZGUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewogICAgICAgICAvLyBSZXRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgc3Rh
dGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAg
ICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
CiAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3NjaWxsYXRvck5vZGVD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxMyArNDAsMTYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgT3NjaWxsYXRv
ck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAogI2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQog
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQzMl90IHR5cGUgPSB2YWx1
ZS50b1VJbnQzMigmc3RhdGUpOwogICAgICAgICBpZiAoIWltcC5zZXRUeXBlKHR5cGUpKQotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgT3Nj
aWxsYXRvck5vZGUgdHlwZSIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2Nv
cGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbGxlZ2FsIE9zY2lsbGF0b3JOb2RlIHR5cGUiKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU4LDcgKzYyLDcgQEAgdm9pZCBK
U09zY2lsbGF0b3JOb2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZQogICAgICAgICB9CiAgICAgfQogICAg
IAotICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbGxlZ2FsIE9zY2ls
bGF0b3JOb2RlIHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgT3NjaWxsYXRvck5vZGUgdHlwZSIpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
YW5uZXJOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5
LDEzICs0MCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgSlNQYW5uZXJOb2RlOjpz
ZXRQYW5uaW5nTW9kZWwoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgUGFubmVyTm9kZSYgaW1wID0gd3JhcHBlZCgpOwogCiAjaWYgRU5BQkxFKExFR0FD
WV9XRUJfQVVESU8pCiAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAgdWludDMy
X3QgbW9kZWwgPSB2YWx1ZS50b1VJbnQzMigmc3RhdGUpOwogICAgICAgICBpZiAoIWltcC5zZXRQ
YW5uaW5nTW9kZWwobW9kZWwpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIklsbGVnYWwgcGFubmluZ01vZGVsIikpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgcGFubmlu
Z01vZGVsIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC01OCwxOCArNjIs
MjEgQEAgdm9pZCBKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChFeGVjUwogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJ
bGxlZ2FsIHBhbm5pbmdNb2RlbCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBwYW5uaW5nTW9kZWwiKSk7CiB9CiAKIHZvaWQg
SlNQYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BF
KHRocm93U2NvcGUsIHZtKTsKKwogICAgIFBhbm5lck5vZGUmIGltcCA9IHdyYXBwZWQoKTsKIAog
I2lmIEVOQUJMRShMRUdBQ1lfV0VCX0FVRElPKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7
CiAgICAgICAgIHVpbnQzMl90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoJnN0YXRlKTsKICAgICAg
ICAgaWYgKCFpbXAuc2V0RGlzdGFuY2VNb2RlbChtb2RlbCkpCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBkaXN0YW5jZU1vZGVsIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bmRpZgpAQCAtODIsNyArODksNyBAQCB2b2lkIEpTUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2Rl
bChFeGVjCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKKyAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBkaXN0YW5jZU1v
ZGVsIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJ
KHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2lu
RWxlbWVudEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC05NiwxMCArOTYsMTIgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3RhdGUq
IAogICAgIAogRW5jb2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09Q
RSh0aHJvd1Njb3BlLCB2bSk7CiAKICAgICBKU0hUTUxFbGVtZW50KiB0aGlzT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU0hUTUxFbGVtZW50Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwog
ICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgdGhp
c09iamVjdCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1
Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE0ICszNywxOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBQdWJsaWMgSlMgUmVhZGFibGVTdHJlYW1SZWRlciBh
bmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBjYWxsYmFja3Mu
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKKyAgICBW
TSYgdm0gPSBleGVjLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgJmV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQg
bm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihFeGVjU3RhdGUmIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworICAgIAogICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHlu
YW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkpOwogICAgIGlmICgh
c3RyZWFtKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgY29uc3RydWN0b3IgcGFyYW1ldGVyIGlz
IG5vdCBhIFJlYWRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cih0aHJvd1Njb3BlLCAmZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIgY29uc3RydWN0b3IgcGFyYW1ldGVyIGlzIG5vdCBhIFJlYWRhYmxlU3RyZWFtIikpOwog
CiAgICAgSlNWYWx1ZSBqc0Z1bmN0aW9uID0gc3RyZWFtLT5nZXQoJmV4ZWMsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJmV4ZWMsICJnZXRSZWFkZXIiKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNDg3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTQ3LDEzICs0OCwxNiBAQCBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVjU3Rh
dGUmIHN0CiAKIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgp
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmlzTnVtYmVyKCkgJiYgIXZhbHVlLmlzQm9vbGVhbigp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03Miw2ICs3Niw5IEBAIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3QK
IAogSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5KCkpIHsK
ICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04MCw3ICs4Nyw3IEBAIEpT
VmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFUKICAgICBTVkdMZW5ndGgmIHBv
ZEltcCA9IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKCZzdGF0ZSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk4LDggKzk4LDExIEBAIEpT
VmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW4KIAogSlNWYWx1ZSBKU1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICBy
ZXR1cm4gZXhlYy52bSgpLnRocm93RXhjZXB0aW9uKCZleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAg
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWdu
ZWQgcG5hbWUgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJmV4ZWMpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MCw4ICsxNzAsMTEgQEAgZW51bSBPYmplY3RUeXBlIHsK
IAogc3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSogb2JqLCBFeGVjU3RhdGUmIHN0YXRlLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
ICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gb2JqLT53cmFwcGVkKCk7CkBAIC0yNzAsMTMgKzI3MywxNiBAQCB2
b2lkIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBCiAKIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAg
ICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBK
U1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICBWZWN0b3I8
UmVmUHRyPFdlYkdMU2hhZGVyPj4gc2hhZGVyczsKICAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0
LmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBzaGFkZXJzLCBlYyk7CiAgICAgaWYgKGVjKSB7
CkBAIC0yOTMsOCArMjk5LDExIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lv
bihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKQEAgLTMx
MSw4ICszMjAsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAog
CiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3Jh
cHBlZCgpOwpAQCAtMzM1LDggKzM0NywxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7
CkBAIC0zNTMsMTQgKzM2OCwxNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFt
UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgp
OwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQo
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0
aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNzksMTMgKzM5NywxNiBAQCBK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsICZzdGF0ZSk7CiAgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IEpTV2ViR0xTaGFk
ZXI6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgdW5zaWduZWQg
cG5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNDE3LDE3ICs0MzgsMjAgQEAgSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJv
Z3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXBy
b2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IodGhyb3dT
Y29wZSwgJnN0YXRlKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQuZ2V0VW5pZm9y
bShwcm9ncmFtLCBsb2NhdGlvbiwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01F
eGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC00ODgsOCArNTEyLDExIEBAIHN0YXRpYyBib29sIGZ1
bmN0aW9uRm9yVW5pZm9ybShEYXRhRnVuY3QKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVu
Y3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0
ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1M
b2NhdGlvbiogbG9jYXRpb24gPSAwOwogICAgIGxvbmcgaW5kZXggPSAtMTsKQEAgLTQ5Nyw3ICs1
MjQsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgaWYg
KGZ1bmN0aW9uRm9yVW5pZm9ybShmKSkgewogICAgICAgICBsb2NhdGlvbiA9IEpTV2ViR0xVbmlm
b3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAg
ICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwog
ICAgIH0gZWxzZQogICAgICAgICBpbmRleCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
SW50MzIoJnN0YXRlKTsKICAgICAKQEAgLTU0Myw3ICs1NzAsNyBAQCBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgCiAgICAgVmVjdG9yPGZsb2F0LCA2ND4gYXJy
YXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSks
IGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIAogICAgIHN3
aXRjaCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtMXY6CkBAIC01NzgsMTIgKzYwNSwxNSBAQCBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAg
V2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6
dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWxvY2F0aW9u
ICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAgICAgCiAgICAgUmVmUHRyPEludDMyQXJy
YXk+IHdlYkdMQXJyYXkgPSB0b0ludDMyQXJyYXkoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkp
OwogICAgIApAQCAtNjEzLDcgKzY0Myw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0
aW9uaShEYXRhRnUKICAgICAKICAgICBWZWN0b3I8aW50LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0
b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAg
IGNhc2UgZl91bmlmb3JtMXY6CkBAIC02MzgsMTIgKzY2OCwxNSBAQCBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0
aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dy
YXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9jYXRpb24gJiYg
IXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKICAgICAKICAgICBib29sIHRyYW5zcG9zZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTY3MSw3ICs3MDQsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGRhdGFGdW5jdGlvbk1hdHJpeChECiAgICAgCiAgICAgVmVjdG9yPGZsb2F0LCA2ND4gYXJyYXk7
CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMiksIGFy
cmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAgIAogICAgIHN3aXRj
aCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2OgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw2ICs3Nyw5IEBA
IHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGVBbGcKIAogc3RhdGljIGJvb2wg
Y3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSwgQ3J5cHRvS2V5Rm9ybWF0JiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFN0cmluZyBrZXlG
b3JtYXRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODks
NyArOTIsNyBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFCiAgICAg
ZWxzZSBpZiAoa2V5Rm9ybWF0U3RyaW5nID09ICJqd2siKQogICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlGb3JtYXQ6OkpXSzsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5IGZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5IGZv
cm1hdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTk3LDggKzEwMCwxMSBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1
ZShFCiAKIHN0YXRpYyBib29sIGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0tleVVzYWdlJiByZXN1bHQpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsK
KwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsOCArMTM4LDExIEBAIHN0YXRpYyBi
b29sIGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAo
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGht
ID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMTQ5LDcgKzE1OCw3IEBAIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9L
ZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAK
ICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKICAgICAgICAg
d3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGlu
Y2x1ZGUgJ2VuY3J5cHQnIikpOwpAQCAtMTg1LDggKzE5NCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0
U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0
ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTIwMiw3ICsyMTQsNyBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkg
PSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAg
ICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgaWYg
KCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7CiAgICAgICAgIHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdk
ZWNyeXB0JyIpKTsKQEAgLTIzNyw4ICsyNDksMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZGVjcnlwdChFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RI
Uk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1G
cm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICgh
YWxnb3JpdGhtKSB7CkBAIC0yNTQsNyArMjY5LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6c2lnbihFeGVjUwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlwdG9L
ZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFrZXkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIGlmICgha2V5LT5hbGxv
d3MoQ3J5cHRvS2V5VXNhZ2VTaWduKSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnc2lnbiciKSk7CkBAIC0y
ODksOCArMzA0LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1MK
IAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0
ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBA
IC0zMDYsNyArMzI0LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4
ZQogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNh
Z2VWZXJpZnkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd2ZXJpZnknIikpOwpAQCAtMzQ3LDggKzM2NSwx
MSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlCiAKIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1
dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMzg5LDggKzQx
MCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlCiAKIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwg
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC00
NDUsNiArNDY5LDkgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZQog
CiBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0
IGtleUZvcm1hdCwgQ3J5cHRvT3BlcmF0aW9uRGF0YSBkYXRhLCBSZWZQdHI8Q3J5cHRvQWxnb3Jp
dGhtPiBhbGdvcml0aG0sIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBwYXJhbWV0
ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSBrZXlVc2FnZXMsIENyeXB0b0Fs
Z29yaXRobTo6S2V5Q2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxi
YWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0tleVNlcmlhbGl6YXRpb24+IGtleVNlcmlhbGl6YXRpb247CiAgICAgc3dpdGNoIChrZXlG
b3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgpAQCAtNDUzLDcgKzQ4MCw3
IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBjYXNlIENy
eXB0b0tleUZvcm1hdDo6SldLOiB7CiAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcgPSBTdHJpbmc6
OmZyb21VVEY4KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKICAgICAgICAgaWYgKGp3a1N0cmlu
Zy5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxp
dGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSz4oJnN0YXRlLCBqd2tTdHJpbmcp
OwpAQCAtNDYyLDcgKzQ4OSw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0
YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZv
ciBpbXBvcnQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBpbXBvcnQiKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ3MSw3ICs0OTgsNyBAQCBzdGF0aWMgdm9pZCBpbXBv
cnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFp
cj4gcmVjb25jaWxlZFJlc3VsdCA9IGtleVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFsZ29yaXRo
bShhbGdvcml0aG0uZ2V0KCksIHBhcmFtZXRlcnMuZ2V0KCkpOwogICAgIGlmICghcmVjb25jaWxl
ZFJlc3VsdCkgewogICAgICAgICBpZiAoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkFsZ29yaXRobSBzcGVjaWZp
ZWQgaW4ga2V5IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggb25lIHBhc3NlZCB0byBpbXBvcnRLZXkg
YXMgYXJndW1lbnQiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00
ODAsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAog
ICAgIGFsZ29yaXRobSA9IHJlY29uY2lsZWRSZXN1bHQtPmFsZ29yaXRobTsKICAgICBwYXJhbWV0
ZXJzID0gcmVjb25jaWxlZFJlc3VsdC0+cGFyYW1ldGVyczsKICAgICBpZiAoIWFsZ29yaXRobSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiTmVpdGhlciBr
ZXkgbm9yIGZ1bmN0aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmllZCIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIk5laXRoZXIga2V5IG5vciBmdW5jdGlvbiBhcmd1bWVudCBoYXMgY3J5cHRvIGFsZ29yaXRo
bSBzcGVjaWZpZWQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHBhcmFt
ZXRlcnMpOwpAQCAtNTA1LDggKzUzMiwxMSBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0
YXRlJiBzdGF0ZSwgCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmltcG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3Vu
dCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAg
aWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCks
IGtleUZvcm1hdCkpIHsKQEAgLTU2OCw4ICs1OTgsMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6aW1wb3J0S2V5KAogCiBzdGF0aWMgdm9pZCBleHBvcnRLZXkoRXhlY1N0YXRlJiBz
dGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgY29uc3QgQ3J5cHRvS2V5JiBrZXksIENy
eXB0b0FsZ29yaXRobTo6VmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6
Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFrZXku
ZXh0cmFjdGFibGUoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiS2V5IGlzIG5vdCBleHRyYWN0YWJsZSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlLCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUi
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU5MywxNSArNjI2LDE4IEBAIHN0YXRp
YyB2b2lkIGV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBr
ZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2Nv
cGUsIHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdDsKICAgICBpZiAoIWNyeXB0b0tleUZvcm1h
dEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgewpAQCAt
NjExLDcgKzY0Nyw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSgK
IAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRo
cm93U2NvcGUsICZzdGF0ZSk7CiAKICAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVy
cmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsK
ICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBwcm9t
aXNlRGVmZXJyZWQpOwpAQCAtNjMxLDggKzY2NywxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxl
Q3J5cHRvOjpleHBvcnRLZXkoCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBL
ZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDQpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0Owog
ICAgIGlmICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50
KDApLCBrZXlGb3JtYXQpKSB7CkBAIC02NDIsMTEgKzY4MSwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0
U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBK
U0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBp
ZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCAmc3RhdGUpOwogCiAgICAgUmVmUHRy
PENyeXB0b0tleT4gd3JhcHBpbmdLZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDIpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCAmc3RhdGUpOwogCiAgICAgaWYgKCF3cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVz
YWdlV3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVy
YWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikpOwpAQCAtNzAwLDggKzcz
OSwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnVud3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAog
ICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRG
cm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTcx
Nyw3ICs3NTksNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoCiAK
ICAgICBSZWZQdHI8Q3J5cHRvS2V5PiB1bndyYXBwaW5nS2V5ID0gSlNDcnlwdG9LZXk6OnRvV3Jh
cHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSk7CiAgICAgaWYgKCF1bndyYXBwaW5nS2V5
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsICZzdGF0ZSk7CiAKICAgICBpZiAoIXVud3JhcHBp
bmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBl
ZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUg
J3Vud3JhcEtleSciKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDcsMTAgKzQ3LDEzIEBAIEpT
Qzo6SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjoKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0p
OworCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9N
Q29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKIAogICAgIGlmICghZXhlYy5hcmd1
bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IodGhyb3dTY29wZSwgJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVj
KSk7CiAKICAgICBTdHJpbmcgc2NyaXB0VVJMID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmZXhlYyk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNj
b3BlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDEx
LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzksOCArNzksMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNj
b3BlOjppbXBvcnRTY3JpcAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVv
dXQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNj
aGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgp
KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC05Myw4ICs5NiwxMSBAQCBKU1Zh
bHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoCiAKIEpTVmFsdWUgSlNXb3JrZXJH
bG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dTY29wZS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0
aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IENhbm9uIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0
OCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxGdW5jdGlvbigKIAogSlNDOjpK
U1ZhbHVlIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omludm9rZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3QmIG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVyKQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2soJnN0YXRlKTsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CiAKICAgICBhdXRvIGZ1bmN0aW9uID0gb2JqZWN0LmdldCgmc3RhdGUsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsIHByb3BlcnR5TmFtZSkpOwogICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKQEAgLTU1LDcgKzU4LDcgQEAgSlNDOjpKU1ZhbHVlIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRybwogCiAgICAgaWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKCkpIHsKICAgICAg
ICAgaWYgKCFmdW5jdGlvbi5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEg
cHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcih0aHJvd1Njb3BlLCAmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5
aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKTsKICAgICAgICAg
cmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNp
b24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw5IEBAIHByb3RlY3RlZDoK
IAogICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93KCkKICAgICB7Ci0gICAgICAgIG1fZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4
ZWMpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBNQUtFX1RIUk9X
X1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlv
bihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKICAgICB9CiAKICAg
ICB2b2lkIGZhaWwoKQpAQCAtMTU3MCw3ICsxNTcyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
dGhyb3dWYWxpZGF0aW9uRXJyb3IoKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9l
eGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKKyAgICAg
ICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IodGhyb3dTY29wZSwgbV9leGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICB9CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24gPD0gQ3VycmVudFZlcnNp
b247IH0KQEAgLTI3NTYsMTUgKzI3NjAsMTggQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcgogCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4
Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChFeGVjU3RhdGUqIGV4ZWMsIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlIGNvZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtF
X1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChjb2RlID09IFN1Y2Nlc3Nm
dWxseUNvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaCAoY29kZSkg
ewogICAgIGNhc2UgU3RhY2tPdmVyZmxvd0Vycm9yOgotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgICAg
IHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWYWxpZGF0aW9uRXJyb3I6Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGRhdGEuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBEYXRhQ2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIERBVEFfQ0xPTkVfRVJSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMTI1LDExICsxMjUsMTIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZShjbwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogCiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKIAog
ICAgIEpTQzo6ZXZhbHVhdGUoZXhlYywgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYm
IGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlz
VGVybWluYXRpbmdFeGVjdXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQyLDcgKzE0Myw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6ZXZhbHVhdGUoY28KICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJjZUNvZGUu
dXJsKCkuc3RyaW5nKCk7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGVycm9yOwog
ICAgICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+c2FuaXRpemVTY3JpcHRFcnJvcihlcnJv
ck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBlcnJvciwgc291
cmNlQ29kZS5jYWNoZWRTY3JpcHQoKSkpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKTsKKyAgICAgICAg
ICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZXJy
b3JNZXNzYWdlLmltcGwoKSkpOwogICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSB2bS5l
eGNlcHRpb24oKTsKICAgICAgICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIH0K
QEAgLTE1Miw3ICsxNTMsOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
KGNvCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2Vw
dGlvbiogZXhjZXB0aW9uKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJH
bG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKyAgICB0aHJvd1Njb3BlLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA0
ODcwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTg3OCw5ICs4NzgsMTEgQEAgc3ViIEdlbmVyYXRlRW51bWVy
YXRpb25JbXBsZW1lbnRhdGlvbkNvbgogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4g
JGNsYXNzTmFtZSBjb252ZXJ0PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVzdWx0IC49
ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsgLy8gbWxhbSAxXG4iOwogICAgICAgICAk
cmVzdWx0IC49ICIgICAgYXV0byByZXN1bHQgPSBwYXJzZTwkY2xhc3NOYW1lPihzdGF0ZSwgdmFs
dWUpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkg
e1xuIjsKLSAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
O1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcih0aHJvd1Nj
b3BlLCAmc3RhdGUpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4geyB9
O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH1cbiI7CiAgICAgICAgICRyZXN1bHQgLj0g
IiAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7XG4iOwpAQCAtOTc5LDExICs5ODEsMTMgQEAgc3Vi
IEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udAogCiAgICAgICAgICRyZXN1bHQg
Lj0gInRlbXBsYXRlPD4gT3B0aW9uYWw8JGNsYXNzTmFtZT4gY29udmVydERpY3Rpb25hcnk8JGNs
YXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIntcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpO1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOyAvLyBtbGFtIDJcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBpZiAodmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIgaWYgJGRlZmF1bHRWYWx1ZXM7CiAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuICRjbGFzc05hbWUgeyAiIC4gJGRlZmF1bHRWYWx1ZXMg
LiAiIH07XG4iIGlmICRkZWZhdWx0VmFsdWVzOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0
byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIg
ICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0
VHlwZSkpIHtcbiI7Ci0gICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgJnN0YXRlKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0
dXJuIE51bGxvcHQ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIApAQCAtMTg5
MCw2ICsxODk0LDggQEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1Ywog
ICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOyAgICAKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKICAg
ICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigkbWF4QXJnQ291bnQsIHN0YXRl
LT5hcmd1bWVudENvdW50KCkpOwogRU5ECiAKQEAgLTE5NjQsOSArMTk3MCw5IEBAIEVORAogICAg
IH0KICAgICBteSAkbWluQXJnQ291bnQgPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwog
ICAgIGlmICgkbWluQXJnQ291bnQgPiAwKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBhcmdzQ291bnQgPCAkbWluQXJnQ291bnQgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhcmdz
Q291bnQgPCAkbWluQXJnQ291bnQgPyB0aHJvd1ZNRXJyb3IodGhyb3dTY29wZSwgc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHRo
cm93U2NvcGUsIHN0YXRlKTtcbiIpCiAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIikKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29w
ZSwgc3RhdGUpO1xuIikKICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
fQpAQCAtMjQxNiw2ICsyNDIyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVUaW1l
Q2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRpbnRlcmZhY2UpKTsKIAogICAgICAgICBteSAkcHJvdG9D
bGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJvdG90eXBlIjsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIvLyBtbGFtIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyAxXG4iKTsKICAg
ICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFz
c05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNl
KTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENv
bnN0cnVjdG9yIn0pIHsKICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
cyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0sICRpbnRlcmZhY2UsICJH
ZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpOwpAQCAtMjc1Niw3ICsyNzYzLDggQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5j
b2RlZEpTVmFsdWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
O1xuIik7CiAKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CkBAIC0yNzcyLDcgKzI3
ODAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcih0aHJvd1Njb3BlLCAq
c3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxu
Iik7CiAgICAgICAgICAgICB9CkBAIC0yOTQ5LDkgKzI5NTcsMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNW
YWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsgLy8gbWxhbSAzXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIHN0YXRlKTtcbiIpOwogCiAgICAgICAgICAgICBpZiAo
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSgke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKQEAgLTI5NjgsMTAgKzI5NzgsMTIgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wg
JHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7IC8vIG1sYW0gNFxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFz
c05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkge1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKIApAQCAtMzA1MSw2ICszMDYzLDggQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7cHV0
RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKQEAgLTMwNjMsNyArMzA3Nyw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IodGhyb3dTY29wZSwgKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFt
ZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQpAQCAtMzE1Miw3
ICszMTY2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVc
IiwgXCIkdHlwZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0
ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0
dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfVxuIik7CkBAIC0zMTcxLDcgKzMxODUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFuYXRp
dmVWYWx1ZSkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJm
YWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKHRo
cm93U2NvcGUsICpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBc
IiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzMzOSw2ICszMzUz
LDEwIEBAIEVORAogCiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5o
PiJ9ID0gMTsKIAorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE1B
S0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOyAvLyBtbGFtIDVcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7
CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNFUmVhY3Rpb25zIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2s7XG4iKTsKQEAgLTMzNDgsOSArMzM2NiwxMSBAQCBFTkQKIAogICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICBpZiAo
JGlzQ3VzdG9tKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IC8vLy8gbWxhbSBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sgMVxuIik7CiAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVu
Y3Rpb24sICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSAuICIoc3RhdGUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vLy8g
bWxhbSBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sgMlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkcmFpc2VzRXhjZXB0aW9u
V2l0aE1lc3NhZ2UpIHsKQEAgLTMzOTMsNiArMzQxMyw3IEBAIEVORAogICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIH0KIAorICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLy8v
IG1sYW0gR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrIDNcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9u
LCAkaW50ZXJmYWNlKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlv
bldpdGhNZXNzYWdlKSB7CkBAIC0zNjU1LDcgKzM2NzYsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlv
bkNhc3RlZFRoaXMKICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbVByb3h5VG9KU09iamVjdCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShzdGF0ZS0+dGhpc1ZhbHVl
KCkudG9UaGlzKHN0YXRlLCBOb3RTdHJpY3RNb2RlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTtcbiIpOwogICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxw
ZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwpAQCAtMzY3MSw3ICszNjkyLDcgQEAgc3ViIEdl
bmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzCiAgICAgICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNlKTsK
ICAgICAgICAgbXkgJGRvbUZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkZG9t
RnVuY3Rpb25OYW1lXCIpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgXCIkdmlzaWJs
ZUludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgfQogCiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFjZS0+bmFt
ZSBlcSAiRXZlbnRUYXJnZXQiOwpAQCAtMzczOSw3ICszNzYwLDcgQEAgc3ViIEdlbmVyYXRlQXJn
dW1lbnRzQ291bnRDaGVjawogICAgIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1zID49IDEpCiAgICAg
ewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAkbnVtTWFuZGF0b3J5UGFyYW1zKSlcbiIpOwotICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHRocm93U2NvcGUsIHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpO1xuIik7CiAgICAgfQogfQog
CkBAIC0zODYxLDcgKzM4ODIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4
KS5pc09iamVjdCgpKVxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2li
bGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgs
IFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFt
ZSk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAg
ICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FsbGJhY2tGdW5jdGlvbi5oIik7
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUg
PSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oc3RhdGUs
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpKTtcbiIpOwpAQCAtMzg3
NSw3ICszODk2LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4KS5pc09iamVjdCgp
KSlcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigq
c3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1l
XCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IodGhyb3dTY29wZSwgKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNp
YmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOwogICAgICAgICAg
ICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjcmVhdGVGdW5jdGlvbk9u
bHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpKTtcbiIpOwpAQCAtMzg5Myw3ICszOTE0LDcgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGZvciAodW5zaWduZWQgaSA9ICRhcmd1bWVudEluZGV4LCBjb3VudCA9IHN0YXRl
LT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7XG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8qIGl0ZW0gPSBKUyR7dHlwZX06OnRv
V3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIWl0ZW0pXG4iKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIGksIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgaSwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50
ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZS51bmNoZWNrZWRB
cHBlbmQoaXRlbSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgfVxuIikKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zOTM2LDcgKzM5NTcsNyBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiRpbmRlbnQgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiRpbmRlbnQgICAgaWYgKFVOTElLRUxZKCEkb3B0aW9uYWxWYWx1ZSkpXG4iKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5h
bWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlczwkY2xhc3NOYW1lPigpKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVFbnVtRXJyb3IodGhyb3dTY29wZSwgKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFt
ZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICRuYW1lID0gb3B0aW9uYWxWYWx1ZS52YWx1
ZSgpO1xuIikgaWYgJG9wdGlvbmFsVmFsdWUgbmUgJG5hbWU7CiAKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKSBpZiAkaW5kZW50IG5lICIiOwpAQCAtMzk2MCw3ICsz
OTgxLDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoVU5MSUtFTFkoISRuYW1lKSlcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwg
XCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwi
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHRocm93U2NvcGUsICpzdGF0ZSwgJGFyZ3Vt
ZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1
bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgk
bmFtZSkiOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQwMDYsNyArNDAyNyw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJl
ZmVyZW5jZSkgewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
VU5MSUtFTFkoISRuYW1lKSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkYXJndW1l
bnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVu
Y3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcih0aHJvd1Njb3Bl
LCAqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKICAgICAgICAgICAg
ICAgICAkdmFsdWUgPSAkaXNUZWFyT2ZmID8gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIiA6
ICIqJG5hbWUiOwogICAgICAgICAgICAgfQogCkBAIC00MjEyLDYgKzQyMzMsNyBAQCBzdWIgR2Vu
ZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uCiAKICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29tcGlsZVRpbWVDaGVja0ZvckVudW1zSWZOZWVkZWQo
JGludGVyZmFjZSkpOwogCisgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIvLyBtbGFtIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyAyXG4iKTsKICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICR2aXNpYmxlSW50
ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7CiAKICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpT
VmFsdWUgJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpXG57XG4iKTsKQEAgLTUxODIsMTMgKzUyMDQsMTUgQEAgc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksIDw8RU5EKTsKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7IC8vIG1sYW0gNwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVlKCkpOwogCiAgICAgaWYgKCFqc0NvbnN0
cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKHN0YXRlLCAiQ29uc3RydWN0b3IgYXNz
b2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcih0aHJvd1Njb3BlLCBzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
c3RhdGUsICJDb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZh
aWxhYmxlIikpOwogCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcih0aHJvd1Nj
b3BlLCBzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKIAogICAg
IEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCkBAIC01MjY1LDEyICs1Mjg5LDE2IEBAIEVORAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29w
ZSwgdm0pOyAvLyBtbGFtIDhcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNs
YXNzTmFtZX0qPihzdGF0ZS0+Y2FsbGVlKCkpO1xuIik7CiAKICAgICAgICAgICAgIG15IEBjb25z
dHJ1Y3RvckFyZ0xpc3Q7CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vy
cm9yLmg+In0gPSAxOwogCisgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8v
LyBtbGFtIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayA0XG4iKTsKICAgICAgICAgICAgIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVy
ZmFjZSk7CiAKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlJhaXNlc0V4Y2VwdGlvbiJ9IHx8ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UifSB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24i
fSkgewpAQCAtNTI5MywxNCArNTMyMSwxNCBAQCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEBj
b25zdHJ1Y3RvckFyZ0xpc3QsICIqY29udGV4dCIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVk
VGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpXG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0
cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZh
Y2VOYW1lfVwiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IodGhy
b3dTY29wZSwgKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9y
Q2FsbFdpdGgifSwgIkRvY3VtZW50IikpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVz
eyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJn
TGlzdCwgImRvY3VtZW50Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JEb2N1bWVu
dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
dGhyb3dDb25zdHJ1Y3RvckRvY3VtZW50VW5hdmFpbGFibGVFcnJvcih0aHJvd1Njb3BlLCAqc3Rh
dGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7XG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpO1xuIik7CiAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAyMDQ4
NzApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
OCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgUnVudGltZUFycmF5OjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkp
OwogfQogCkBAIC0xMTMsOSArMTE2LDEyIEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUkKIAogYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFL
RV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3Ii
KSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC0xMjcsOSArMTMzLDEyIEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXQoSlNDZWxs
KiBjZWxsLCBFeGUKIAogYm9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGlt
ZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2
LDkgKzU2LDEyIEBAIHZvaWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIAog
RW5jb2RlZEpTVmFsdWUgUnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwog
ICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVNZXRo
b2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcih0aGlzT2JqZWN0LT5tX21ldGhvZC0+bnVtUGFyYW1ldGVycygpKSk7CiB9
CiAKQEAgLTc1LDYgKzc4LDkgQEAgYm9vbCBSdW50aW1lTWV0aG9kOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsUnVudGltZU1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBN
QUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIG1l
dGhvZCA9IHN0YXRpY19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7CiAKICAg
ICBpZiAoIW1ldGhvZC0+bWV0aG9kKCkpCkBAIC04NywxMyArOTMsMTMgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgICAgICBSdW50aW1lT2JqZWN0KiBydW50
aW1lT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0KHRoaXNWYWx1
ZSkpOwogICAgICAgICBpbnN0YW5jZSA9IHJ1bnRpbWVPYmplY3QtPmdldEludGVybmFsSW5zdGFu
Y2UoKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZSkgCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCiAgICAg
ICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4o
YXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2Up
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgIH0KICAgICBB
U1NFUlQoaW5zdGFuY2UpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5jcHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQs
MTEgKzY0LDE0IEBAIHZvaWQgUnVudGltZU9iamVjdDo6aW52YWxpZGF0ZSgpCiAKIEVuY29kZWRK
U1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PFJ1bnRpbWVP
YmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNl
PiBpbnN0YW5jZSA9IHRoaXNPYmotPm1faW5zdGFuY2U7CiAKICAgICBpZiAoIWluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NF
cnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAK
QEAgLTgyLDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFj
a09iCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogeyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9IGpzQ2Fz
dDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAgICAgaWYgKCFp
bnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIAogICAgIGluc3RhbmNlLT5i
ZWdpbigpOwogCkBAIC0xMDEsMTEgKzEwNywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2Jq
ZWN0OjpmaWVsZEdldHRlCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09i
aiA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAg
ICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYykpOwogICAgIAogICAgIGlu
c3RhbmNlLT5iZWdpbigpOwogCkBAIC0xMTgsOSArMTI3LDEyIEBAIEVuY29kZWRKU1ZhbHVlIFJ1
bnRpbWVPYmplY3Q6Om1ldGhvZEdldHQKIAogYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlICpleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIFJ1bnRp
bWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcih0aHJvd1Nj
b3BlLCBleGVjKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE2Myw5
ICsxNzUsMTIgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogCiBi
b29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0
aHJvd1Njb3BlLCB2bSk7CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PFJ1bnRpbWVPYmplY3QqPihjZWxsKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2Up
IHsKLSAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIApAQCAtMTkyLDkgKzIwNywxMiBAQCBib29sIFJ1bnRpbWVPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsCiAKIEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZGVmYXVsdFZh
bHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBjb25zdCBSdW50aW1lT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlm
ICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3Io
dGhyb3dTY29wZSwgZXhlYyk7CiAgICAgCiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9
IHRoaXNPYmplY3QtPm1faW5zdGFuY2U7CiAKQEAgLTI1OCw5ICsyNzYsMTIgQEAgQ29uc3RydWN0
VHlwZSBSdW50aW1lT2JqZWN0OjpnZXRDb25zdHJ1YwogCiB2b2lkIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3Qq
PihvYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewotICAgICAgICB0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
MSw5ICsyOTIsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAg
ICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVPYmpl
Y3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKFRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJv
bSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CisgICAgcmV0dXJuIHRocm93U2NvcGUudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mg
b2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDcgQEAgcHVibGljOgogCiAgICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBj
b25zdCB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3Qq
IHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVj
dCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoVGhyb3dTY29wZSYsIEV4ZWNTdGF0ZSopOwogCiAg
ICAgREVDTEFSRV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcAkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0
YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZv
aWQgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6
Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9i
YWxFeGNlcHRpb25TdHJpbmcoKSkpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAg
fQogCiAgICAgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsx
NTcsMTEgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1Zh
bHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhv
ZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0
aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
dGhyb3dTY29wZSwgZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBv
biBwbHVnLWluIG9iamVjdC4iKTsKIAogICAgIENNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0
PENNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7
CkBAIC0xODQsNyArMTkwLDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVj
U3RhdAogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2Fs
bGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxp
bmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZjQXJnc1tpXSk7CkBAIC0x
OTcsNiArMjAzLDkgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdAog
CiBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93
U2NvcGUsIHZtKTsKKwogICAgIGlmICghX29iamVjdC0+X2NsYXNzLT5pbnZva2VEZWZhdWx0KQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMjE5LDcgKzIyOCw3IEBAIEpTVmFs
dWUgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEUKICAgICB9CiAKICAgICBpZiAoIXJl
dHZhbCkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIp
KSk7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkp
OwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFz
ZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMjM2LDYgKzI0NSw5IEBAIGJvb2wgQ0luc3Rh
bmNlOjpzdXBwb3J0c0NvbnN0cnVjdCgpIGNvbnMKIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9r
ZUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZt
KTsKKwogICAgIGlmICghX29iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3QpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNTgsNyArMjcwLDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6
Omludm9rZUNvbnN0cnVjdChFeGVjUwogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAg
dGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICBmb3Ig
KGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVl
KCZjQXJnc1tpXSk7CkBAIC0zMTEsNiArMzIzLDkgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OnZhbHVl
T2YoRXhlY1N0YXRlKiBleAogCiBib29sIENJbnN0YW5jZTo6dG9KU1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IGNoYXIqIG5hbWUsIEpTVmFsdWUmIHJlc3VsdFZhbHVlKSBjb25zdAog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBfTlBOX0dldFN0cmluZ0lkZW50
aWZpZXIobmFtZSk7CiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmhhc01ldGhvZChfb2JqZWN0
LCBpZGVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyOCw3ICszNDMsNyBAQCBib29s
IENJbnN0YW5jZTo6dG9KU1ByaW1pdGl2ZShFeGVjU3RhdGUqCiAgICAgfQogCiAgICAgaWYgKCFy
ZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4i
KSkpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikp
KTsKIAogICAgIHJlc3VsdFZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVmFsdWUoZXhlYywgJnJl
c3VsdFZhcmlhbnQsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgX05QTl9SZWxlYXNlVmFyaWFu
dFZhbHVlKCZyZXN1bHRWYXJpYW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDksIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4
LTIwMDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSw2ICs3OSw5IEBAIHZvaWQgT2JqY0luc3Rh
bmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oTlMKIAogdm9pZCBPYmpjSW5zdGFuY2U6Om1vdmVHbG9i
YWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAg
IGlmICghc19leGNlcHRpb24pIHsKICAgICAgICAgQVNTRVJUKCFzX2V4Y2VwdGlvbkVudmlyb25t
ZW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODYsNyArODksNyBAQCB2b2lkIE9iamNJbnN0YW5j
ZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvCiAKICAgICBpZiAoIXNfZXhjZXB0aW9uRW52aXJvbm1l
bnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCkpIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHRocm93RXJy
b3IoZXhlYywgc19leGNlcHRpb24pOworICAgICAgICB0aHJvd0Vycm9yKHRocm93U2NvcGUsIGV4
ZWMsIHNfZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBA
IC0yMDUsOCArMjA4LDExIEBAIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChF
eGUKIAogSlNDOjpKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cyhPYmpDUnVudGltZU1ldGhv
ZDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2Jq
ZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBs
dWctaW4gb2JqZWN0LiIpKTsKIAogICAgIE9iamNNZXRob2QgKm1ldGhvZCA9IHN0YXRpY19jYXN0
PE9iamNNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhv
ZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShy
ZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk0LDYgKzk0LDkg
QEAgT2JqY0ZpZWxkOjpPYmpjRmllbGQoQ0ZTdHJpbmdSZWYgbmFtZSkKIAogSlNWYWx1ZSBPYmpj
RmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2Uq
IGluc3RhbmNlKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9U
SFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5k
ZWZpbmVkKCk7CiAgICAgCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0
IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3
IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQog
ICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNl
cHRpb24gcmVhc29uXSk7CisgICAgICAgIHRocm93RXJyb3IodGhyb3dTY29wZSwgZXhlYywgW2xv
Y2FsRXhjZXB0aW9uIHJlYXNvbl0pOwogICAgIH0KIAogICAgIC8vIFdvcmsgYXJvdW5kIHByb2Js
ZW0gaW4gc29tZSB2ZXJzaW9ucyBvZiBHQ0Mgd2hlcmUgcmVzdWx0IGdldHMgbWFya2VkIHZvbGF0
aWxlIGFuZApAQCAtMTI3LDYgKzEzMCw5IEBAIHN0YXRpYyBpZCBjb252ZXJ0VmFsdWVUb09iamNP
YmplY3QoRXhlY1MKIAogYm9vbCBPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBpbnN0YW5jZSwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0
CiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUo
dGhyb3dTY29wZSwgdm0pOworCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNv
bnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwogICAgIGlkIHZhbHVl
ID0gY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KGV4ZWMsIGFWYWx1ZSk7CiAKQEAgLTE0MSw3ICsx
NDcsNyBAQCBib29sIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNlKEV4ZWNTCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikg
ewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAgIHRocm93RXJyb3IodGhyb3dT
Y29wZSwgZXhlYywgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0pOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogfQpAQCAtMTU2LDEzICsxNjIsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXko
T2JqZWN0U3RydWN0UHRyIGEsIAogCiBib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhyb3dT
Y29wZSwgdm0pOworCiAgICAgaWYgKCFbX2FycmF5LmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW5zZXJ0T2JqZWN0OmF0SW5kZXg6KV0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKHRocm93U2NvcGUsIGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgaXMg
bm90IG11dGFibGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYg
KGluZGV4ID4gW19hcnJheS5nZXQoKSBjb3VudF0pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFy
cmF5IHNpemUuIikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xNzQsMjEgKzE4MywyNCBAQCBib29s
IE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4CiAgICAgICAgIFtfYXJyYXkuZ2V0
KCkgaW5zZXJ0T2JqZWN0Om9WYWx1ZS5vYmplY3RWYWx1ZSBhdEluZGV4OmluZGV4XTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9u
KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlv
bi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKIEpTVmFsdWUgT2JqY0Fy
cmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAog
eworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRo
cm93U2NvcGUsIHZtKTsKKwogICAgIGlmIChpbmRleCA+IFtfYXJyYXkuZ2V0KCkgY291bnRdKQot
ICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
ICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgIEB0cnkgewogICAgICAgICBpZCBv
YmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAob2Jq
KQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2Jq
LCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4
Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlv
bi4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOwogICAgIH0KICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTIzMiw5ICsyNDQsMTIgQEAgYm9vbCBPYmpjRmFs
bGJhY2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Nj
b3BlLCB2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKE9iakNSdW50aW1lT2JqZWN0OjppbmZvKCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzVW5kZWZpbmVkKCk7CiAKQEAgLTI0Miw3ICsyNTcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgT2JqY0luc3RhbmNlKiBvYmpjSW5zdGFuY2UgPSBy
dW50aW1lT2JqZWN0LT5nZXRJbnRlcm5hbE9iakNJbnN0YW5jZSgpOwogCiAgICAgaWYgKCFvYmpj
SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6
dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUs
IGV4ZWMpKTsKICAgICAKICAgICBvYmpjSW5zdGFuY2UtPmJlZ2luKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNyBAQCBKU1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKEV4ZWNT
dGF0CiBKU1ZhbHVlIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0ZSosIHZvaWQqIGJ1
ZmZlciwgT2JqY1ZhbHVlVHlwZSwgUm9vdE9iamVjdCopOwogT2JqY1ZhbHVlVHlwZSBvYmpjVmFs
dWVUeXBlRm9yVHlwZShjb25zdCBjaGFyICp0eXBlKTsKIAotSlNPYmplY3QgKnRocm93RXJyb3Io
RXhlY1N0YXRlICosIE5TU3RyaW5nICptZXNzYWdlKTsKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKFRo
cm93U2NvcGUmLCBFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOwogCiB9IC8vIG5hbWVz
cGFjZSBCaW5kaW5ncwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCShyZXZpc2lvbiAyMDQ4NzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEzIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzEwLDEwICszMTAsMTAgQEAgT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9y
VHlwZShjb25zdAogICAgIHJldHVybiBvYmpjVmFsdWVUeXBlOwogfQogCi1KU09iamVjdCAqdGhy
b3dFcnJvcihFeGVjU3RhdGUgKmV4ZWMsIE5TU3RyaW5nICptZXNzYWdlKQorSlNPYmplY3QgKnRo
cm93RXJyb3IoVGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhlY1N0YXRlICpleGVjLCBOU1N0cmlu
ZyAqbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobWVzc2FnZSk7Ci0gICAgSlNPYmplY3QgKmVycm9y
ID0gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMs
IFN0cmluZyhtZXNzYWdlKSkpOworICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93U2NvcGUudGhy
b3dFeGNlcHRpb24oZXhlYywgSlNDOjpjcmVhdGVFcnJvcihleGVjLCBTdHJpbmcobWVzc2FnZSkp
KTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHJldmlz
aW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QTWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNiArNTksOSBAQCB2b2lkIEpTTlBN
ZXRob2Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAg
ICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5jYWxs
ZWUoKSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpAQCAt
NzgsNyArODEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhvZChleGVj
LCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHRocm93U2Nv
cGUsIGV4ZWMpOwogfQogCiBDYWxsVHlwZSBKU05QTWV0aG9kOjpnZXRDYWxsRGF0YShKU0NlbGwq
LCBDYWxsRGF0YSYgY2FsbERhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShyZXZpc2lvbiAy
MDQ4NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw5ICsxMDgsMTIgQEAgTlBPYmplY3Qq
IEpTTlBPYmplY3Q6OmxlYWtOUE9iamVjdCgpCiAKIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUqIGV4ZWMsIE5QSWRlbnRpZmllciBtZXRob2ROYW1lKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7
CisKICAgICBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAo
IW1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUsIGV4
ZWMpOwogCiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFt
ZXRob2ROYW1lKQpAQCAtMTQzLDcgKzE0Niw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNb
aV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24g
TlBPYmplY3QuIikpOworICAgICAgICB0aHJvd1Njb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CiAK
ICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVydE5QVmFyaWFu
dFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICByZWxlYXNlTlBW
YXJpYW50VmFsdWUoJnJlc3VsdCk7CkBAIC0xNTIsOSArMTU1LDEyIEBAIEpTVmFsdWUgSlNOUE9i
amVjdDo6Y2FsbE1ldGhvZChFeGVjU3RhdGUKIAogSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNh
bGxPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEFTU0VSVF9U
SElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAKICAgICBzaXpl
X3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBWZWN0b3I8TlBW
YXJpYW50LCA4PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0xODMsNyArMTg5LDcgQEAg
SlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogICAgICAgICByZWxlYXNl
TlBWYXJpYW50VmFsdWUoJmFyZ3VtZW50c1tpXSk7CiAKICAgICBpZiAoIXJldHVyblZhbHVlKQot
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CisgICAgICAgIHRocm93U2Nv
cGUudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcg
bWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1f
b2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE5Miw5
ICsxOTgsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogCiBK
U1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUs
IHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAg
IGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29w
ZSwgZXhlYyk7CiAKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291
bnQoKTsKICAgICBWZWN0b3I8TlBWYXJpYW50LCA4PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7
CkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsQ29uc3RydWN0b3Io
RXhlYwogICAgIH0KIAogICAgIGlmICghcmV0dXJuVmFsdWUpCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0
aG9kIG9uIE5QT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3Qu
IikpOwogICAgIAogICAgIEpTVmFsdWUgdmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVydE5QVmFy
aWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICByZWxlYXNl
TlBWYXJpYW50VmFsdWUoJnJlc3VsdCk7CkBAIC0yNjYsMTAgKzI3NSwxMyBAQCBDb25zdHJ1Y3RU
eXBlIEpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhCiAKIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBK
U05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IGlmICghdGhpc09iamVjdC0+bV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29w
ZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0zMDAsMTAg
KzMxMiwxMyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iCiAKIGJv
b2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJPV19TQ09QRSh0aHJvd1Njb3Bl
LCB2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9i
amVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKLSAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKHRocm93U2NvcGUsIGV4ZWMpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0zNTQsNiArMzY5LDkgQEAgYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SgogCiBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgTlBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE1BS0VfVEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgQVNTRVJUX1RISVNfR0Nf
T0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlz
IHN5bWJvbC4KQEAgLTM2MSw3ICszNzksNyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KEV4ZWNTdGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9ucE9iamVj
dCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhlYyk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTM5MCwxMCArNDA4LDEzIEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXQKIAogdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
TlBPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICgh
dGhpc09iamVjdC0+bV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IodGhyb3dTY29wZSwgZXhl
Yyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzOCwxMSArNDU5LDE0IEBAIHZvaWQg
SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KIAogRW5jb2RlZEpTVmFsdWUgSlNO
UE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBNQUtFX1RIUk9XX1NDT1BFKHRocm93U2NvcGUsIHZtKTsKKwogICAgIEpT
TlBPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmosIGluZm8o
KSk7CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqLT5tX25wT2JqZWN0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcih0aHJvd1Njb3Bl
LCBleGVjKSk7CiAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBPYmplY3QtPl9jbGFzcy0+Z2V0UHJv
cGVydHkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC00NzgsMjMgKzUwMiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9wZXJ0eUdl
dHRlCiAKIEVuY29kZWRKU1ZhbHVlIEpTTlBPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NPUEUodGhy
b3dTY29wZSwgdm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU05QT2Jq
ZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iaiwgaW5mbygpKTsKICAgICAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBP
YmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKHRocm93U2NvcGUsIGV4ZWMpKTsKIAogICAgIE5QSWRlbnRpZmllciBucElk
ZW50aWZpZXIgPSBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpOwogICAg
IC8vIElmIHRoZSBwcm9wZXJ0eU5hbWUgaXMgc3ltYm9sLgogICAgIGlmICghbnBJZGVudGlmaWVy
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcih0aHJvd1Njb3BlLCBleGVjKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTTlBNZXRob2Q6OmNyZWF0ZShleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgcHJvcGVy
dHlOYW1lLnB1YmxpY05hbWUoKSwgbnBJZGVudGlmaWVyKSk7CiB9CiAKLUpTT2JqZWN0KiBKU05Q
T2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVj
dCogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNz
IG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKKyAgICByZXR1cm4gdGhyb3dTY29w
ZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVHJ5aW5n
IHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiAyMDQ4NzApCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAgc3RhdGljIEpTQzo6SlNP
YmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6VGhyb3dTY29wZSYsIEpTQzo6RXhl
Y1N0YXRlKik7CiAKICAgICBOUFJ1bnRpbWVPYmplY3RNYXAqIG1fb2JqZWN0TWFwOwogICAgIE5Q
T2JqZWN0KiBtX25wT2JqZWN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5j
cHAJKHJldmlzaW9uIDIwNDg3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzQsMTIg
KzI3NCwxNSBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6c2V0R2xvYmFsRXhjZXB0CiAgICAg
CiB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0Vf
VEhST1dfU0NPUEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0
cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAg
IH0KICAgICAKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjA0ODcwKQorKysgU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE1BS0VfVEhST1dfU0NP
UEUodGhyb3dTY29wZSwgdm0pOworCiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAg
IGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIw
NDg3MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1Zh
bHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBy
dW50aW1lTWV0aG9kKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTUFLRV9USFJP
V19TQ09QRSh0aHJvd1Njb3BlLCB2bSk7CisKICAgICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRo
b2QpLT5pbmhlcml0cyhQcm94eVJ1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tlIG5v
bi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcih0aHJvd1Njb3BlLCBleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8g
aW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKICAgICBQ
cm94eU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UHJveHlNZXRob2QqPihydW50aW1lTWV0
aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>287336</attachid>
            <date>2016-08-29 15:18:23 -0700</date>
            <delta_ts>2016-08-29 15:18:23 -0700</delta_ts>
            <desc>x86_64 benchmark result run 1</desc>
            <filename>bench-result-x86_64-1.txt</filename>
            <type>text/plain</type>
            <size>86567</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxNSAmJiB0aW1lIC4vVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgLS1v
dXRlciAxMCBiYXNlOi9Wb2x1bWVzL0RhdGEvd3Mtb2xkL09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQv
UmVsZWFzZS9EdW1wUmVuZGVyVHJlZSBuZXc6L1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9X
ZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlCjEzNDkyLzEzNDkyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKR2VuZXJhdGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9W
b2x1bWVzL0RhdGEvd3M2L0ludGVybmFsL2Jhc2VfbmV3X1N1blNwaWRlckxvbmdTcGlkZXJWOFNw
aWRlck9jdGFuZUtyYWtlbkpTQmVuY2hNaWNyb2JlbmNobWFya3NBc21CZW5jaERTUENvbXByZXNz
aW9uQmVuY2hfZGV1Y2FsaW9uXzIwMTYwODI5XzExMDNfcmVwb3J0LnR4dApBbmQgcmF3IGRhdGEg
YXQgL1ZvbHVtZXMvRGF0YS93czYvSW50ZXJuYWwvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRl
clY4U3BpZGVyT2N0YW5lS3Jha2VuSlNCZW5jaE1pY3JvYmVuY2htYXJrc0FzbUJlbmNoRFNQQ29t
cHJlc3Npb25CZW5jaF9kZXVjYWxpb25fMjAxNjA4MjlfMTEwMy5qc29uCgpCZW5jaG1hcmsgcmVw
b3J0IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtlbiwg
SlNCZW5jaCwgTWljcm9iZW5jaG1hcmtzLCBBc21CZW5jaCwgRFNQLCBhbmQgQ29tcHJlc3Npb25C
ZW5jaCBvbiBkZXVjYWxpb24gKE1hY1BybzYsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1Zv
bHVtZXMvRGF0YS93cy1vbGQvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5k
ZXJUcmVlIChyMjA1MTAzKQoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVuU291cmNlL1dl
YktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUgKHIyMDUxMDMpCgpDb2xsZWN0ZWQgMTAg
c2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDEwIFZNIGludm9jYXRpb25zIHBlciBiZW5j
aG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRz
LgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11
cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1p
Y3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGlt
ZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjM4MDgrLTAuMTQ5NiAgICAgPyAgICAgIDYuNTM0MistMC4xMjU2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0MHggc2xvd2VyCiAgIDNkLW1vcnBoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTQyMistMC4wNzU1ICAgICA/ICAgICAg
Ni41NTY0Ky0wLjA4MjggICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy4xMjM0Ky0wLjI5NTAgICAgICAgICAgICA3LjA1MDgrLTAu
MTc5MyAgICAgICAgICBtaWdodCBiZSAxLjAxMDN4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRy
ZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM3MzkrLTAuMTAyOCAgICAgICAg
ICAgIDMuMzExMystMC4wMzgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OXggZmFzdGVyCiAgIGFj
Y2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTc4MCst
MC4xMTAzICAgICAgICAgICAgNi45Mjg5Ky0wLjA2MDUgICAgICAgIAogICBhY2Nlc3MtbmJvZHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjIxODMrLTAuMDM3MiAgICAg
PyAgICAgIDMuMjMwOSstMC4wNjAxICAgICAgICA/CiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzc3MCstMC4wODgyICAgICAgICAgICAgNC4z
NDQ2Ky0wLjA5MjMgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjI4NDErLTAuMDcwMSAgICAgPyAgICAgIDEuMzQzMystMC4xMTEy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2MXggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTg0NSstMC4wMzc2ICAgICAgICAgICAg
Mi45NzI1Ky0wLjA1MTcgICAgICAgIAogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjMwMDkrLTAuMDY1OSAgICAgICAgICAgIDIuMjY2OSstMC4w
NDUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1MHggZmFzdGVyCiAgIGJpdG9wcy1uc2lldmUtYml0
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzE3NystMC4wNzIxICAgICAgICAg
ICAgMy42NjY3Ky0wLjA0NTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTM5eCBmYXN0ZXIKICAgY29u
dHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi45MjYwKy0w
LjA2ODcgICAgICAgICAgICAyLjg4OTYrLTAuMDM2NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjZ4
IGZhc3RlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1Ljg1MTYrLTAuMTMxMiAgICAgICAgICAgIDUuNzczNistMC4xMDUxICAgICAgICAgIG1p
Z2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMDI4OSstMC4wMzcxICAgICAhICAgICAgMy4xNzEzKy0wLjA5
MTIgICAgICAgICEgZGVmaW5pdGVseSAxLjA0NzB4IHNsb3dlcgogICBjcnlwdG8tc2hhMSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk2ODcrLTAuMDc5NCAgICAgPyAg
ICAgIDIuOTkwMistMC4wMzA2ICAgICAgICA/CiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTMuMTA1MSstMC4yNzgxICAgICA/ICAgICAxMy40Mzc5
Ky0wLjM1MDggICAgICAgID8gbWlnaHQgYmUgMS4wMjU0eCBzbG93ZXIKICAgZGF0ZS1mb3JtYXQt
eHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43NTAwKy0wLjE2OTQgICAg
ID8gICAgICA3LjkyNDkrLTAuMTI5MCAgICAgICAgPyBtaWdodCBiZSAxLjAyMjZ4IHNsb3dlcgog
ICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM1
NzMrLTAuMDc4MCAgICAgICAgICAgIDMuMzEzNystMC4wNzU2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEzMnggZmFzdGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUuMzU0OSstMC4wNzg3ICAgICAgICAgICAgNS4zNTE0Ky0wLjEzNjggICAgICAg
IAogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjM2NzQrLTAuMDU3NiAgICAgICAgICAgIDIuMzU0MistMC4wNDM3ICAgICAgICAKICAgcmVnZXhw
LWRuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS40MTU1Ky0wLjIw
NjQgICAgICAgICAgICA5LjQxMjcrLTAuMTQ1MiAgICAgICAgCiAgIHN0cmluZy1iYXNlNjQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMDA5MystMC4xNjY2ICAgICAgICAg
ICAgNi45ODE2Ky0wLjE3MTEgICAgICAgIAogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjgwNjUrLTAuMTgxMCAgICAgPyAgICAgIDcuOTQ5Mist
MC4yNzk0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4M3ggc2xvd2VyCiAgIHN0cmluZy10YWdjbG91
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjE4NCstMC4yMDMxICAgICA/
ICAgICAxMS44NDQ2Ky0wLjIwNzcgICAgICAgID8gbWlnaHQgYmUgMS4wMTk1eCBzbG93ZXIKICAg
c3RyaW5nLXVucGFjay1jb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS4xMDA5
Ky0wLjQzMDcgICAgID8gICAgIDI1LjUzOTgrLTAuMjgwNCAgICAgICAgPyBtaWdodCBiZSAxLjAx
NzV4IHNsb3dlcgogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjE3OTYrLTAuMTE5NyAgICAgPyAgICAgIDcuMjczNistMC4xNDYyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEzMXggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjI3MzkrLTAuMDUwNiAgICAgPyAgICAgIDYuMzIzNist
MC4wMjkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDA3OXggc2xvd2VyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApM
b25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMDk0LjcwODcrLTE0LjY1NDcgICAgPyAgIDExMDguODcwMSstMzEuNTYyOCAgICAgICA/
IG1pZ2h0IGJlIDEuMDEyOXggc2xvd2VyCiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3MTguODUxMystNS44MzUyICAgICA/ICAgIDcyMy4wNjMwKy00
Ljk1MTIgICAgICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYxNi45MDE5Ky04LjI1MjMgICAgID8gICAgNjE5Ljk1NzgrLTYuNjc4MCAgICAg
ICAgPwogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MDM1LjgxMDUrLTcuNTcwMSAgICAgICAgIDEwMzIuODY0NCstOS43MzIxICAgICAgICAKICAgYWNj
ZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxMS40NDA1Ky01
LjY3NzggICAgID8gICAgMzIyLjEzNTQrLTEwLjg1ODIgICAgICAgPyBtaWdodCBiZSAxLjAzNDN4
IHNsb3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNjI4LjczMDArLTQuODQ5MiAgICAgPyAgICA2MzYuNjQxNCstMTUuMjQyOCAgICAgICA/IG1p
Z2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzODIuMzEyMCstMi40ODQ5ICAgICAgICAgIDM4Mi4yOTM3Ky00LjI5
MDQgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM3LjI3NTIrLTAuNDg0NSAgICAgICAgICAgMzcuMjM1NystMC4yNjA4ICAgICAgICAK
ICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MS40
OTAyKy0xLjUwMDkgICAgICAgICAgMTQwLjA5NDArLTAuOTQwNSAgICAgICAgCiAgIGJpdG9wcy1u
c2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NDUuODkwMCstMi43MDA2
ICAgICA/ICAgIDQ0Ni4xMjE5Ky02LjEwNzIgICAgICAgID8KICAgY29udHJvbGZsb3ctcmVjdXJz
aXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0OC4zOTE4Ky05Ljg5OTEgICAgID8gICAg
NTQ4LjgzODcrLTQuMzY4MiAgICAgICAgPwogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNzI2LjUwOTQrLTYuNjU0OCAgICAgPyAgICA3MzQuOTc0Myst
NS40MjMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExN3ggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ODMuMTI1OSstNS43MjIzICAgICAg
ICAgIDU3Mi4yNjc5Ky03LjM5MjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTkweCBmYXN0ZXIKICAg
Y3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2NS42NTg3
Ky01LjU4MDEgICAgID8gICAgNzczLjUwMDArLTkuMDAyOSAgICAgICAgPyBtaWdodCBiZSAxLjAx
MDJ4IHNsb3dlcgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTI1LjQzMzQrLTEwLjAwNDIgICAgPyAgICA1MzQuMzMwNSstMTUuNjU2MyAgICAgICA/
IG1pZ2h0IGJlIDEuMDE2OXggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3NjYuNDk4NistMTcuNDQ4OSAgICAgICAgIDc1NS44MDkzKy01
LjQzODAgICAgICAgICAgbWlnaHQgYmUgMS4wMTQxeCBmYXN0ZXIKICAgaGFzaC1tYXAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4Mi43Mzk5Ky0zLjA1MTAgICAgICAg
ICAgMTgxLjcwMTIrLTIuMzIwNSAgICAgICAgCiAgIG1hdGgtY29yZGljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1NjkuOTgzOSstMTIuMDg5OSAgICA/ICAgIDU3MS45MzM5
Ky05LjUxNzkgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQwNC45MTg0Ky02LjM2OTggICAgID8gICAgNDA3LjMwNDIrLTcuNjY1MiAg
ICAgICAgPwogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTk0LjU4ODArLTQuNjY4NSAgICAgPyAgICA2MDEuNzgyNSstOC45ODE0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDEyMXggc2xvd2VyCiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0OTYuMjY5OCstMy43NjQ2ICAgICA/ICAgIDQ5OS4wODExKy0zLjIw
MTggICAgICAgID8KICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQxNS4wMDA5Ky00LjA1NTAgICAgID8gICAgNDI1LjAwOTMrLTguOTc1OSAgICAgICAg
PyBtaWdodCBiZSAxLjAyNDF4IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjA4LjY1NjIrLTIuMTYxMiAgICAgPyAgICAyMTEuNzA4NSst
Mi4xNjE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0Nnggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQxLjQ5MzgrLTEuMjQ5NCAgICAg
PyAgICA0NDMuODIzOCstMS44NTc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA1M3ggc2xvd2VyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApWOFNwaWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0NS4xOTE0Ky0wLjYyMDIgICAgID8gICAgIDQ1LjIyMTkrLTAu
NDQ4OCAgICAgICAgPwogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDcyLjI0ODkrLTEuNDEzNSAgICAgPyAgICAgNzIuNjU1MistMi41MDQxICAgICAg
ICA/CiAgIGVhcmxleS1ib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDcuNzkwNSstMC45NDA5ICAgICAgICAgICA0Ny4xNDk2Ky0wLjkyMjUgICAgICAgICAgbWlnaHQg
YmUgMS4wMTM2eCBmYXN0ZXIKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MC42MjU2Ky0wLjYxMjQgICAgICAgICAgIDUwLjMyMTMrLTAuOTYxOCAg
ICAgICAgCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNzEuNDExOSstMC42NDYwICAgICAgICAgICA3MC43MDkzKy0wLjcyOTQgICAgICAgIAogICBy
aWNoYXJkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyLjkxODQr
LTEuMjM4NCAgICAgISAgICAgNTQuODk0NystMC43MTk2ICAgICAgICAhIGRlZmluaXRlbHkgMS4w
MzczeCBzbG93ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1Mi42NDY4Ky0wLjc3MDAgICAgID8gICAgIDUyLjc0NzkrLTAuMzY0NCAgICAgICAg
PwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
NS4yNDE2Ky0wLjU0MTQgICAgID8gICAgIDU1LjM1ODArLTAuMzE5MyAgICAgICAgPyBtaWdodCBi
ZSAxLjAwMjF4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKT2N0YW5lOgogICBlbmNyeXB0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjAzOTkrLTAuMDAyMjQgICAg
ICAgICAgMC4yMDMzMistMC4wMDMwOSAgICAgICAKICAgZGVjcnlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQ5ODIzKy0wLjA2NDg4ICAgICAgICAgIDMuNDk2
NjgrLTAuMDQyMzUgICAgICAgCiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgICAgMC4xODA1NSstMC4wMDMzMiAgICA/ICAgICAwLjE4Mzc4Ky0wLjAxMDcw
ICAgICAgID8gbWlnaHQgYmUgMS4wMTc5eCBzbG93ZXIKICAgZWFybGV5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM4NDQ5Ky0wLjAwMzk2ICAgID8gICAgIDAu
Mzg3NDgrLTAuMDA1OTMgICAgICAgPwogICBib3llciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuMDk2NjArLTAuMTY5NTEgICAgICAgICAgNi4wMzU2NCstMC4w
Mzc5NiAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMXggZmFzdGVyCiAgIG5hdmllci1zdG9rZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgNS41ODgxMistMC4wNDUyMiAgICA/ICAg
ICA1LjU5OTg3Ky0wLjA3MDMzICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgICAxLjI0NjcwKy0wLjAzMjg0ICAgICAgICAgIDEuMjIxMjcr
LTAuMDIwMTggICAgICAgICBtaWdodCBiZSAxLjAyMDh4IGZhc3RlcgogICByaWNoYXJkcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMTA4OTIrLTAuMDAxNjEgICAg
PyAgICAgMC4xMDkxOSstMC4wMDI0MSAgICAgICA/CiAgIHNwbGF5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC40MDYwMSstMC4wMDUyNSAgICAgICAgICAwLjQw
NDIxKy0wLjAwNDk4ICAgICAgIAogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgyICAgICAgMjQuODcxMjQrLTAuMjAzMzQgICAgPyAgICAyNC45MzU2OSstMC4yNDE0
MSAgICAgICA/CiAgIHBkZmpzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIg
ICAgICA0Ny45OTUzOSstMC40OTY2OCAgICA/ICAgIDQ4LjAzOTE1Ky0wLjUwNTcyICAgICAgID8K
ICAgbWFuZHJlZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDUxLjY1
OTYxKy0wLjM3MzcxICAgICAgICAgNTEuMDEwMjYrLTAuMjc3MzYgICAgICAgICBtaWdodCBiZSAx
LjAxMjd4IGZhc3RlcgogICBnYmVtdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgMzkuODk2MzcrLTAuNjA5NDEgICAgPyAgICA0MC4xNDY1NistMC42MjI4NSAgICAg
ICA/CiAgIGNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zODEyNystMC4wMDI5MSAgICA/ICAgICAwLjM4MzE4Ky0wLjAwNTExICAgICAgID8KICAganF1
ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk0NDYwKy0w
LjAzNTg0ICAgICAgICAgIDQuOTE0NjgrLTAuMDQwNTUgICAgICAgCiAgIGJveDJkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAxMS45ODM2OSstMC4xMzg5MyAgICAg
ICAgIDExLjkxNjY0Ky0wLjEwNDc2ICAgICAgIAogICB6bGliICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgyICAgICAzOTEuOTkwMTQrLTEyLjE4Mjk2ICAgPyAgIDM5NC40NTc4
MSstMTAuNTg1ODQgICAgICA/CiAgIHR5cGVzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDIgICAgIDgyNC43MzU4NistMTEuMjAwNzkgICAgICAgODE2LjY2NjUzKy02Ljk5MzI5
ICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA2LjI4Mjg5Ky0wLjAyMjQxICAgICAgICAgIDYuMjc0NDUrLTAuMDI2MjIgICAgICAgICBt
aWdodCBiZSAxLjAwMTN4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3Rh
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMS41MDMrLTEuMjA3
ICAgICAgPyAgICAgMTEzLjE0NistMS42MTEgICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0N3ggc2xv
d2VyCiAgIGF1ZGlvLWJlYXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDc0Ljk3NystMC44MzUgICAgICA/ICAgICAgNzUuNzczKy0xLjIzNCAgICAgICAgID8gbWlnaHQg
YmUgMS4wMTA2eCBzbG93ZXIKICAgYXVkaW8tZGZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMTQuODA5Ky0xLjMyNiAgICAgICAgICAgIDExMy44OTMrLTAuODM2ICAg
ICAgICAgCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUxLjMzMistMS40ODkgICAgICAgICAgICAgNTAuNzY5Ky0wLjY2MCAgICAgICAgICAgbWln
aHQgYmUgMS4wMTExeCBmYXN0ZXIKICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjcuNzc1Ky0wLjgzNSAgICAgID8gICAgICA2OC41NDgrLTAuNzY1
ICAgICAgICAgPyBtaWdodCBiZSAxLjAxMTR4IHNsb3dlcgogICBpbWFnaW5nLWRhcmtyb29tICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5My40MjIrLTMuNjU0ICAgICAgICAgICAg
IDkyLjI2MSstMS4yOTUgICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNnggZmFzdGVyCiAgIGltYWdp
bmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0LjM2NystMC42
NDIgICAgICA/ICAgICAgNjUuMjIxKy0wLjg0OSAgICAgICAgID8gbWlnaHQgYmUgMS4wMTMzeCBz
bG93ZXIKICAgaW1hZ2luZy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODUuNzQ0Ky01Ljg0OCAgICAgICAgICAgICA4NC40MzQrLTUuMzIwICAgICAgICAgICBtaWdo
dCBiZSAxLjAxNTV4IGZhc3RlcgogICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ny4wODYrLTAuNDAzICAgICAgISAgICAgIDQ4LjM5OSstMC44NDMg
ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjc5eCBzbG93ZXIKICAganNvbi1zdHJpbmdpZnktdGlu
ZGVyYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQuODc0Ky0wLjIxOCAgICAgID8gICAg
ICAzNS4wMjgrLTAuMzYxICAgICAgICAgPwogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1OC43OTErLTAuOTQ5ICAgICAgICAgICAgIDU4LjE3Mist
MC40MDIgICAgICAgICAgIG1pZ2h0IGJlIDEuMDEwNnggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0
by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LjA4NSstMS44NjMgICAgICA/
ICAgICAgNjkuMTEzKy0xLjIxOSAgICAgICAgID8gbWlnaHQgYmUgMS4wMzAyeCBzbG93ZXIKICAg
c3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTguMjMz
Ky0xLjU5OSAgICAgID8gICAgIDExOS4xMDQrLTAuODU1ICAgICAgICAgPwogICBzdGFuZm9yZC1j
cnlwdG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAgICA0OS4wMzgrLTAuNjM4ICAg
ICAgPyAgICAgIDQ5Ljc5NCstMS4xMDkgICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NHggc2xvd2Vy
CgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
NC4yMTcrLTAuNTY2ICAgICAgPyAgICAgIDc0LjU0NystMC40MDMgICAgICAgICA/IG1pZ2h0IGJl
IDEuMDA0NHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApKU0JlbmNoOgogICBhbWF6b24tY2hyb21l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE1NzYrLTAuMTQyOSAgICAg
ICAgICAgIDQuMDU5MCstMC4wNDU3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0M3ggZmFzdGVyCiAg
IGFtYXpvbi1jaHJvbWUtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDEz
MistMC4xMzAzICAgICA/ICAgICAgNC41MTIzKy0wLjExNzYgICAgICAgID8gbWlnaHQgYmUgMS4w
MjI1eCBzbG93ZXIKICAgYW1hem9uLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy40NDk2Ky0wLjE0MzEgICAgID8gICAgICAzLjQ1NzMrLTAuMDgyOSAgICAgICAg
PwogICBhbWF6b24tZmlyZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
LjIxMjkrLTAuMDkxNiAgICAgPyAgICAgIDMuMzM3NistMC4xNTUyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDM4OHggc2xvd2VyCiAgIGFtYXpvbi1zYWZhcmkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNzgxNistMC4xMzk2ICAgICA/ICAgICAgNC43OTQ3Ky0wLjEyODMgICAg
ICAgID8KICAgZmFjZWJvb2stY2hyb21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1My43NjAyKy0wLjg2ODQgICAgID8gICAgIDU0LjU5NDcrLTIuNTMwOCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxNTV4IHNsb3dlcgogICBmYWNlYm9vay1jaHJvbWUtd2luICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTEwLjg1MDcrLTAuOTA5NCAgICAgPyAgICAxMTEuMTA1MistMC45MjQy
ICAgICAgICA/CiAgIGZhY2Vib29rLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzEuNTE1OCstMC41ODU1ICAgICA/ICAgICAzMS44MzAxKy0wLjM5OTUgICAgICAgID8K
ICAgZmFjZWJvb2stZmlyZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC40
MDE5Ky0wLjQyNDUgICAgID8gICAgIDIwLjgzMDArLTAuMzQ2OSAgICAgICAgPyBtaWdodCBiZSAx
LjAyMTB4IHNsb3dlcgogICBmYWNlYm9vay1zYWZhcmkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTEyLjIxNDYrLTEuMTU0NiAgICAgPyAgICAxMTMuODgzMistMS42NTk5ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE0OXggc2xvd2VyCiAgIGdvb2dsZS1jaHJvbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDUuNjE4NCstMC44ODY2ICAgICA/ICAgICA0Ni41MTQ3
Ky0wLjgyMTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTk2eCBzbG93ZXIKICAgZ29vZ2xlLWNocm9t
ZS13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC42NDMxKy0wLjY1MTQgICAg
ICAgICAgIDQ0LjIxMDYrLTAuNTI4NSAgICAgICAgCiAgIGdvb2dsZS1maXJlZm94ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuOTE5NistMC40NzgwICAgICA/ICAgICAyMy4w
OTg3Ky0wLjUwNDIgICAgICAgID8KICAgZ29vZ2xlLWZpcmVmb3gtd2luICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNy4wNDM1Ky0wLjM1ODEgICAgID8gICAgIDI3LjMzNzIrLTAuNDY2
NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDl4IHNsb3dlcgogICBnb29nbGUtc2FmYXJpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2LjE2OTYrLTAuNDA4OSAgICAgPyAgICAg
NDcuNjA0MystMS4xNjM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMXggc2xvd2VyCiAgIHR3aXR0
ZXItY2hyb21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTA0MistMC4y
NDExICAgICAgICAgICAgNy44MTY1Ky0wLjE4NTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBm
YXN0ZXIKICAgdHdpdHRlci1jaHJvbWUtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNy42OTQzKy0wLjIxNzQgICAgID8gICAgICA3LjcyMTMrLTAuMjA1MSAgICAgICAgPwogICB0
d2l0dGVyLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE0Nzgr
LTAuMDQ3OCAgICAgPyAgICAgIDEuMTU5MSstMC4wNDc3ICAgICAgICA/CiAgIHR3aXR0ZXItZmly
ZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTA1NystMC4wNDI2ICAg
ICA/ICAgICAgMS4xMTAyKy0wLjAzNTEgICAgICAgID8KICAgdHdpdHRlci1zYWZhcmkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy40MzE2Ky0wLjI2MDUgICAgID8gICAgICA3
LjQzOTArLTAuMTE0NCAgICAgICAgPwogICB5YWhvby1jaHJvbWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ1LjU4NjcrLTEuMTY1MiAgICAgICAgICAgNDUuNTc3OCstMC45
NjEyICAgICAgICAKICAgeWFob28tY2hyb21lLXdpbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzOS43MzUxKy0wLjU0NDYgICAgID8gICAgIDQwLjUxODcrLTAuNTk1OCAgICAgICAg
PyBtaWdodCBiZSAxLjAxOTd4IHNsb3dlcgogICB5YWhvby1maXJlZm94ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQ1LjE5MDMrLTAuNzY1OCAgICAgPyAgICAgNDUuMjU1Mist
MC45ODAxICAgICAgICA/CiAgIHlhaG9vLWZpcmVmb3gtd2luICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzAuMzEyMCstMC4yODE4ICAgICA/ICAgICAzMS4wNjAyKy0wLjcxNTAgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjQ3eCBzbG93ZXIKICAgeWFob28tc2FmYXJpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NC40NTg4Ky0wLjY5MTMgICAgID8gICAgIDQ0Ljk5
MTArLTAuNjU0MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjB4IHNsb3dlcgoKICAgPGdlb21ldHJp
Yz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4xMTczKy0wLjA4MDkg
ICAgID8gICAgIDE2LjI2NTQrLTAuMDk1NCAgICAgICAgPyBtaWdodCBiZSAxLjAwOTJ4IHNsb3dl
cgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKTWljcm9iZW5jaG1hcmtzOgogICBhYmMtZm9yd2FyZC1sb29wLWVx
dWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMDMrLTAuMDEzNyAgICAgICAgICAg
IDAuMjIyOCstMC4wMTMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDMzOHggZmFzdGVyCiAgIGFiYy1w
b3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI2MSstMC4w
MTA0ICAgICA/ICAgICAgMC4yMjg4Ky0wLjAxNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMTIweCBz
bG93ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMjI5Ky0wLjAxMDAgICAgID8gICAgICAwLjIzMDIrLTAuMDExMCAgICAgICAgPyBtaWdo
dCBiZSAxLjAzMjZ4IHNsb3dlcgogICBhYmMtc2ltcGxlLWZvcndhcmQtbG9vcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIyODUrLTAuMDExNiAgICAgPyAgICAgIDAuMjI5OCstMC4wMTQ2
ICAgICAgICA/CiAgIGFiYy1za2lwcHktbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjI0NSstMC4wMDc3ICAgICA/ICAgICAgMC4yMzI4Ky0wLjAwODQgICAgICAgID8g
bWlnaHQgYmUgMS4wMzY2eCBzbG93ZXIKICAgYWJzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi44NzA3Ky0wLjA0NjUgICAgID8gICAgICAyLjg3NzUrLTAu
MDY3MiAgICAgICAgPwogICBhZGFwdC10by1kb3VibGUtZGl2aWRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE2Ljc3NzYrLTAuMjQ3NyAgICAgPyAgICAgMTYuODA4NSstMC4xOTQyICAgICAg
ICA/CiAgIGFsaWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAg
IDEuNTcwMSstMC4wODAxICAgICAgICAgICAgMS41NjI3Ky0wLjA5MTEgICAgICAgIAogICBhbGxv
Y2F0ZS1iaWctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEwMzArLTAu
MTQ0NiAgICAgICAgICAgIDYuMDc3OSstMC4xMjcyICAgICAgICAKICAgYXBwbHktbm90LWFwcGx5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjY1Ky0wLjAwNzIgICAgICAg
ICAgICAwLjIyNDYrLTAuMDA2NSAgICAgICAgCiAgIGFyZ3VtZW50cy1uYW1lZC1hbmQtcmVmbGVj
dGl2ZSAgICAgICAgICAgICAgICAgICAgIDAuMjI2MistMC4wMTA3ICAgICAgICAgICAgMC4yMjQz
Ky0wLjAwODAgICAgICAgIAogICBhcmd1bWVudHMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIzNDQrLTAuMDIxMSAgICAgICAgICAgIDAuMjMyOSstMC4wMTQ2ICAg
ICAgICAKICAgYXJndW1lbnRzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMzE1Ky0wLjAwODUgICAgICAgICAgICAwLjIyNTMrLTAuMDA0NyAgICAgICAgICBtaWdo
dCBiZSAxLjAyNzN4IGZhc3RlcgogICBhcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIyMzIrLTAuMDA2OSAgICAgPyAgICAgIDAuMjI0NSstMC4wMjM5
ICAgICAgICA/CiAgIGFyaXR5LW1pc21hdGNoLWlubGluaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuOTQ5OCstMC4wMjg4ICAgICA/ICAgICAgMC45OTUzKy0wLjA2NDggICAgICAgID8g
bWlnaHQgYmUgMS4wNDc4eCBzbG93ZXIKICAgYXJyYXktYWNjZXNzLXBvbHltb3JwaGljLXN0cnVj
dHVyZSAgICAgICAgICAgICAgICAgOS40NTQ0Ky0wLjE5MDggICAgID8gICAgICA5LjQ3NDIrLTAu
MTk1OSAgICAgICAgPwogICBhcnJheS1ub25hcnJheS1wb2x5bW9yaHBpYy1hY2Nlc3MgICAgICAg
ICAgICAgICAgIDI5LjM3NTYrLTAuNzM1MCAgICAgICAgICAgMjkuMTcwNSstMC43Mjc2ICAgICAg
ICAKICAgYXJyYXktcHJvdG90eXBlLWV2ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
Ny44NTk0Ky0wLjY0NDYgICAgID8gICAgIDg3LjkxMzMrLTEuMjU1OCAgICAgICAgPwogICBhcnJh
eS1wcm90b3R5cGUtZm9yRWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4LjYxNDErLTAu
OTUxMSAgICAgXiAgICAgODYuMjAyNistMC43MzM1ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMjgw
eCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLW1hcCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5Ny42OTA3Ky0xLjkyMjQgICAgICAgICAgIDk0LjA2NjMrLTIuMjEwNyAgICAgICAgICBt
aWdodCBiZSAxLjAzODV4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtcmVkdWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDg3LjkzNjUrLTEuMTQ4MCAgICAgXiAgICAgODQuNTU3NistMS4z
NzcwICAgICAgICBeIGRlZmluaXRlbHkgMS4wNDAweCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBl
LXJlZHVjZVJpZ2h0ICAgICAgICAgICAgICAgICAgICAgIDEyNy43OTUxKy01Ljg1MDcgICAgICAg
ICAgMTIzLjAyODkrLTQuMjAyMiAgICAgICAgICBtaWdodCBiZSAxLjAzODd4IGZhc3RlcgogICBh
cnJheS1wcm90b3R5cGUtc29tZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg3Ljk0MDUr
LTEuMTQ4MiAgICAgPyAgICAgODkuMDc3MistNC4zNTkxICAgICAgICA/IG1pZ2h0IGJlIDEuMDEy
OXggc2xvd2VyCiAgIGFycmF5LXNwbGljZS1jb250aWd1b3VzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzAuOTEwNystMC4zMDQxICAgICAgICAgICAzMC43MzA3Ky0wLjI4NTkgICAgICAgIAog
ICBhcnJheS13aXRoLWRvdWJsZS1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM0
OTIrLTAuMDkyMiAgICAgICAgICAgIDQuMjc2NCstMC4wOTg1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE3MHggZmFzdGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAg
ICAgICAgICAgIDMuNDI0MCstMC4wODE5ICAgICA/ICAgICAgMy40NDA1Ky0wLjEwNjcgICAgICAg
ID8KICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAg
NC44NzAyKy0wLjA3NzQgICAgICAgICAgICA0Ljg1NjIrLTAuMDcwOCAgICAgICAgCiAgIGFycmF5
LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjk5MCstMC4x
MDQxICAgICA/ICAgICAgMy4zNjk0Ky0wLjA5NDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjEzeCBz
bG93ZXIKICAgYXJyYXktd2l0aC1pbnQzMi1hZGQtc3ViICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi41MDQwKy0wLjEwMDUgICAgICAgICAgICA2LjQwODMrLTAuMDk3MCAgICAgICAgICBtaWdo
dCBiZSAxLjAxNDl4IGZhc3RlcgogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0gICAg
ICAgICAgICAgICAgICAgICAzLjQxOTYrLTAuMDc3MiAgICAgPyAgICAgIDMuNDM0MSstMC4wODM3
ICAgICAgICA/CiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
Mi45MTI5Ky0wLjc1MzUgICAgICEgICAgIDk1LjA1NzMrLTAuNzg4OSAgICAgICAgISBkZWZpbml0
ZWx5IDEuMDIzMXggc2xvd2VyCiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxvbmctbGl2
ZWQgICAgICAgICAgICAgMzUuNjA0OSstMC42Mjc1ICAgICAgICAgICAzNS4yNzA0Ky0wLjU5NjAg
ICAgICAgIAogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQgICAgICAgICAgICAg
ICAgICAzLjk1NDMrLTAuMDYwMiAgICAgICAgICAgIDMuOTI0NystMC4wNDU0ICAgICAgICAKICAg
QXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5OC43MTUxKy0wLjYz
NzAgICAgID8gICAgIDk5LjMxNzQrLTAuOTQ0NSAgICAgICAgPwogICBBcnJheUJ1ZmZlci1JbnQ4
QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ni4wODU0Ky0xLjI4NzAgICAgID8gICAgIDU3
LjA4NjIrLTIuNTEyMiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzh4IHNsb3dlcgogICBBcnJheUJ1
ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDM0Ljc4NjMrLTAuNjcz
MCAgICAgICAgICAgMzQuMTY3MCstMC42Nzk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4MXggZmFz
dGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAg
MzIuNTc1NCstMC41Nzc1ICAgICAgICAgICAzMi4zMjk1Ky0wLjM3MjkgICAgICAgIAogICBhcnJv
d2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAgICAwLjI2MTYrLTAu
MDA3NyAgICAgPyAgICAgIDAuMjcyMCstMC4wMTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQwMHgg
c2xvd2VyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2QgICAgICAgICAgICAg
ICAgMjMuODIwOSstMC4zNjUwICAgICA/ICAgICAyNC4yNDUwKy0wLjQzNDUgICAgICAgID8gbWln
aHQgYmUgMS4wMTc4eCBzbG93ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uICAg
ICAgICAgICAgICAgICAgICAgMC4yMjQwKy0wLjAwNjggICAgICAgICAgICAwLjIxOTcrLTAuMDA2
NyAgICAgICAgICBtaWdodCBiZSAxLjAyMDB4IGZhc3RlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyODErLTAuMDExNyAgICAgPyAgICAg
IDAuMjQwOSstMC4wMjIxICAgICAgICA/IG1pZ2h0IGJlIDEuMDU2MXggc2xvd2VyCiAgIGFzbWpz
X2Jvb2xfYnVnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguODk0OSstMC4y
MDA2ICAgICAgICAgICAgOC44MjA3Ky0wLjEyMTYgICAgICAgIAogICBhc3NpZ24tY3VzdG9tLXNl
dHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAzLjUxNzYrLTAuMDc3MiAgICAgPyAg
ICAgIDMuNTQzMCstMC4wOTU3ICAgICAgICA/CiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzc3MSstMC4xMDU0ICAgICA/ICAgICAgNS4zOTg1
Ky0wLjA2NDQgICAgICAgID8KICAgYmFzaWMtc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMC41OTQ0Ky0wLjExOTAgICAgID8gICAgIDEwLjgyMTArLTAuMTcxMiAg
ICAgICAgPyBtaWdodCBiZSAxLjAyMTR4IHNsb3dlcgogICBiaWctaW50LW11bCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk3NjErLTAuMTQ2NCAgICAgICAgICAgIDMu
ODM0NCstMC4wNzAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3MHggZmFzdGVyCiAgIGJpZ3N3aXRj
aC1pbmRpcmVjdC1zeW1ib2wtb3ItdW5kZWZpbmVkICAgICAgICAgICAgNzQuNTMyOSstMTAuODg3
NiAgICA/ICAgICA4MC42MDg5Ky0xLjA1NTQgICAgICAgID8gbWlnaHQgYmUgMS4wODE1eCBzbG93
ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbCAgICAgICAgICAgICAgICAgICAgICAgICA4
Ni44NTc4Ky0xLjUzNzIgICAgICAgICAgIDg1LjUzOTUrLTAuOTIzMSAgICAgICAgICBtaWdodCBi
ZSAxLjAxNTR4IGZhc3RlcgogICBiaWdzd2l0Y2gtaW5kaXJlY3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUzLjcxOTIrLTAuMjQzMyAgICAgPyAgICAgNTQuMjI1MSstMC43MTk5ICAg
ICAgICA/CiAgIGJpZ3N3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNDIuNjcwNystMC43ODYyICAgICAgICAgICA0MS42MzE3Ky0wLjU2NzYgICAgICAgICAgbWln
aHQgYmUgMS4wMjUweCBmYXN0ZXIKICAgYm9vbGVhbi10ZXN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy4zOTU2Ky0wLjAyOTkgICAgICAgICAgICAzLjM3NzcrLTAuMDI0
NSAgICAgICAgCiAgIGJvdW5kLWZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAuODQ1NSstMC4xNzc2ICAgICA/ICAgICAxMC44NjczKy0wLjIwMDggICAgICAgID8K
ICAgYm91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICAgMC4y
MzA0Ky0wLjAxMzcgICAgID8gICAgICAwLjI0MTYrLTAuMDE2MyAgICAgICAgPyBtaWdodCBiZSAx
LjA0ODN4IHNsb3dlcgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjU1MDIrLTAuMDY0MiAgICAgICAgICAgIDQuNTA2OSstMC4wNDczICAgICAg
ICAKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAy
MC43NjM4Ky0wLjE4ODkgICAgICAgICAgIDIwLjcwODArLTAuMjU4MiAgICAgICAgCiAgIGJ1Zy0x
NTM0MzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIyMistMC4w
MDgyICAgICAgICAgICAgMC4yMjE2Ky0wLjAwOTQgICAgICAgIAogICBidWlsZC1sYXJnZS1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjc3MDQrLTEuMTcxNyAgICAgPyAg
ICAgNDAuODgwMystMS4wMjQ2ICAgICAgICA/CiAgIGJ5LXZhbC1nZW5lcmljICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI0NistMC4wMDgzICAgICA/ICAgICAgMC4yMzY3
Ky0wLjAyMTIgICAgICAgID8gbWlnaHQgYmUgMS4wNTQweCBzbG93ZXIKICAgY2FsbC1vci1ub3Qt
Y2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzU2Ky0wLjAwOTQgICAg
ICAgICAgICAwLjIzMzErLTAuMDA5OCAgICAgICAgICBtaWdodCBiZSAxLjAxMDV4IGZhc3Rlcgog
ICBjYWxsLXNwcmVhZC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0Ljc1
NzErLTAuNDU4MCAgICAgICAgICAgMzQuNTA3NSstMC4zNDc4ICAgICAgICAKICAgY2FsbC1zcHJl
YWQtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC4yNjE2Ky0wLjg5NjMg
ICAgID8gICAgIDM0LjMyOTIrLTAuNDkyOSAgICAgICAgPwogICBjYXB0dXJlZC1hc3NpZ25tZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM5NTQrLTAuMDIyNCAgICAgPyAgICAg
IDAuNDE0NystMC4wMjA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ4OHggc2xvd2VyCiAgIGNhc3Qt
aW50LXRvLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNzcxNCstMC4w
ODU3ICAgICAgICAgICAgNS43Mjk1Ky0wLjA2NjIgICAgICAgIAogICBjZWxsLWFyZ3VtZW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjY4NDUrLTAuMDU5NCAgICAgPyAg
ICAgIDQuNzAwMCstMC4wODg3ICAgICAgICA/CiAgIGNmZy1zaW1wbGlmeSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjIwOSstMC4wOTUwICAgICA/ICAgICAgMy4yNTM1
Ky0wLjA5NDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTAxeCBzbG93ZXIKICAgY2hhaW4tZ2V0dGVy
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDM4Ky0wLjAxNjUgICAg
ID8gICAgICAwLjI0OTUrLTAuMDExOCAgICAgICAgPyBtaWdodCBiZSAxLjAyMzF4IHNsb3dlcgog
ICBjbXBlcS1vYmotdG8tb2JqLW90aGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjUy
OTcrLTAuMDg4NCAgICAgISAgICAgMTAuOTI4MistMC4xNjI0ICAgICAgICAhIGRlZmluaXRlbHkg
MS4wMzc4eCBzbG93ZXIKICAgY29uY2F0LWFwcGVuZC1vbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yMTg5Ky0wLjAwOTEgICAgID8gICAgICAwLjIyNzUrLTAuMDExNiAgICAg
ICAgPyBtaWdodCBiZSAxLjAzOTZ4IHNsb3dlcgogICBjb25zdGFudC10ZXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LjM4NTgrLTAuMTA0OSAgICAgICAgICAgIDUuMzYz
MCstMC4xMTA0ICAgICAgICAKICAgY3JlYXRlLWxvdHMtb2YtZnVuY3Rpb25zICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS45Njk4Ky0wLjE1NjMgICAgICAgICAgIDExLjkwMzUrLTAuMTIyOSAg
ICAgICAgCiAgIGNzZS1uZXctYXJyYXktYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjI4NystMC4wMTA3ICAgICA/ICAgICAgMC4yMzcxKy0wLjAxNjMgICAgICAgID8gbWln
aHQgYmUgMS4wMzY5eCBzbG93ZXIKICAgY3NlLW5ldy1hcnJheSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMTY2Ky0wLjAwNjkgICAgID8gICAgICAwLjIyMzYrLTAuMDE1
NCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjV4IHNsb3dlcgogICBjdXN0b20tc2V0dGVyLWdldHRl
ci1hcy1wdXQtZ2V0LWJ5LWlkICAgICAgICAgICAgICAwLjIyNzgrLTAuMDEyOCAgICAgICAgICAg
IDAuMjI3MystMC4wMTIxICAgICAgICAKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAg
ICAgICAgICAgICAgICAgICAgICA5OC40MTE0Ky0xLjI5MDIgICAgID8gICAgIDk5LjY4ODErLTIu
NjI4NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzB4IHNsb3dlcgogICBkZWxheS10ZWFyLW9mZi1h
cmd1bWVudHMtc3RyaWN0bW9kZSAgICAgICAgICAgICAgICA5LjkxMTUrLTAuNDg3NiAgICAgICAg
ICAgIDkuNzA2NCstMC4xNjQzICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXggZmFzdGVyCiAgIGRl
bHRhYmx1ZS1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUuOTg5NSst
MC42Nzk0ICAgICAgICAgICA0NS43OTYwKy0wLjUxMTMgICAgICAgIAogICBkZWx0YWJsdWUtdmFy
YXJncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwLjE5OTArLTAuNzQzNiAgICAg
ICAgICAgNDAuMDg0NSstMC40MDM2ICAgICAgICAKICAgZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2OS41MDYxKy0xLjQxMTkgICAgICAgICAgIDY3Ljk3
MjArLTAuOTAzNSAgICAgICAgICBtaWdodCBiZSAxLjAyMjZ4IGZhc3RlcgogICBkZXN0cnVjdHVy
aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjkrLTAuMDE4NiAgICAg
ICAgICAgIDAuMjEwMistMC4wMDk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwNHggZmFzdGVyCiAg
IGRlc3RydWN0dXJpbmctc3dhcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDg3
OCstMC4xNTI2ICAgICAgICAgICAgNS40MTU3Ky0wLjA1ODAgICAgICAgICAgbWlnaHQgYmUgMS4w
MTMzeCBmYXN0ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS41NzgwKy0wLjExMzcgICAgICAgICAgICAxLjUzNTkrLTAuMDcxOCAgICAgICAg
ICBtaWdodCBiZSAxLjAyNzR4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLWxlbmd0aCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjQ4MjIrLTAuMjE2OSAgICAgPyAgICAgIDguNTUxOSst
MC4yMDUyICAgICAgICA/CiAgIGRpcmVjdC1hcmd1bWVudHMtb3ZlcnJpZGRlbi1sZW5ndGggICAg
ICAgICAgICAgICAgIDguMTkxOCstMC4zMjkyICAgICA/ICAgICAgOC40MjEzKy0wLjI2OTcgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjgweCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1wb3NzaWJs
eS1vdmVycmlkZGVuLWxlbmd0aCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4LjY5MzgrLTAuMTI5OSAgICAgICAgICAgIDguNTk3MSstMC4x
NjgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMnggZmFzdGVyCiAgIGRpdi1ib29sZWFuLWRvdWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNzIxNystMC4xMDAyICAgICA/ICAg
ICAgNC43NjE2Ky0wLjA3MzcgICAgICAgID8KICAgZGl2LWJvb2xlYW4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNy45MjgwKy0wLjEyOTAgICAgICAgICAgICA3Ljg1MDMr
LTAuMTI0MSAgICAgICAgCiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAg
ICAgICAgICAgICAgIDAuMjIyMistMC4wMDkxICAgICA/ICAgICAgMC4yMjUxKy0wLjAxMDEgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTI5eCBzbG93ZXIKICAgZG91YmxlLXBvbGx1dGlvbi1nZXRieXZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgOC4wMjY1Ky0wLjEzMjAgICAgID8gICAgICA4LjA2
MTgrLTAuMDg0NSAgICAgICAgPwogICBkb3VibGUtcG9sbHV0aW9uLXB1dGJ5b2Zmc2V0ICAgICAg
ICAgICAgICAgICAgICAgICA1Ljg3NjIrLTAuMTUwOSAgICAgICAgICAgIDUuNzQ5OCstMC4wNTc0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMHggZmFzdGVyCiAgIGRvdWJsZS1yZWFsLXVzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIxNCstMC4wMDYzICAgICA/ICAgICAg
MC4yMzQ5Ky0wLjAxMjQgICAgICAgID8gbWlnaHQgYmUgMS4wNjExeCBzbG93ZXIKICAgZG91Ymxl
LXRvLWludDMyLXR5cGVkLWFycmF5LW5vLWlubGluZSAgICAgICAgICAgICAgMC4yNjUyKy0wLjAw
NjIgICAgID8gICAgICAwLjI2OTArLTAuMDA4NSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDR4IHNs
b3dlcgogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAg
ICAyLjQ2MDkrLTAuMDUwMyAgICAgICAgICAgIDIuNDIxNSstMC4wNDA3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDE2M3ggZmFzdGVyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJyYXktbm8taW5s
aW5lICAgICAgICAgICAgIDAuMjc0MistMC4wMTQxICAgICA/ICAgICAgMC4yODcyKy0wLjAzMjUg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDc2eCBzbG93ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBl
ZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgMi40ODkwKy0wLjAzMjUgICAgID8gICAgICAy
LjUyOTErLTAuMDc5OSAgICAgICAgPyBtaWdodCBiZSAxLjAxNjF4IHNsb3dlcgogICBlbGlkYWJs
ZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjU5MTUrLTAuMjgx
OCAgICAgICAgICAgMjUuMzM4NSstMC4yMTM0ICAgICAgICAKICAgZWxpZGFibGUtbmV3LW9iamVj
dC1yb2ZsY29wdGVyICAgICAgICAgICAgICAgICAgICAyOC42NDUzKy0zLjUxMzggICAgID8gICAg
IDMwLjE0NzErLTQuNTQzOCAgICAgICAgPyBtaWdodCBiZSAxLjA1MjR4IHNsb3dlcgogICBlbGlk
YWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDI2Ljk1ODArLTAu
NDI0NCAgICAgPyAgICAgMjcuMTUyNystMC4yODI5ICAgICAgICA/CiAgIGVsaWRhYmxlLW5ldy1v
YmplY3QtdHJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgMjguNTA0MSstMC42NzU5ICAgICAg
ICAgICAyOC4zMzc1Ky0wLjE4OTQgICAgICAgIAogICBlbXB0eS1zdHJpbmctcGx1cy1pbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA5LjQ1NDIrLTAuMTk2NiAgICAgICAgICAgIDkuMzM1
MSstMC4xNTM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOHggZmFzdGVyCiAgIGVtc2NyaXB0ZW4t
Y3ViZTJoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuODE3NSstMC44MTc3ICAg
ICAgICAgICA0MS41NjMyKy0wLjQ3NjMgICAgICAgIAogICBldmFsLWNvbXB1dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMTIrLTAuMDA5MiAgICAgICAgICAgIDAu
MjE4MystMC4wMDcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzM3ggZmFzdGVyCiAgIGV2YWwtbm90
LWV2YWwtY29tcHV0ZS1hcmdzICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzNSstMC4wMDgw
ICAgICA/ICAgICAgMC4yMzAxKy0wLjAxNDIgICAgICAgID8gbWlnaHQgYmUgMS4wMjk1eCBzbG93
ZXIKICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yMjg3Ky0wLjAwOTggICAgID8gICAgICAwLjIzOTMrLTAuMDIzMSAgICAgICAgPyBtaWdodCBi
ZSAxLjA0NjR4IHNsb3dlcgogICBleGl0LWxlbmd0aC1vbi1wbGFpbi1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIyODArLTAuMDE1MiAgICAgICAgICAgIDAuMjIxNystMC4wMDc2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI4MnggZmFzdGVyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRi
eXZhbCAgICAgICAgICAgICAgICAgICAgICAgIDEuNzg1MSstMC4xMDAxICAgICA/ICAgICAgMS43
OTQ2Ky0wLjEwMjMgICAgICAgID8KICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1dGJ5dmFsICAgICAg
ICAgICAgICAgICAgICAgICAgMy4yMDk0Ky0wLjA3MjggICAgID8gICAgICAzLjI3NTQrLTAuMTE1
OCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDZ4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJheS1z
dG9yYWdlLXZhci1pbmRleCAgICAgICAgICAgICAgICAxLjQzNTArLTAuMDUwNSAgICAgICAgICAg
IDEuNDI3NystMC4wMzIxICAgICAgICAKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgMS4xMjU3Ky0wLjA0NzYgICAgICAgICAgICAxLjA3NjgrLTAu
MDM2NiAgICAgICAgICBtaWdodCBiZSAxLjA0NTV4IGZhc3RlcgogICBGbG9hdDMyQXJyYXktbWF0
cml4LW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljk5MTErLTAuMjQ5MyAgICAgPyAg
ICAgIDYuMTI1NSstMC4yMzcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyNHggc2xvd2VyCiAgIEZs
b2F0MzJBcnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAgICAgICAgICAgNTUuNDgwNist
MS4zMDIyICAgICAgICAgICA1NC4xMTUyKy0wLjc1MjEgICAgICAgICAgbWlnaHQgYmUgMS4wMjUy
eCBmYXN0ZXIKICAgRmxvYXQ2NEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAg
ICAgICA4NS44NTYxKy0wLjY5MzUgICAgID8gICAgIDg2LjA2OTQrLTEuMDgzNSAgICAgICAgPwog
ICBGbG9hdDY0QXJyYXktdG8tSW50MTZBcnJheS1zZXQgICAgICAgICAgICAgICAgICAgIDY5LjMz
MzkrLTAuODAxNyAgICAgICAgICAgNjkuMTgyNystMC42NDY1ICAgICAgICAKICAgZm9sZC1kb3Vi
bGUtdG8taW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4wODMyKy0wLjExOTcg
ICAgID8gICAgIDE2LjE4NTArLTAuMTkwNSAgICAgICAgPwogICBmb2xkLWdldC1ieS1pZC10by1t
dWx0aS1nZXQtYnktb2Zmc2V0LXJhcmUtaW50ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuNjY3MSstMC45MTgyICAgICA/ICAgICAxMi4w
NjU3Ky0xLjA5NDMgICAgICAgID8gbWlnaHQgYmUgMS4wMzQyeCBzbG93ZXIKICAgZm9sZC1nZXQt
YnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAgICAgICAgICAgOS4zNTMwKy0wLjk5MTEg
ICAgID8gICAgICA5Ljk4MTIrLTEuNDI5MiAgICAgICAgPyBtaWdodCBiZSAxLjA2NzJ4IHNsb3dl
cgogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tZ2V0LWJ5LW9mZnNldCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM0NzErLTEu
NDM3NyAgICAgPyAgICAgIDcuNDk4MSstMS4zMDU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwNngg
c2xvd2VyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1wb2x5LWdldC1ieS1vZmZzZXQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OS42NTM5Ky0xLjAzNDUgICAgID8gICAgICA5Ljc3NDArLTAuMTQ4OCAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMjR4IHNsb3dlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcG9seS1wdXQt
Ynktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAuMTExMystMS4xMjM5ICAgICAgICAgICAgOS43MDM2Ky0xLjU1MzIgICAgICAg
ICAgbWlnaHQgYmUgMS4wNDIweCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0LXRv
LXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy42MTY3Ky0xLjM3MzEgICAgICAgICAgICA2LjAzNzkrLTEuNTM5NyAg
ICAgICAgICBtaWdodCBiZSAxLjI2MTV4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZz
ZXQtdG8tcmVwbGFjZS1vci10cmFuc2l0aW9uLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4wNDkyKy0xLjQ4MDcg
ICAgID8gICAgIDE5LjA1MzUrLTEuMjcxNyAgICAgICAgPwogICBmb2xkLXB1dC1ieS1pZC10by1t
dWx0aS1wdXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDEyLjA3MjQrLTEuOTM2MSAgICAgPyAgICAg
MTIuMTIxMystMi4wMDgxICAgICAgICA/CiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10
by1tdWx0aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAuMjczOSstMS4wMTc5ICAgICA/ICAgICAxMS4xNDIxKy0x
LjYxNjQgICAgICAgID8gbWlnaHQgYmUgMS4wODQ1eCBzbG93ZXIKICAgZm9sZC1wdXQtYnktdmFs
LXdpdGgtc3ltYm9sLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC44MjYxKy0xLjMzMzEgICAgID8g
ICAgIDExLjE3OTgrLTEuNTkzMCAgICAgICAgPyBtaWdodCBiZSAxLjAzMjd4IHNsb3dlcgogICBm
b2xkLXB1dC1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc2NjUr
LTAuODE4NyAgICAgPyAgICAgIDUuNTY2NistMS4yNjkwICAgICAgICA/IG1pZ2h0IGJlIDEuMTY3
OXggc2xvd2VyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWVudHJpZXMgICAgICAgICAgICAgICAg
ICAgICAgMTcuNjQwNSstMC42NTM3ICAgICA/ICAgICAxNy43MTE0Ky0wLjYzNTAgICAgICAgID8K
ICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXkta2V5cyAgICAgICAgICAgICAgICAgICAgICAgICAgNi41
NTc0Ky0wLjA5MjIgICAgID8gICAgICA2LjU3NDkrLTAuMTEyMCAgICAgICAgPwogICBmb3Itb2Yt
aXRlcmF0ZS1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICA2LjM4MjcrLTAuMTM3
OCAgICAgPyAgICAgIDYuNTI0NCstMC4xNTg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyMnggc2xv
d2VyCiAgIGZyZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTYuNjYzMSstMC4wODMxICAgICAgICAgICAxNi40ODA4Ky0wLjE1NjAgICAgICAgICAgbWlnaHQg
YmUgMS4wMTExeCBmYXN0ZXIKICAgZnJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMS42MDE5Ky0wLjEzNDUgICAgICAgICAgIDExLjU4MzErLTAuMTE1MyAg
ICAgICAgCiAgIGZ0bC1saWJyYXJ5LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAg
ICAgNzguMjc4NistMC44Nzg3ICAgICAhICAgICA4Mi43NzYyKy0xLjM2MDYgICAgICAgICEgZGVm
aW5pdGVseSAxLjA1NzV4IHNsb3dlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDI3LjExMjArLTAuMjYwOCAgICAgICAgICAgMjYuOTE3OSstMC4z
OTQ0ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdGFuZCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNDAyKy0wLjAwODMgICAgICAgICAgICAwLjIzNTQrLTAuMDEwMiAgICAgICAg
ICBtaWdodCBiZSAxLjAyMDJ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0b3IgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjIzNzIrLTAuMDA4NCAgICAgPyAgICAgIDAuMjQzNyst
MC4wMTE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3NXggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhp
Yy1iaXR4b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQ3NCstMC4wMTI3ICAgICAg
ICAgICAgMC4yMzY0Ky0wLjAxMDEgICAgICAgICAgbWlnaHQgYmUgMS4wNDY2eCBmYXN0ZXIKICAg
ZnRsLXBvbHltb3JwaGljLWRpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDg0
Ky0wLjAxNTQgICAgICAgICAgICAwLjIzNTErLTAuMDA5MSAgICAgICAgICBtaWdodCBiZSAxLjA1
NjN4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtbHNoaWZ0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjI1NDgrLTAuMDE3NSAgICAgICAgICAgIDAuMjM3NSstMC4wMDU5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDcyOXggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1tdWwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM4MistMC4wMTMwICAgICA/ICAgICAgMC4yMzkzKy0w
LjAxMTUgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLXJzaGlmdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNDg0Ky0wLjAxODcgICAgICAgICAgICAwLjIzOTMrLTAuMDEyMCAgICAg
ICAgICBtaWdodCBiZSAxLjAzODJ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtU3RyaW5nRnJv
bUNoYXJDb2RlICAgICAgICAgICAgICAgICAwLjI1NjErLTAuMDE5MCAgICAgICAgICAgIDAuMjQx
OCstMC4wMDcwICAgICAgICAgIG1pZ2h0IGJlIDEuMDU4OHggZmFzdGVyCiAgIGZ0bC1wb2x5bW9y
cGhpYy1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQwMistMC4wMDU5ICAg
ICAgICAgICAgMC4yMzQwKy0wLjAwNjcgICAgICAgICAgbWlnaHQgYmUgMS4wMjY4eCBmYXN0ZXIK
ICAgZnRsLXBvbHltb3JwaGljLXVyc2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
NDY4Ky0wLjAxMTUgICAgID8gICAgICAwLjI1MTUrLTAuMDEwMiAgICAgICAgPyBtaWdodCBiZSAx
LjAxOTJ4IHNsb3dlcgogICBmdW5jdGlvbi1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIyODUrLTAuMDExNSAgICAgICAgICAgIDAuMjE3NSstMC4wMDgyICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDUwNnggZmFzdGVyCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTc1MistMC4wODQ5ICAgICAgICAgICAgMi41MDgw
Ky0wLjA1MTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjY4eCBmYXN0ZXIKICAgZnVuY3Rpb24tdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMjc4Ky0wLjA3MzQgICAg
ICAgICAgICAzLjEyMjIrLTAuMDQ5MSAgICAgICAgCiAgIGZ1bmN0aW9uLXdpdGgtZXZhbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIyMCstMC4wMDY2ICAgICA/ICAgICAgMC4y
MzcxKy0wLjAxNDggICAgICAgID8gbWlnaHQgYmUgMS4wNjc3eCBzbG93ZXIKICAgZ2NzZS1wb2x5
LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAgICAgICAyMi4yMzcxKy0wLjIyOTYg
ICAgID8gICAgIDIyLjM5MzIrLTAuMjExNiAgICAgICAgPwogICBnY3NlLXBvbHktZ2V0ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjUyOTYrLTAuMjAyOSAgICAgPyAgICAg
MjIuNjQ1NCstMC4xNDkwICAgICAgICA/CiAgIGdjc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNDc3NystMC4wODczICAgICAgICAgICAgNC40NzAxKy0w
LjA1MDggICAgICAgIAogICBnZW5lcmF0b3ItY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIyNDYrLTAuMDA5MCAgICAgPyAgICAgIDAuMjI5MCstMC4wMTYxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE5M3ggc2xvd2VyCiAgIGdlbmVyYXRvci1maWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDAuNzg5MistMC4yODg4ICAgICAhICAgICA0MS42ODk4
Ky0wLjU4NDYgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjF4IHNsb3dlcgogICBnZW5lcmF0b3It
ZnVuY3Rpb24tY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxNzQrLTAuMDA3NiAg
ICAgPyAgICAgIDAuMjI1OCstMC4wMTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4Nnggc2xvd2Vy
CiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgIDYu
ODI5OCstMC4xNjczICAgICAgICAgICAgNi42NjAzKy0wLjEyNTAgICAgICAgICAgbWlnaHQgYmUg
MS4wMjU1eCBmYXN0ZXIKICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAg
ICAgICAgICAgIDE0Ny44MTgzKy01LjcyNjQgICAgICAgICAgMTQyLjgxNzIrLTYuODIyMyAgICAg
ICAgICBtaWdodCBiZSAxLjAzNTB4IGZhc3RlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNr
LXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43ODc1Ky0wLjA4MDcgICAgICAgICAgICAy
Ljc4NTMrLTAuMDUzOSAgICAgICAgCiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0
dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUuNjUyOCstMC4wNzgyICAgICAgICAgICAgNS42NDYwKy0wLjA5Nzcg
ICAgICAgIAogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAg
ICAgICAyLjUzMzArLTAuMDUzMyAgICAgPyAgICAgIDIuNTU4MistMC4wNDc1ICAgICAgICA/CiAg
IGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAgIDMuOTkw
MistMC4xNDQ0ICAgICAgICAgICAgMy45NzM3Ky0wLjEyMjMgICAgICAgIAogICBnZXQtYnktaWQt
cHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjE3NTIrLTAuODQwNCAg
ICAgICAgICAgMTMuODA2OCstMC45MjU1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2N3ggZmFzdGVy
CiAgIGdldC1ieS1pZC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2lt
cGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuMzg4OCstMC4wNjk0ICAgICAgICAgICAgMy4zMjY1Ky0wLjA1MDMgICAgICAgICAgbWln
aHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXNlbGYtb3ItcHJvdG8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAxNC4xNjk4Ky0wLjg4OTIgICAgID8gICAgIDE0LjI4MTUrLTAuNzgx
MSAgICAgICAgPwogICBnZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjIzMDQrLTAuMDA5OSAgICAgPyAgICAgIDAuMjUzOCstMC4wMjQ1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMTAxNnggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3Jw
aGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44MTAzKy0wLjA2NTEgICAg
ICAgICAgICAzLjc3MTkrLTAuMDI2MCAgICAgICAgICBtaWdodCBiZSAxLjAxMDJ4IGZhc3Rlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWlu
YXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOC4wOTExKy0wLjI5MjMgICAgICAgICAgICA3LjgzMTErLTAuMDk5MiAgICAgICAgICBt
aWdodCBiZSAxLjAzMzJ4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoYWluLWZy
b20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNjI3MystMC4wNzAyICAgICAgICAgICAgMi42MDM3Ky0wLjA2OTggICAg
ICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjcxNzQrLTAuMDgxOCAgICAgICAgICAgIDYuNjQ4MCstMC4wNzI0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDEwNHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2Vs
ZiAgICAgICAgICAgICAgMTMuODU1NCstMC4yMTExICAgICA/ICAgICAxNC4wMjY2Ky0wLjI3MTkg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmlu
Zy1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMjQ1OSst
MC4xMTMyICAgICA/ICAgICAgNS4yODQ5Ky0wLjExNTIgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13
aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMy43NzY4Ky0wLjIxNzIgICAg
ID8gICAgIDEzLjk4NjgrLTAuMTc2MyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTJ4IHNsb3dlcgog
ICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWlu
YXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMjIzNCstMC4wNTQwICAgICAgICAgICAgMy4xOTA0Ky0wLjA1OTEgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTA0eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1i
aW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMDg0OSstMC4xMDI1ICAgICA/
ICAgICAxMS4xODExKy0wLjE4MzUgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1j
aGFpbi1mcm9tLXRyeS1ibG9jayAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjY0MTArLTAuMDgyNSAgICAgPyAgICAgIDIuNjQyMCstMC4w
NjQ0ICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hlY2stc3RydWN0dXJlLWVs
aW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguMzQxOCstMC4wODE3ICAgICA/ICAgICAgOC4zOTYxKy0wLjEwNjQgICAgICAg
ID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAx
My44ODEyKy0wLjE4MTEgICAgID8gICAgIDEzLjg5ODErLTAuMDk2OSAgICAgICAgPwogICBnZXQt
YnktdmFsLXdpdGgtc3ltYm9sLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
bi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC41Mzg0Ky0wLjA3OTcgICAgICAgICAgICA0LjUxNjgrLTAuMTExMyAgICAgICAg
CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgMTMu
ODM4MSstMC4xNzUzICAgICA/ICAgICAxMy44NTE3Ky0wLjE3NTEgICAgICAgID8KICAgZ2V0X2J5
X3ZhbC1JbnQzMkFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNzUyKy0wLjA0
MTYgICAgICAgICAgICAxLjEzODIrLTAuMDUxMCAgICAgICAgICBtaWdodCBiZSAxLjAzMjZ4IGZh
c3RlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA2LjM3MzQrLTAuMTI5OSAgICAgICAgICAgIDYuMzE0MSstMC4xMjA3ICAgICAgICAKICAgZ2V0
X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yOTY4Ky0w
LjExMDkgICAgICAgICAgICA2LjI5MDArLTAuMTE4NSAgICAgICAgCiAgIGdldHRlci1uby1hY3Rp
dmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMDM0MystMC4wNTU0ICAgICAg
ICAgICAgMy45OTQ2Ky0wLjAzMzcgICAgICAgIAogICBnZXR0ZXItcHJvdG90eXBlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMjMrLTAuMDEwOSAgICAgICAgICAgIDAuMjI4
NCstMC4wMTQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3MXggZmFzdGVyCiAgIGdldHRlci1yaWNo
YXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE0MSstMC4wMTI1ICAg
ICA/ICAgICAgMC4zMjA1Ky0wLjAxNTEgICAgICAgID8gbWlnaHQgYmUgMS4wMjA1eCBzbG93ZXIK
ICAgZ2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ni42
NDk5Ky0zLjA4MDMgICAgID8gICAgIDc3LjYwODQrLTQuMjQxNSAgICAgICAgPyBtaWdodCBiZSAx
LjAxMjV4IHNsb3dlcgogICBnZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjQ4NTArLTAuMDg2MSAgICAgICAgICAgIDQuNDU5OSstMC4wODIxICAgICAg
ICAKICAgZ2xvYmFsLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny4xMTYyKy0wLjEwMTEgICAgICAgICAgIDE3LjA2NjcrLTAuMTU1MSAgICAgICAgCiAgIGdsb2Jh
bC1vYmplY3QtYWNjZXNzLXdpdGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE2NSstMC4wMTQzICAg
ICAgICAgICAgMC4yMTY0Ky0wLjAxMzIgICAgICAgIAogICBnbG9iYWwtdmFyLWNvbnN0LWluZmVy
LWZpcmUtZnJvbS1vcHQgICAgICAgICAgICAgICAwLjIzMDcrLTAuMDA4MyAgICAgPyAgICAgIDAu
MjM3NystMC4wMDgwICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwNXggc2xvd2VyCiAgIGdsb2JhbC12
YXItY29uc3QtaW5mZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMxOCstMC4wMTUy
ICAgICAgICAgICAgMC4yMjc0Ky0wLjAxMjYgICAgICAgICAgbWlnaHQgYmUgMS4wMTkyeCBmYXN0
ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjay1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yMzQzKy0wLjAyMzAgICAgID8gICAgICAwLjIzNzQrLTAuMDE0NyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMzB4IHNsb3dlcgogICBoYXJkLW92ZXJmbG93LWNoZWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIyMDArLTAuMDExNSAgICAgICAgICAgIDAuMjE4NystMC4wMTEwICAg
ICAgICAKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5cyAgICAgICAgICAgICAgICAgICAg
ICAyOS41MDY3Ky0wLjUyNjQgICAgID8gICAgIDI5LjY5NzQrLTAuNDEzOSAgICAgICAgPwogICBI
YXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLjAxOTYr
LTAuNDk2NSAgICAgICAgICAgMjkuOTkyMistMC40NDc3ICAgICAgICAKICAgSGFzaE1hcC1zdHJp
bmctcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAzOS45NDk3Ky0wLjY3ODkgICAg
ICAgICAgIDM5LjQ5MDArLTAuNDM0OSAgICAgICAgICBtaWdodCBiZSAxLjAxMTZ4IGZhc3Rlcgog
ICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIz
NzArLTAuMDIyNSAgICAgICAgICAgIDAuMjI5MistMC4wMTE0ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDM0MHggZmFzdGVyCiAgIGhvaXN0LXBvbHktY2hlY2stc3RydWN0dXJlLWVmZmVjdGZ1bC1sb29w
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMjI3NystMC4wMTI1ICAgICAgICAgICAgMC4yMjQ0Ky0wLjAxMzYgICAgICAgICAgbWlnaHQg
YmUgMS4wMTQ1eCBmYXN0ZXIKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4yMzk5Ky0wLjAxNzAgICAgICAgICAgICAwLjIzNDArLTAuMDA5NSAg
ICAgICAgICBtaWdodCBiZSAxLjAyNTB4IGZhc3RlcgogICBpbXBsaWNpdC1iaWdzd2l0Y2gtaW5k
aXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgIDYxLjg5MTkrLTAuMzQwMiAgICAgPyAgICAgNjIu
MDcxMCstMC42MDkwICAgICAgICA/CiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuOTM1MCstMC4wOTI2ICAgICA/ICAgICAgNC4yMjMyKy0wLjMx
NTAgICAgICAgID8gbWlnaHQgYmUgMS4wNzMyeCBzbG93ZXIKICAgaW11bC1pbnQtb25seSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi40NTQyKy0wLjE1NjggICAgID8gICAg
ICA2LjU0NTUrLTAuMTIwMyAgICAgICAgPyBtaWdodCBiZSAxLjAxNDJ4IHNsb3dlcgogICBpbXVs
LW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjgzMzYrLTAu
MDc5MCAgICAgPyAgICAgIDMuODQ4MistMC4wNjU4ICAgICAgICA/CiAgIGluLWZvdXItY2FzZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuMzYwOSstMC45NTIzICAgICA/
ICAgICAyMy4wODk3Ky0wLjIzMzUgICAgICAgID8gbWlnaHQgYmUgMS4wMzI2eCBzbG93ZXIKICAg
aW4tb25lLWNhc2UtZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4xNDYw
Ky0wLjExNTkgICAgICAgICAgIDEwLjA0ODgrLTAuMDY5MiAgICAgICAgCiAgIGluLW9uZS1jYXNl
LXRydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMTQyNSstMC4xNjk3ICAg
ICAgICAgICAxMC4wMjUyKy0wLjExMDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIK
ICAgaW4tdHdvLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC40
Nzc0Ky0wLjIxMjkgICAgICAgICAgIDEwLjM3OTYrLTAuMDg5NyAgICAgICAgCiAgIGluZGV4ZWQt
cHJvcGVydGllcy1pbi1vYmplY3RzICAgICAgICAgICAgICAgICAgICAgIDMuMjkxOSstMC4wNTg5
ICAgICA/ICAgICAgMy4zMjMzKy0wLjA2OTQgICAgICAgID8KICAgaW5mZXItY2xvc3VyZS1jb25z
dC10aGVuLW1vdi1uby1pbmxpbmUgICAgICAgICAgICAgMC4yMjU2Ky0wLjAwODYgICAgICAgICAg
ICAwLjIyMzMrLTAuMDA5NyAgICAgICAgICBtaWdodCBiZSAxLjAxMDV4IGZhc3RlcgogICBpbmZl
ci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92ICAgICAgICAgICAgICAgICAgICAgIDExLjcyMDUrLTAu
MDc1NiAgICAgPyAgICAgMTEuNzU5NCstMC4xMDYyICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUt
Y29uc3QtdGhlbi1wdXQtdG8tc2NvcGUtbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5MSstMC4wMTEzICAgICAgICAg
ICAgMC4yMTkzKy0wLjAwNjQgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ5eCBmYXN0ZXIKICAgaW5m
ZXItY2xvc3VyZS1jb25zdC10aGVuLXB1dC10by1zY29wZSAgICAgICAgICAgICAyNC4xMTMzKy0w
LjI5MjIgICAgICAgICAgIDIzLjk4NzIrLTAuMzA1OSAgICAgICAgCiAgIGluZmVyLWNsb3N1cmUt
Y29uc3QtdGhlbi1yZWVudGVyLW5vLWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjArLTAuMDEwMyAgICAgPyAgICAgIDAu
MjI0NistMC4wMTAyICAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3ggc2xvd2VyCiAgIGluZmVyLWNs
b3N1cmUtY29uc3QtdGhlbi1yZWVudGVyICAgICAgICAgICAgICAgICAgMjQuMDg4NystMC4zMzYx
ICAgICA/ICAgICAyNC4xMzY1Ky0wLjM4NDQgICAgICAgID8KICAgaW5mZXItY29uc3RhbnQtZ2xv
YmFsLXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgMy4zMTgxKy0wLjA1MDEgICAgICAgICAg
ICAzLjI1OTQrLTAuMDYxMSAgICAgICAgICBtaWdodCBiZSAxLjAxODB4IGZhc3RlcgogICBpbmZl
ci1jb25zdGFudC1wcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcxNzArLTAu
MDU4NiAgICAgICAgICAgIDIuNzAxOCstMC4wNDAzICAgICAgICAKICAgaW5mZXItb25lLXRpbWUt
Y2xvc3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgMC4yMTc0Ky0wLjAwNjAgICAgID8g
ICAgICAwLjIyNzcrLTAuMDEzMiAgICAgICAgPyBtaWdodCBiZSAxLjA0NzJ4IHNsb3dlcgogICBp
bmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAgICAwLjIzODcr
LTAuMDMwMCAgICAgICAgICAgIDAuMjMxNCstMC4wMDk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMx
OXggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjI0NSstMC4wMTAyICAgICAgICAgICAgMC4yMjMzKy0wLjAxNDAgICAgICAgIAog
ICBpbmZlci1vbmUtdGltZS1kZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAwLjI0
NjArLTAuMDE0MCAgICAgPyAgICAgIDAuMjQ2MCstMC4wMjU3ICAgICAgICA/CiAgIGlubGluZS1h
cmd1bWVudHMtYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuOTkzNistMC4xNDMy
ICAgICA/ICAgICAxMC4zMjI2Ky0wLjIwNjEgICAgICAgID8gbWlnaHQgYmUgMS4wMzI5eCBzbG93
ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hbGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAx
MC4xNjk0Ky0wLjE4MDAgICAgID8gICAgIDEwLjE5NDArLTAuMjQwOSAgICAgICAgPwogICBpbmxp
bmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAgICAgICA5Ljk2ODcrLTAu
MDk5NCAgICAgPyAgICAgIDkuOTkyMistMC4xMjg0ICAgICAgICA/CiAgIGlubGluZS1nZXQtc2Nv
cGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzUyMSstMC4xMTA0ICAgICAg
ICAgICAgMy4yNjg1Ky0wLjA2MTcgICAgICAgICAgbWlnaHQgYmUgMS4wMjU2eCBmYXN0ZXIKICAg
aW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICAgICAxMS4zMTAx
Ky0wLjE1MDQgICAgID8gICAgIDExLjMxNjgrLTAuMTYzNSAgICAgICAgPwogICBpbmxpbmVkLXB1
dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwLjExOTkrLTAuOTk5MCAgICAgICAgICAg
NDkuMjg0NystMC40NDUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OXggZmFzdGVyCiAgIGlubGlu
ZWQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEuMDI0NystMS4xNDg0ICAgICAg
ICAgICA1MC4xNjQ2Ky0wLjY4ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMTcxeCBmYXN0ZXIKICAg
aW5zdGFuY2VvZi1ib3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNjQw
Ky0wLjAxNTkgICAgID8gICAgICAwLjI3MzQrLTAuMDE2MCAgICAgICAgPyBtaWdodCBiZSAxLjAz
NTZ4IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAg
ICAgICAgICA1LjE1NzQrLTAuMDgwNiAgICAgPyAgICAgIDUuMTY0MSstMC4wNzYyICAgICAgICA/
CiAgIGludC1vci1vdGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTku
NTA1MistMC4yNjU0ICAgICA/ICAgICAxOS42MTcyKy0wLjMwODUgICAgICAgID8KICAgaW50LW9y
LW90aGVyLWFkZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC43MjIzKy0wLjA5
MDAgICAgID8gICAgICA0LjczMTgrLTAuMDY2NCAgICAgICAgPwogICBpbnQtb3Itb3RoZXItYWRk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc5NjkrLTAuMDkxOCAgICAgPyAg
ICAgIDUuODMxNCstMC4wODA2ICAgICAgICA/CiAgIGludC1vci1vdGhlci1kaXYtdGhlbi1nZXQt
YnktdmFsICAgICAgICAgICAgICAgICAgIDQuMjkxMystMC4wODQ2ICAgICAgICAgICAgNC4yNTc3
Ky0wLjA2MDIgICAgICAgIAogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5LXZhbCAgICAg
ICAgICAgICAgICAgICA0LjU0MzMrLTAuMDQ2OCAgICAgICAgICAgIDQuNTA5NSstMC4xMDUzICAg
ICAgICAKICAgaW50LW9yLW90aGVyLW1pbi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAg
ICAgNC4yOTY0Ky0wLjA2ODQgICAgICAgICAgICA0LjI1MTkrLTAuMDc3MiAgICAgICAgICBtaWdo
dCBiZSAxLjAxMDV4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICA0LjI5NDArLTAuMDUwNCAgICAgICAgICAgIDQuMjY4NistMC4wNzg1
ICAgICAgICAKICAgaW50LW9yLW90aGVyLW11bC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAg
ICAgICAgNy4xOTY1Ky0wLjA2MTYgICAgID8gICAgICA3LjIxMTErLTAuMDk3OCAgICAgICAgPwog
ICBpbnQtb3Itb3RoZXItbmVnLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0Ljg2
ODQrLTAuMDM4MCAgICAgPyAgICAgIDQuOTE2MistMC4xMDg5ICAgICAgICA/CiAgIGludC1vci1v
dGhlci1uZWctemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTkuMzgxOSstMC4yMjI1
ICAgICA/ICAgICAxOS40NTgzKy0wLjE2NzUgICAgICAgID8KICAgaW50LW9yLW90aGVyLXN1Yi10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS44NDkyKy0wLjA2OTYgICAgID8gICAg
ICA1LjkzMTArLTAuMTAwNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICBpbnQt
b3Itb3RoZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc5NjUrLTAu
MDc5MSAgICAgPyAgICAgIDQuODI1OCstMC4wNTU0ICAgICAgICA/CiAgIGludC1vdmVyZmxvdy1s
b2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODc1NystMC4xNjY2ICAgICAg
ICAgICAgNC44MDAzKy0wLjA2MzIgICAgICAgICAgbWlnaHQgYmUgMS4wMTU3eCBmYXN0ZXIKICAg
SW50MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA2Mi43MDYw
Ky0wLjQ0MDUgICAgID8gICAgIDYzLjEwMDcrLTAuNjYxNiAgICAgICAgPwogICBJbnQxNkFycmF5
LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDIyLjYxMzYrLTAuNTA1OSAg
ICAgICAgICAgMjIuMDQ1OSstMC41MTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1N3ggZmFzdGVy
CiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIu
NTQxNystMC4zMjMyICAgICA/ICAgICAyMi42MjUwKy0wLjE0OTcgICAgICAgID8KICAgSW50MTZB
cnJheS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44MTU0Ky0wLjAz
ODkgICAgICAgICAgICAxLjgwNTUrLTAuMDUxNyAgICAgICAgCiAgIEludDE2QXJyYXktdG8tSW50
MzJBcnJheS1zZXQgICAgICAgICAgICAgICAgICAgICAgNTIuMzI4MSstMS4zMjEwICAgICAhICAg
ICA1Ni4wMDI3Ky0wLjk2OTAgICAgICAgICEgZGVmaW5pdGVseSAxLjA3MDJ4IHNsb3dlcgogICBJ
bnQzMkFycmF5LWFsbG9jLWxhcmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjI3MjUr
LTAuNTU5MyAgICAgICAgICAgMjMuOTg0NCstMC4yNjA1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEy
MHggZmFzdGVyCiAgIEludDMyQXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAg
ICAgICAgNzMuMjQyNCstMC45ODEwICAgICAgICAgICA3Mi40MDc4Ky0wLjYwOTEgICAgICAgICAg
bWlnaHQgYmUgMS4wMTE1eCBmYXN0ZXIKICAgSW50MzJBcnJheS1hbGxvYyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOS4yMzM1Ky0wLjEyMDIgICAgICAgICAgICA5LjEzNDMrLTAu
MTc3NyAgICAgICAgICBtaWdodCBiZSAxLjAxMDl4IGZhc3RlcgogICBJbnQzMkFycmF5LUludDhB
cnJheS12aWV3LWFsbG9jICAgICAgICAgICAgICAgICAgIDE4LjQ3ODMrLTAuMjMxNyAgICAgICAg
ICAgMTguNDQ0MSstMC4zMjE3ICAgICAgICAKICAgaW50NTItc3BpbGwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzU0Ky0wLjAxNTcgICAgICAgICAgICAwLjIzMzUr
LTAuMDE0MSAgICAgICAgCiAgIEludDhBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAg
ICAgICAgICAgICAgNTguNzUyOCstMC45NzMxICAgICAgICAgICA1OC4wOTkyKy0wLjM5MjMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgSW50OEFycmF5LWxvYWQtd2l0aC1ieXRl
TGVuZ3RoICAgICAgICAgICAgICAgICAgICAgMy42OTY3Ky0wLjA1MzMgICAgICAgICAgICAzLjY3
NzErLTAuMDYwMiAgICAgICAgCiAgIEludDhBcnJheS1sb2FkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuNjk5MistMC4wNDI1ICAgICA/ICAgICAgMy43MTI5Ky0wLjA1Mjkg
ICAgICAgID8KICAgaW50ZWdlci1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMi43MDEzKy0wLjIzMzMgICAgICAgICAgIDEyLjU3ODgrLTAuMTY2OCAgICAgICAgCiAg
IGludGVnZXItbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjQw
NystMC4wNjY4ICAgICAhICAgICAgMi4zNTkwKy0wLjAzODQgICAgICAgICEgZGVmaW5pdGVseSAx
LjA1Mjh4IHNsb3dlcgogICBpcy1ib29sZWFuLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjcxOTkrLTAuMTA0NSAgICAgICAgICAgIDMuNTg3NCstMC4wODQ5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDM3MHggZmFzdGVyCiAgIGlzLWJvb2xlYW4tZm9sZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzM3MCstMC4wNTkyICAgICAgICAgICAgMi43MzQ3
Ky0wLjAzODYgICAgICAgIAogICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreS1pbnRlcm5hbC1mdW5j
dGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEyLjY1MzIrLTAuMTEzMCAgICAgISAgICAgMTMuMjcyNCstMC4xNjQzICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wNDg5eCBzbG93ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy44NDM2Ky0wLjA3ODAgICAgID8gICAgICAzLjg0NDArLTAu
MDg3MSAgICAgICAgPwogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc1MTMrLTAuMDc0MiAgICAgPyAgICAgIDIuNzg1NystMC4wNzEyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyNXggc2xvd2VyCiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzY5MystMC4wNTc3ICAgICAgICAgICAgMy43NjAx
Ky0wLjA3MzMgICAgICAgIAogICBpcy1udW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjc0MTcrLTAuMDU3NyAgICAgPyAgICAgIDIuNzU0OCstMC4wNTg1ICAg
ICAgICA/CiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtZnVuY3Rpb25zICAgICAgICAgICAgICAg
ICAgIDIuODgzMystMC4wNDQ5ICAgICAgICAgICAgMi44MTU3Ky0wLjAzODQgICAgICAgICAgbWln
aHQgYmUgMS4wMjQweCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC1sZXNzLXRyaWNr
eSAgICAgICAgICAgICAgICAgMy44MjIyKy0wLjA3OTMgICAgID8gICAgICAzLjg0NjErLTAuMTEy
MyAgICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLXRyaWNreSAgICAgICAgICAgICAg
ICAgICAgICA0LjMzNjcrLTAuMDkwMSAgICAgICAgICAgIDQuMzExNistMC4wOTA5ICAgICAgICAK
ICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44
MjQ3Ky0wLjA4ODEgICAgICAgICAgICAyLjcxOTYrLTAuMDY2MCAgICAgICAgICBtaWdodCBiZSAx
LjAzODd4IGZhc3RlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1mdW5jdGlvbiAgICAg
ICAgICAgICAgICAzLjk3OTMrLTAuMDkwMiAgICAgICAgICAgIDMuOTQ5OSstMC4xMDU4ICAgICAg
ICAKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4zMzYy
Ky0wLjIyOTMgICAgID8gICAgIDIzLjU2MzErLTAuMzIwMiAgICAgICAgPwogICBpcy1vYmplY3Qt
b3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAgICAgICAgICAzLjg0MjIrLTAuMDY2NyAg
ICAgPyAgICAgIDMuOTMwMSstMC4wNjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xvd2Vy
CiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjUwNzIrLTAu
MTEzMiAgICAgPyAgICAgIDguNjIxOCstMC4xNDE0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzNXgg
c2xvd2VyCiAgIGlzLXN0cmluZy1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuNzg4MistMC4wNTcwICAgICAgICAgICAgMy43NjE1Ky0wLjA4NjkgICAgICAgIAogICBp
cy1zdHJpbmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc2NzEr
LTAuMDQ1OCAgICAgICAgICAgIDIuNzMyOSstMC4wNzA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEy
NXggZmFzdGVyCiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMzAzNystMC4wNjg2ICAgICAgICAgICAgMy4yODU3Ky0wLjAzNzcgICAgICAgIAog
ICBpcy11bmRlZmluZWQtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcz
NzYrLTAuMDYyNiAgICAgPyAgICAgIDIuNzU0NCstMC4wNDIwICAgICAgICA/CiAgIEpTT05QLW5l
Z2F0aXZlLTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMTY2OSstMC4wMTIy
ICAgICAgICAgICAgMC4xNTk4Ky0wLjAwOTcgICAgICAgICAgbWlnaHQgYmUgMS4wNDQ1eCBmYXN0
ZXIKICAgbGFyZ2UtaW50LWNhcHR1cmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OC4yODkyKy0wLjExNzYgICAgID8gICAgICA4LjMxMDkrLTAuMTcyNSAgICAgICAgPwogICBsYXJn
ZS1pbnQtbmVnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjgwMDcrLTAu
MTMzNCAgICAgICAgICAgMTAuNzkzMSstMC4xMzY1ICAgICAgICAKICAgbGFyZ2UtaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS41Njk2Ky0wLjE0MTMgICAgID8g
ICAgICA5LjYwMjArLTAuMjQ1NCAgICAgICAgPwogICBsYXp5LWFycmF5LXNwZWNpZXMtd2F0Y2hw
b2ludHMgICAgICAgICAgICAgICAgICAgICAwLjI0NzIrLTAuMDE3OSAgICAgICAgICAgIDAuMjQz
OSstMC4wMDg3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFzdGVyCiAgIGxpY20tZHJhZ29u
cy1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQ2OSstMC4wMTIzICAg
ICAgICAgICAgMC4yMzU1Ky0wLjAxMTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDgxeCBmYXN0ZXIK
ICAgbGljbS1kcmFnb25zLW92ZXJmbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
MjQzKy0wLjAwODIgICAgID8gICAgICAwLjIzMjgrLTAuMDExNSAgICAgICAgPyBtaWdodCBiZSAx
LjAzNzl4IHNsb3dlcgogICBsaWNtLWRyYWdvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIzNzkrLTAuMDA4OCAgICAgPyAgICAgIDAuMjQ2MistMC4wMTQyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDM1MHggc2xvd2VyCiAgIGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzMystMC4wMjQ2ICAgICAgICAgICAgMC4yMjAw
Ky0wLjAwOTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTUweCBmYXN0ZXIKICAgbG9jYWxlLWNvbXBh
cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC42MzM4Ky0wLjg0MzUgICAg
ID8gICAgIDMwLjY4NTkrLTAuNTQ0OSAgICAgICAgPwogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBl
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzODYrLTAuMDEwMiAgICAgICAgICAgIDAu
MjI0OCstMC4wMDQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDYxNXggZmFzdGVyCiAgIGxvZ2ljYWwt
bm90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE2MSstMC4wMTAw
ICAgICA/ICAgICAgMC4yMjE0Ky0wLjAxMzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ5eCBzbG93
ZXIKICAgbG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Ny42MDQ5Ky0wLjI2MjIgICAgID8gICAgIDE3LjYyNDYrLTAuMjY2NCAgICAgICAgPwogICBtYWtl
LWluZGV4ZWQtc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc4NjcrLTAu
MTc0OCAgICAgICAgICAgIDQuNzU0NystMC4xNDMyICAgICAgICAKICAgbWFrZS1yb3BlLWNzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS41ODA0Ky0wLjMzNDAgICAgICAg
ICAgIDE5LjM1NDUrLTAuMjUxNyAgICAgICAgICBtaWdodCBiZSAxLjAxMTd4IGZhc3RlcgogICBt
YW55LWZvcmVhY2gtY2FsbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg4NjMr
LTAuMDU5NSAgICAgPyAgICAgIDMuOTMyMSstMC4wNjQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEx
OHggc2xvd2VyCiAgIG1hbnktcmVwZWF0LXN0b3JlcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjAuMzE3NistMC4yMjc5ICAgICA/ICAgICAyMC4zODQ1Ky0wLjI5NTcgICAgICAgID8K
ICAgbWFwLWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45
NzUwKy0wLjA5NzUgICAgID8gICAgICA2LjA3NDQrLTAuMTIwNSAgICAgICAgPyBtaWdodCBiZSAx
LjAxNjZ4IHNsb3dlcgogICBtYXAtZm9yLW9mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDI2LjM5NDgrLTAuODE0OSAgICAgPyAgICAgMjYuNzI2MystMC4zNDI1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIG1hcnNhZ2xpYS1sYXJnZXItaW50cyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNzcuMjEwNystMS42Njk1ICAgICA/ICAgICA3Ny4yNjU0
Ky0xLjQyMjcgICAgICAgID8KICAgbWFyc2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyMC41ODg2Ky0wLjMwNDAgICAgICAgICAgIDIwLjQzODkrLTAuMTMwNCAg
ICAgICAgCiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjI2NSstMC4wMjAwICAgICAgICAgICAgMC4yMjI1Ky0wLjAwODggICAgICAgICAgbWln
aHQgYmUgMS4wMTc5eCBmYXN0ZXIKICAgbWF0aC10cnVuYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMzI4Ky0wLjAxMjAgICAgID8gICAgICAwLjIzNDkrLTAuMDE1
MiAgICAgICAgPwogICBtYXRoLXdpdGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAg
ICAgICAgICAwLjIyMzYrLTAuMDEzMCAgICAgPyAgICAgIDAuMjMwMSstMC4wMTUxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI5NHggc2xvd2VyCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuODM2NistMC4wNjY1ICAgICAgICAgICAgMi43NjUwKy0w
LjA0ODAgICAgICAgICAgbWlnaHQgYmUgMS4wMjU5eCBmYXN0ZXIKICAgbWVnYW1vcnBoaWMtbG9h
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNS4zODI5Ky0wLjYyMTUgICAgICAg
ICAgIDM1LjA0MzgrLTAuNTQyMyAgICAgICAgCiAgIG1ldGhvZC1vbi1udW1iZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTkuNDUxOCstMC43NTA5ICAgICA/ICAgICAxOS45MDQ4
Ky0wLjExNDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjMzeCBzbG93ZXIKICAgbWluLWJvb2xlYW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44MDczKy0wLjA0MjcgICAg
ICAgICAgICAyLjc2MzYrLTAuMDUwMiAgICAgICAgICBtaWdodCBiZSAxLjAxNTh4IGZhc3Rlcgog
ICBtaW51cy1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcy
MjArLTAuMDQ5OCAgICAgPyAgICAgIDIuODA4OCstMC4wNDg5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDMxOXggc2xvd2VyCiAgIG1pbnVzLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNTM0MystMC4wNDY4ICAgICA/ICAgICAgMi41ODkxKy0wLjA2MTAgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjE2eCBzbG93ZXIKICAgbWlzYy1idWdzLTg0NzM4OS1qcGVnMjAwMCAg
ICAgICAgICAgICAgICAgICAgICAgNTM2MC40MzE4Ky01Ni4wMDE3ICAgID8gICA1MzgxLjA4MDcr
LTU3Ljc3NDIgICAgICAgPwogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI2LjIwMDErLTAuOTc1MyAgICAgICAgICAgMjYuMDcwOCstMC45MjEwICAg
ICAgICAKICAgbW9kLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMC4xOTE5Ky0wLjA2NzggICAgID8gICAgIDEwLjI4NjcrLTAuMTQ1NSAgICAgICAgPwogICBt
b2QtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjUzNjMr
LTAuMDkxNCAgICAgICAgICAgIDcuNDMwNystMC4wODgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0
MnggZmFzdGVyCiAgIG11bC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMTcwNystMC4wNTEzICAgICAgICAgICAgMy4xNjM2Ky0wLjA1ODggICAgICAgIAog
ICBtdWwtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg2
NTMrLTAuMDQ0OCAgICAgPyAgICAgIDIuODc5MistMC4wMzk1ICAgICAgICA/CiAgIG5lZy1ib29s
ZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODU0MistMC4wNTUz
ICAgICAgICAgICAgMi44NTQxKy0wLjAzNTYgICAgICAgIAogICBuZWdhdGl2ZS16ZXJvLWRpdmlk
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI5NDcrLTAuMDE0NyAgICAgPyAgICAg
IDAuMzEyMCstMC4wMTI5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDU4Nnggc2xvd2VyCiAgIG5lZ2F0
aXZlLXplcm8tbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjk3MCstMC4w
MDk2ICAgICA/ICAgICAgMC4zMjAzKy0wLjAxNDIgICAgICAgID8gbWlnaHQgYmUgMS4wNzg1eCBz
bG93ZXIKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4zMzU5Ky0wLjA0NTEgICAgICAgICAgICAwLjMwODMrLTAuMDI1NiAgICAgICAgICBtaWdo
dCBiZSAxLjA4OTN4IGZhc3RlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ4Ljk0OTArLTAuNDYwNSAgICAgPyAgICAgNDkuNjkwNystMC41NzE1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Mnggc2xvd2VyCiAgIG5ldy1hcnJheS1idWZmZXItZGVh
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTguMDI5NistMC45MjkyICAgICA/ICAgICA5
OC42NDc4Ky0xLjY2ODYgICAgICAgID8KICAgbmV3LWFycmF5LWJ1ZmZlci1wdXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMi40NTUyKy0wLjI0MDcgICAgICAgICAgIDEyLjIzMDkrLTAu
MTU2NCAgICAgICAgICBtaWdodCBiZSAxLjAxODN4IGZhc3RlcgogICBuZXctYXJyYXktZGVhZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjM3MjUrLTAuMTc0NiAgICAgPyAg
ICAgMTUuMzg0NCstMC4yMjQ4ICAgICAgICA/CiAgIG5ldy1hcnJheS1wdXNoICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjQ1MSstMC4yNDY4ICAgICA/ICAgICAgNy4zOTI2
Ky0wLjIyNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMjA0eCBzbG93ZXIKICAgbm8taW5saW5lLWNv
bnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjEyKy0wLjAxMDUgICAg
ID8gICAgICAwLjIzMjcrLTAuMDEzMyAgICAgICAgPyBtaWdodCBiZSAxLjA1MjB4IHNsb3dlcgog
ICBOdW1iZXItaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Ljgw
ODArLTAuNjczMCAgICAgICAgICAgMTYuNjI4MCstMC42MDM2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwOHggZmFzdGVyCiAgIG51bWJlci10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMzg3NCstMC4wNDc3ICAgICAgICAgICAgMy4zNzA2Ky0wLjA0OTUgICAgICAg
IAogICBvYmplY3QtYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
Ljc2ODQrLTAuMDczMyAgICAgPyAgICAgIDUuNzc1NistMC4wNTkxICAgICAgICA/CiAgIG9iamVj
dC1jbG9zdXJlLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjE4NSstMC4x
NzAzICAgICAgICAgICAgNi4xNTc1Ky0wLjEzMzMgICAgICAgIAogICBvYmplY3QtZ2V0LW93bi1w
cm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjQ1OSstMC4xNjU4ICAgICAgICAgICAg
NS41MzI3Ky0wLjE3OTAgICAgICAgICAgbWlnaHQgYmUgMS4wMjA1eCBmYXN0ZXIKICAgb2JqZWN0
LWludC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS44MDgzKy0wLjE4
MDUgICAgID8gICAgIDE1LjkwMTgrLTAuMTQ4MSAgICAgICAgPwogICBvYmplY3QtaW50LWFkZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjQzNzErLTAuMTk1OCAgICAgICAg
ICAgMTguMjY0NistMC4xMjEyICAgICAgICAKICAgb2JqZWN0LWludC1hbmQtYXJyYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNS44MjY1Ky0wLjEyMzEgICAgID8gICAgIDE1Ljg1MDAr
LTAuMTY5MCAgICAgICAgPwogICBvYmplY3QtaW50LW11bC1hcnJheSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE1Ljg0NjkrLTAuMTY0MiAgICAgPyAgICAgMTUuODcxOCstMC4wODgxICAg
ICAgICA/CiAgIG9iamVjdC1pbnQtc3ViLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTIuODk2MCstMC4xMTc4ICAgICA/ICAgICAxMi45OTExKy0wLjEyMDggICAgICAgID8KICAg
b2JqZWN0LWludC1zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC4zNTky
Ky0wLjIxMTcgICAgID8gICAgIDE4LjUxNzArLTAuMTk2NyAgICAgICAgPwogICBvYmplY3QtbHNo
aWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljc5MjUrLTAuMDYwNCAg
ICAgICAgICAgIDUuNzY1MistMC4wNTkzICAgICAgICAKICAgb2JqZWN0LW9yICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43MTc0Ky0wLjA1MjcgICAgICAgICAgICA1
LjcxNTcrLTAuMDYxMyAgICAgICAgCiAgIG9iamVjdC1yc2hpZnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUuNzYzNSstMC4wNjc1ICAgICA/ICAgICAgNS43NjQ2Ky0wLjA5
MTQgICAgICAgID8KICAgb2JqZWN0LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy4wNjkwKy0wLjA2MTYgICAgID8gICAgICAzLjA5NzErLTAuMDgzMyAgICAgICAg
PwogICBvYmplY3QtdXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
Ljc4MzkrLTAuMDkyNiAgICAgPyAgICAgIDUuODgxMistMC4xMTkwICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE2OHggc2xvd2VyCiAgIG9iamVjdC14b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuNzEzMCstMC4wNTAxICAgICA/ICAgICAgNS43MzY1Ky0wLjA2NzIgICAg
ICAgID8KICAgb2J2aW91cy1zaW5rLXBhdGhvbG9neS10YWtlbiAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMjAxKy0wLjAwNzkgICAgID8gICAgICAwLjIyMjArLTAuMDA4MiAgICAgICAgPwogICBv
YnZpb3VzLXNpbmstcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyODEr
LTAuMDEyNCAgICAgICAgICAgIDAuMjE4MistMC4wMTE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1
M3ggZmFzdGVyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0ICAgICAgICAgICAgICAg
ICAgICAgMjYuNDA4OCstMC40MTU3ICAgICA/ICAgICAyNi40NzE1Ky0wLjM5MjAgICAgICAgID8K
ICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43
MDg1Ky0wLjA3MjkgICAgICAgICAgICAyLjY0NTErLTAuMDQ2MSAgICAgICAgICBtaWdodCBiZSAx
LjAyNDB4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc0MzkrLTAuMDYyOCAgICAgPyAgICAgIDIuODA2OSstMC4wNTMwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xvd2VyCiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTkzNCstMC4wNDkyICAgICAgICAgICAgMi41NDE5
Ky0wLjA0MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMjAzeCBmYXN0ZXIKICAgcG9seS1jaGFpbi1h
Y2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTI5MCstMC4wNjk5ICAgICA/ICAg
ICAgMi45NTk2Ky0wLjA0ODIgICAgICAgID8gbWlnaHQgYmUgMS4wMTA1eCBzbG93ZXIKICAgcG9s
eS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMgICAgICAgICAgICAgMy4wMDkwKy0w
LjA0MzcgICAgICAgICAgICAyLjk4NDYrLTAuMDcwMSAgICAgICAgCiAgIHBvbHktY2hhaW4tYWNj
ZXNzLXNpbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTIyMCstMC4wNDgyICAgICAg
ICAgICAgMi45MDExKy0wLjA1MDQgICAgICAgIAogICBwb2x5LWNoYWluLWFjY2VzcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg4NDcrLTAuMDU3MCAgICAgPyAgICAgIDIuOTEx
MystMC4wNTY2ICAgICAgICA/CiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjUuNTA1NystMS4xNDU2ICAgICAgICAgICA2NC44NzUwKy0wLjYxOTUg
ICAgICAgIAogICBwb2x5bW9ycGhpYy1hcnJheS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjA0NzIrLTAuMTA0NyAgICAgPyAgICAgIDIuMDUzOCstMC4wNzg0ICAgICAgICA/CiAg
IHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI0
OSstMC4wMTAwICAgICA/ICAgICAgMC4yMjk3Ky0wLjAxNDkgICAgICAgID8gbWlnaHQgYmUgMS4w
MjE1eCBzbG93ZXIKICAgcG9seW1vcnBoaWMtcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yNDM0Ky0wLjAxNDUgICAgICAgICAgICAwLjI0MDErLTAuMDE2OSAgICAgICAg
ICBtaWdodCBiZSAxLjAxMzR4IGZhc3RlcgogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgt
c3RyaW5nICAgICAgICAgICAgICAgICAwLjIzODYrLTAuMDE1MyAgICAgICAgICAgIDAuMjI5OCst
MC4wMDc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4NnggZmFzdGVyCiAgIHBvbHltb3JwaGljLXB1
dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAgIDAuMjUxMistMC4wMTMwICAgICA/
ICAgICAgMC4yNTEyKy0wLjAxMjQgICAgICAgID8KICAgcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNS41OTg3Ky0wLjE3NzMgICAgICAgICAgIDE1LjUy
NTArLTAuMjA3MSAgICAgICAgCiAgIHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAg
ICAgICAgICAgICAgICAgIDUuMDAyMSstMC4wODAyICAgICAgICAgICAgNC45ODUwKy0wLjA3NzMg
ICAgICAgIAogICBwcmV2ZW50LWV4dGVuc2lvbnMtYW5kLWRvLXdvcmsgICAgICAgICAgICAgICAg
ICAgIDE2LjU4MDArLTAuMTg3MSAgICAgPyAgICAgMTYuNjkyMCstMC4xNzY2ICAgICAgICA/CiAg
IHByb3RvLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMw
OSstMC4wMDg0ICAgICA/ICAgICAgMC4yMzM5Ky0wLjAxMzggICAgICAgID8gbWlnaHQgYmUgMS4w
MTMyeCBzbG93ZXIKICAgcHJvdG90eXBlLWFjY2Vzcy13aXRoLW11dGF0aW5nLXByb3RvdHlwZSAg
ICAgICAgICAgMC4yMzc5Ky0wLjAzODUgICAgICAgICAgICAwLjIyNjQrLTAuMDEzNCAgICAgICAg
ICBtaWdodCBiZSAxLjA1MDh4IGZhc3RlcgogICBwdXQtYnktaWQtcmVwbGFjZS1hbmQtdHJhbnNp
dGlvbiAgICAgICAgICAgICAgICAgIDEwLjAxODYrLTAuMTQwMCAgICAgICAgICAgIDkuOTY4Mist
MC4xMjUwICAgICAgICAKICAgcHV0LWJ5LWlkLXNsaWdodGx5LXBvbHltb3JwaGljICAgICAgICAg
ICAgICAgICAgICAgMi45MDY0Ky0wLjA1MzggICAgICAgICAgICAyLjg5MzcrLTAuMDc1NiAgICAg
ICAgCiAgIHB1dC1ieS1pZC10cmFuc2l0aW9uLXdpdGgtaW5kZXhpbmctaGVhZGVyICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuODI0OSst
MC4zMTU3ICAgICA/ICAgICAxNy4wODIxKy0wLjI4MTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTUz
eCBzbG93ZXIKICAgcHV0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMy42MDcwKy0wLjIxNzUgICAgID8gICAgIDEzLjYxMDQrLTAuMTg0NiAgICAgICAgPwog
ICBwdXQtYnktdmFsLWRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMx
MjcrLTAuMDI3NCAgICAgICAgICAgIDAuMjkzOSstMC4wMTgzICAgICAgICAgIG1pZ2h0IGJlIDEu
MDY0MHggZmFzdGVyCiAgIHB1dC1ieS12YWwtbGFyZ2UtaW5kZXgtYmxhbmstaW5kZXhpbmctdHlw
ZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE0LjE0MjkrLTAuMjM5MiAgICAgICAgICAgMTQuMDMxOCstMC4xNzI5ICAgICAgICAKICAgcHV0
LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNTQ2Ky0w
LjAxMDUgICAgID8gICAgICAwLjI2NzcrLTAuMDE0NiAgICAgICAgPyBtaWdodCBiZSAxLjA1MTN4
IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24g
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NC43Mzg4Ky0wLjE4ODMgICAgICAgICAgIDE0LjYwNjcrLTAuMTU4NiAgICAgICAgCiAgIHB1dC1i
eS12YWwtd2l0aC1zdHJpbmctc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43OTc5Ky0wLjAzMDcgICAg
ID8gICAgICAzLjgyNzQrLTAuMDczMyAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjEyNTkrLTAuMjI3MiAgICAgICAgICAgMTQu
MDIxMystMC4yNjg3ICAgICAgICAKICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC1yZXBsYWNlLWFu
ZC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTMuNjYwNSstMC4xMTgwICAgICAhICAgICAxMy45NDg4Ky0wLjE1NTMgICAg
ICAgICEgZGVmaW5pdGVseSAxLjAyMTF4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9s
LXNsaWdodGx5LXBvbHltb3JwaGljICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuMDgxNystMC4wNjI3ICAgICA/ICAgICAgMy4xMDY0Ky0w
LjA1NDkgICAgICAgID8KICAgcHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNC4wODU2Ky0wLjE3NjMgICAgID8gICAgIDE0LjIwNjIrLTAuMjkyNyAgICAg
ICAgPwogICByYXJlLW9zci1leGl0LW9uLWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE0LjUwOTcrLTAuMTU5NyAgICAgPyAgICAgMTQuNjAyNystMC4yMDUyICAgICAgICA/CiAgIHJh
eXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgIDcuMjQ0NSst
MC4yMzQzICAgICAgICAgICAgNy4wOTg1Ky0wLjEyODkgICAgICAgICAgbWlnaHQgYmUgMS4wMjA2
eCBmYXN0ZXIKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yNjE0Ky0wLjAwOTUgICAgID8gICAgICAwLjI2NTArLTAuMDE3NyAgICAgICAgPyBt
aWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICByZWdleHAtZXhlYyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQ0LjIzNTkrLTAuNTM0NyAgICAgPyAgICAgNDQuNTE2MCstMC44
MDM2ICAgICAgICA/CiAgIHJlZ2V4cC1sYXN0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTcuNzUzMistMC4xODQwICAgICAgICAgICAxNy43NDQ4Ky0wLjE3OTMgICAgICAg
IAogICByZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAw
LjM1NzQrLTAuMDIwNCAgICAgPyAgICAgIDAuMzU4MCstMC4wMTcxICAgICAgICA/CiAgIHJlZ2V4
cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDg0MSstMC4wMzMy
ICAgICA/ICAgICAgMS4xMjkyKy0wLjA3MzAgICAgICAgID8gbWlnaHQgYmUgMS4wNDE2eCBzbG93
ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MjI4OSstMC4wMTQ3ICAgICAgICAgICAgMC4yMjQ1Ky0wLjAwNjcgICAgICAgICAgbWlnaHQgYmUg
MS4wMTk1eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjQzNjErLTAuMDMzMiAgICAgPyAgICAgIDIuNDg0NystMC4wNjMyICAgICAgICA/
IG1pZ2h0IGJlIDEuMDE5OXggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjcyNistMC4wMjEyICAgICA/ICAgICAgMC4yNzM4Ky0wLjAx
MjEgICAgICAgID8KICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4zMjUzKy0wLjAzMzAgICAgICAgICAgICAwLjMwNzArLTAuMDEwOCAgICAg
ICAgICBtaWdodCBiZSAxLjA1OTh4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzE3Ky0wLjAyODMgICAgICAgICAgICAw
LjMyNjcrLTAuMDEwMSAgICAgICAgICBtaWdodCBiZSAxLjAxNTN4IGZhc3RlcgogICByZWdleHAt
cHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzI1
NCstMC4wMTc4ICAgICAgICAgICAgMC4zMTM5Ky0wLjAxMTUgICAgICAgICAgbWlnaHQgYmUgMS4w
MzY3eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMzE4NistMC4wMTUwICAgICAgICAgICAgMC4zMDg5Ky0wLjAxMjEg
ICAgICAgICAgbWlnaHQgYmUgMS4wMzE0eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzEzOSstMC4wMTEwICAgICA/ICAg
ICAgMC4zMjQwKy0wLjAyMjMgICAgICAgID8gbWlnaHQgYmUgMS4wMzI0eCBzbG93ZXIKICAgcmVn
ZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMx
ODYrLTAuMDEyMCAgICAgPyAgICAgIDAuMzIyMSstMC4wMjI2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVm
ZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMzMxMistMC4wMTQ1ICAgICA/ICAgICAgMC4zMzI4Ky0wLjAyMzQgICAgICAgID8K
ICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuOTk2OSst
MC4wMzU2ICAgICA/ICAgICAgMS4wMTYxKy0wLjAyODEgICAgICAgID8gbWlnaHQgYmUgMS4wMTkz
eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
MiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjI0NTQrLTAuMDEzMSAgICAgICAgICAgIDAuMjMyOCstMC4wMDU3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDU0MnggZmFzdGVyCiAgIHJlZ2V4cC1zZXQtbGFzdC1pbmRleCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTcuNDgyOSstMC4yNTU5ICAgICAgICAgICAxNy4yNjY1Ky0wLjIyNTMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgcmVnaXN0ZXItcHJlc3N1cmUtZnJv
bS1vc3IgICAgICAgICAgICAgICAgICAgICAgICAyMi41NTU3Ky0wLjIyNDMgICAgICAgICAgIDIy
LjU0ODQrLTAuMjMzNyAgICAgICAgCiAgIHJlcGVhdC1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjEzMCstMC4wMTAyICAgICAgICAgICAgMC4yMTIyKy0wLjAw
OTMgICAgICAgIAogICByZXN0LXBhcmFtZXRlci1jb25zdHJ1Y3Rpb24tcGVyZm9ybWFuY2UgICAg
ICAgICAgICAwLjIyMjIrLTAuMDA5MyAgICAgPyAgICAgIDAuMjI0MystMC4wMDgwICAgICAgICA/
CiAgIHJpY2hhcmRzLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgNjUu
NTUxMSstMC43MzQxICAgICA/ICAgICA2Ni4zMjUzKy0xLjM4MjkgICAgICAgID8gbWlnaHQgYmUg
MS4wMTE4eCBzbG93ZXIKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNzU5Ky0wLjAxMzAgICAgICAgICAgICAwLjI2ODArLTAuMDA2MSAgICAg
ICAgICBtaWdodCBiZSAxLjAyOTJ4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLWxlbmd0aCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA4OTErLTAuMDgxMiAgICAgICAgICAgIDguMDI4
MSstMC4wODU2ICAgICAgICAKICAgc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAg
ICAgICAgICAgICAgICAgNy45NDQ1Ky0wLjA4MDIgICAgID8gICAgICA3Ljk0NzgrLTAuMTIxMCAg
ICAgICAgPwogICBzY29wZWQtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgu
NzQ0NSstMC4wOTgxICAgICA/ICAgICAgOC44MjU5Ky0wLjE0NjYgICAgICAgID8KICAgc2VhbC1h
bmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi41NjA2Ky0wLjIy
MTcgICAgID8gICAgIDE2LjYzNDYrLTAuMTMyMiAgICAgICAgPwogICBzZXQtZm9yLWVhY2ggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk5NTYrLTAuMDcwMyAgICAgXiAg
ICAgIDQuODI1OSstMC4wNzc0ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzUxeCBmYXN0ZXIKICAg
c2V0LWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS41NDkx
Ky0wLjE1MDQgICAgID8gICAgIDE1LjU2MjMrLTAuMjQzMCAgICAgICAgPwogICBzZXR0ZXItcHJv
dG90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzOTcrLTAuMDE1NiAg
ICAgPyAgICAgIDAuMjQ2NCstMC4wMTgzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3OXggc2xvd2Vy
CiAgIHNldHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
ODk4OCstMC4wNjQ4ICAgICA/ICAgICAgMy45MTI5Ky0wLjA4OTUgICAgICAgID8KICAgc2ltcGxl
LWFjdGl2YXRpb24tZGVtbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNi44NTczKy0wLjQ0
NzQgICAgICAgICAgIDI2Ljc0MTkrLTAuMjE4NyAgICAgICAgCiAgIHNpbXBsZS1nZXR0ZXItYWNj
ZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5NystMC4wMTAyICAgICA/ICAg
ICAgMC4yNDE5Ky0wLjAyOTEgICAgICAgID8gbWlnaHQgYmUgMS4wNTM1eCBzbG93ZXIKICAgc2lt
cGxlLXBvbHktY2FsbC1uZXN0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44NzM5Ky0w
LjA5NjAgICAgICAgICAgICA0Ljg1NTErLTAuMDk4MCAgICAgICAgCiAgIHNpbXBsZS1wb2x5LWNh
bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTYyMistMC4wMzc4ICAgICAg
ICAgICAgMS41MjM3Ky0wLjA0ODAgICAgICAgICAgbWlnaHQgYmUgMS4wMjUyeCBmYXN0ZXIKICAg
c2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAgICAgICAgICAgNi40NTA2
Ky0wLjE5NDEgICAgICAgICAgICA2LjMyMzErLTAuMDk2NSAgICAgICAgICBtaWdodCBiZSAxLjAy
MDJ4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZyAgICAgICAgICAgICAgICAg
ICAgICAgIDIzLjAwNDcrLTAuNDY5MyAgICAgICAgICAgMjIuNTg0NCstMC4zODAxICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE4NnggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZh
aWwtd2l0aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEyLjAxMjQrLTAuMjA1MCAgICAgICAgICAgMTEuNjAwMyst
MC4yODUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NXggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAt
dGVzdC1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAgICAgMTkuNTU0OSstMC4yNzcxICAgICAg
ICAgICAxOS4zMzg4Ky0wLjI5MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAg
c2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctd2l0aC1ob2lzdGVkLXJlZ2V4cCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjMwNjgrLTAu
MDkzNSAgICAgICAgICAgMTIuMTM5NCstMC4wOTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHgg
ZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgMjAuOTE3MystMC4xODUyICAgICAgICAgICAyMC42OTQ2Ky0wLjM2MjkgICAgICAgICAgbWln
aHQgYmUgMS4wMTA4eCBmYXN0ZXIKICAgc2luLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy45MzE5Ky0wLjE4NzQgICAgICAgICAgICA3Ljc2NDYrLTAuMDgz
NCAgICAgICAgICBtaWdodCBiZSAxLjAyMTV4IGZhc3RlcgogICBzaW5nbGV0b24tc2NvcGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxODQrLTAuMDEwMCAgICAgPyAgICAg
IDAuMjI3MystMC4wMTI1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQxMXggc2xvd2VyCiAgIHNpbmst
ZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzOCstMC4w
MTA5ICAgICA/ICAgICAgMC4yMjc1Ky0wLjAxNDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTY1eCBz
bG93ZXIKICAgc2luay1odWdlLWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC4yMzY5Ky0wLjAxNTQgICAgICAgICAgICAwLjIyNTQrLTAuMDA5MyAgICAgICAgICBtaWdo
dCBiZSAxLjA1MTJ4IGZhc3RlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0LWRhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIyNDArLTAuMDA5MiAgICAgPyAgICAgIDAuMjI4MSstMC4wMTE2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4M3ggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3Qt
dGFrZW4gICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMwNystMC4wMTkyICAgICAgICAgICAg
MC4yMjU0Ky0wLjAxMDUgICAgICAgICAgbWlnaHQgYmUgMS4wMjMzeCBmYXN0ZXIKICAgc2lua2Fi
bGUtbmV3LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTU4Ky0wLjAw
ODUgICAgID8gICAgICAwLjIyNjMrLTAuMDE4OSAgICAgICAgPyBtaWdodCBiZSAxLjA0ODV4IHNs
b3dlcgogICBzbG93LWFycmF5LXByb2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAg
ICAzLjY1MTcrLTAuMDc4OCAgICAgPyAgICAgIDMuNjc4MystMC4wODMwICAgICAgICA/CiAgIHNs
b3ctY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTU3OCst
MC4wNDI4ICAgICAgICAgICAgMy4xNTQ1Ky0wLjA0MzUgICAgICAgIAogICBzbG93LXRlcm5hcmll
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjk1MjcrLTAuMjM3NCAgICAg
ICAgICAgMjEuNjg3MystMC4yMjQxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyMnggZmFzdGVyCiAg
IHNvcnRpbmctYmVuY2htYXJrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNDEw
NistMC41Nzg4ICAgICA/ICAgICAyNC40ODE0Ky0wLjY1NzMgICAgICAgID8KICAgc3BhcnNlLWNv
bmRpdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4zNTkxKy0wLjA0MDgg
ICAgICAgICAgICAxLjM0MjArLTAuMDI1MCAgICAgICAgICBtaWdodCBiZSAxLjAxMjd4IGZhc3Rl
cgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIx
LjUwNzgrLTAuMTg0MyAgICAgICAgICAgMjEuMjQzOSstMC4wOTY1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEyNHggZmFzdGVyCiAgIHN0cmNhdC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMjIzMCstMC4wMDk5ICAgICA/ICAgICAgMC4yMjk5Ky0wLjAxNzkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzA5eCBzbG93ZXIKICAgc3RyY2F0LWxlbmd0aC1jb25zdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzY2Ky0wLjA0NDYgICAgICAgICAgICAwLjIy
MzkrLTAuMDA3MiAgICAgICAgICBtaWdodCBiZSAxLjA1NzB4IGZhc3RlcgogICBzdHJpY3Qtb3Ny
LWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjM4MTArLTAuMTcyMCAg
ICAgICAgICAgMTQuMjYwMCstMC4xMTQyICAgICAgICAKICAgc3RyaW5nLWNoYXItY29kZS1hdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy41MzE4Ky0wLjE0NjcgICAgICAgICAgIDE3
LjQzMzErLTAuMTU1MiAgICAgICAgCiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDYuMTc1NSstMC4xMTU1ICAgICA/ICAgICAgNi4zMTY2Ky0wLjMw
NzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjI4eCBzbG93ZXIKICAgc3RyaW5nLWNvbmNhdC1wYWly
LW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgNi4wMDIxKy0wLjE0NjUgICAgID8gICAg
ICA2LjI2NTArLTAuMjAwNSAgICAgICAgPyBtaWdodCBiZSAxLjA0Mzh4IHNsb3dlcgogICBzdHJp
bmctY29uY2F0LXBhaXItc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc5ODgrLTAu
MDg4NiAgICAgICAgICAgIDMuNzIwNCstMC4wNDkxICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXgg
ZmFzdGVyCiAgIHN0cmluZy1jb25jYXQtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTMuMzcwNistMC4xODI1ICAgICA/ICAgICAxMy43NDEwKy0wLjIxOTMgICAgICAgID8gbWln
aHQgYmUgMS4wMjc3eCBzbG93ZXIKICAgc3RyaW5nLWNvbnMtcmVwZWF0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMS4zMTUwKy0wLjA3MTIgICAgICAgICAgIDExLjIwNTArLTAuMjM1
NyAgICAgICAgCiAgIHN0cmluZy1jb25zLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTEuNTcwNistMC4xMjYyICAgICAgICAgICAxMS41NjQ0Ky0wLjA5MDQgICAgICAgIAog
ICBzdHJpbmctZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5Ljk5
NjErLTAuMjM3OSAgICAgPyAgICAgMjAuMDQ2MystMC4yMTY4ICAgICAgICA/CiAgIHN0cmluZy1m
cm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNzEyMSstMC4xOTg5
ICAgICAgICAgICAxMC42MDQxKy0wLjE4NTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTAyeCBmYXN0
ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAgICAgICAgICAgICAg
Ni4zMzM0Ky0wLjExMjQgICAgICAgICAgICA2LjI5MDUrLTAuMDc1MiAgICAgICAgCiAgIHN0cmlu
Zy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMtaW5zYW5lICAgICAgICAgICAgIDQuOTUwMSstMC4x
MTA2ICAgICBeICAgICAgNC42ODE5Ky0wLjA3NzYgICAgICAgIF4gZGVmaW5pdGVseSAxLjA1NzN4
IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAg
ICAgICA1LjY1MTcrLTAuMTAzMSAgICAgICAgICAgIDUuNjM4NCstMC4wODAzICAgICAgICAKICAg
c3RyaW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NTgz
Ky0wLjA0MjYgICAgID8gICAgICAyLjY4ODcrLTAuMDM1MiAgICAgICAgPyBtaWdodCBiZSAxLjAx
MTR4IHNsb3dlcgogICBzdHJpbmctaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyLjI2MzQrLTAuMDYxNCAgICAgICAgICAgIDIuMjMxOSstMC4wNTM1ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE0MXggZmFzdGVyCiAgIHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAg
ICAgICAgICAgICAgICAgICAgICAgMTYuNjA4MCstMC4wODM3ICAgICAgICAgICAxNi41Njg1Ky0w
LjA3MzIgICAgICAgIAogICBzdHJpbmctb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIxMTQrLTAuMDA4OSAgICAgPyAgICAgIDAuMjIwOCstMC4wMDc4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ0N3ggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuMzQ2NCstMC4wNDkyICAgICA/ICAgICAgMS4zODYyKy0w
LjAzNDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjk2eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlw
ZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMzMSstMC4wMTA2ICAgICA/ICAg
ICAgMC4yMzUwKy0wLjAwNjggICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2Jz
ZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM0MCstMC4wMTEyICAgICAgICAgICAgMC4yMzQwKy0w
LjAxMjIgICAgICAgIAogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yMzM1Ky0wLjAxNzAgICAgICAgICAgICAwLjIyNDMrLTAuMDE5MyAgICAgICAg
ICBtaWdodCBiZSAxLjA0MTF4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuODA4NistMC4wNjcwICAgICA/ICAgICAgMi44MTIyKy0wLjA4
MjQgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yODE4Ky0wLjAxMjMgICAgID8gICAgICAwLjI4ODQrLTAuMDMwOSAgICAgICAgPyBt
aWdodCBiZSAxLjAyMzV4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjMzMTYrLTAuMDMwMiAgICAgICAgICAgIDAuMzEwNCst
MC4wMDgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4NXggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM0MDArLTAuMDM4NiAg
ICAgICAgICAgIDAuMzIzOSstMC4wMTEzICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ5N3ggZmFzdGVy
CiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWlnbm9y
ZUNhc2UgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4zMzMwKy0wLjAxMTkgICAgID8gICAgICAwLjM0NDErLTAuMDI3MiAgICAgICAgPyBt
aWdodCBiZSAxLjAzMzJ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFi
bGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNzgyKy0wLjA1NjAgICAgICAgICAgICAwLjMz
NDgrLTAuMDE1MyAgICAgICAgICBtaWdodCBiZSAxLjEyOTh4IGZhc3RlcgogICBzdHJpbmctcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1zdGlja3kgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNDA0Ky0wLjAy
ODkgICAgICAgICAgICAwLjMzMzcrLTAuMDI3OSAgICAgICAgICBtaWdodCBiZSAxLjAyMDF4IGZh
c3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy11
bmljb2RlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMzQ0MystMC4wMjA0ICAgICA/ICAgICAgMC4zNTE1Ky0wLjAzMzQgICAgICAgID8g
bWlnaHQgYmUgMS4wMjA5eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4zMzY5Ky0wLjAxODQgICAgICAgICAgICAwLjMyNjIrLTAuMDA5
NSAgICAgICAgICBtaWdodCBiZSAxLjAzMjl4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LWFyaXRo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjA3NjQrLTAuMzc5MiAgICAgICAgICAg
MjYuNjgyMistMC40MjQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0OHggZmFzdGVyCiAgIHN0cmlu
Zy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDUuODcwNSstMC4x
OTY5ICAgICAgICAgICAgNS44MzU3Ky0wLjA3MTcgICAgICAgIAogICBzdHJpbmctcmVwZWF0LW5v
dC1yZXNvbHZpbmctbm8taW5saW5lICAgICAgICAgICAgICAwLjIyMjgrLTAuMDEzOCAgICAgICAg
ICAgIDAuMjEyMCstMC4wMDgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxMXggZmFzdGVyCiAgIHN0
cmluZy1yZXBlYXQtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgIDguOTc2OSst
MC4yNTY0ICAgICA/ICAgICAgOS4wMzE3Ky0wLjE4NTEgICAgICAgID8KICAgc3RyaW5nLXJlcGVh
dC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICAgICAzMy4wNDAwKy0wLjQ4OTIgICAg
ID8gICAgIDMzLjEwODUrLTAuNTczMiAgICAgICAgPwogICBzdHJpbmctcmVwZWF0LXJlc29sdmlu
Zy1uby1pbmxpbmUgICAgICAgICAgICAgICAgICAwLjIzODIrLTAuMDEzMSAgICAgICAgICAgIDAu
MjI4NSstMC4wMTE4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyNXggZmFzdGVyCiAgIHN0cmluZy1y
ZXBlYXQtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuNzE2OCstMC42NDk1
ICAgICA/ICAgICAzOS44MTgzKy0wLjM3NzggICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1zaW5n
bGUtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgOS40NDQzKy0wLjE5NTUgICAgICAgICAg
ICA5LjE3MTUrLTAuMjIwMCAgICAgICAgICBtaWdodCBiZSAxLjAyOTd4IGZhc3RlcgogICBzdHJp
bmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICA5LjU0MjMrLTAu
MTY1NyAgICAgPyAgICAgIDkuNTc4NystMC4yMTcwICAgICAgICA/CiAgIHN0cmluZy1yZXBlYXQt
c21hbGwtbm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgIDcuNjA5NistMC4yNDg2ICAgICAg
ICAgICAgNy40NjE4Ky0wLjEwMjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTk4eCBmYXN0ZXIKICAg
c3RyaW5nLXJlcGVhdC1zbWFsbC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAzOS4yNzA0
Ky0wLjQ2MzMgICAgID8gICAgIDM5Ljg1ODUrLTAuNjMxMSAgICAgICAgPyBtaWdodCBiZSAxLjAx
NTB4IHNsb3dlcgogICBzdHJpbmctcmVwbGFjZS1lbXB0eSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE4LjY5OTcrLTAuMjA1OCAgICAgPyAgICAgMTguOTIxNCstMC4xNTY1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDExOXggc2xvd2VyCiAgIHN0cmluZy1yZXBsYWNlLWdlbmVyaWMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjYuMTAwOSstMS4wMDIxICAgICA/ICAgICA2Ny44NDcxKy0w
Ljg2MDggICAgICAgID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4wNDY4Ky0wLjIxNTMgICAgID8g
ICAgIDE5LjA1MTArLTAuMjI3MyAgICAgICAgPwogICBzdHJpbmctcm9wZS13aXRoLW9iamVjdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxNjErLTAuMDA4NiAgICAgPyAgICAgIDAuMjM2
NistMC4wMzg2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk0OXggc2xvd2VyCiAgIHN0cmluZy1zdWIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQuNDcxNSstMC42MzAyICAg
ICA/ICAgICA0NC41MDU1Ky0wLjY5MjEgICAgICAgID8KICAgc3RyaW5nLXRlc3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yODA5Ky0wLjA4NDUgICAgICAgICAgICAz
LjE4MjkrLTAuMDU5NyAgICAgICAgICBtaWdodCBiZSAxLjAzMDh4IGZhc3RlcgogICBzdHJpbmct
dHJhbnNjb2RpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjIyNTUrLTAuNTA1
NiAgICAgICAgICAgMjUuMDU1NistMC40ODQyICAgICAgICAKICAgc3RyaW5nLXZhci1lcXVhbGl0
eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy42ODQ5Ky0wLjM5OTEgICAgID8gICAg
IDM3Ljk2MjIrLTAuNDEwNiAgICAgICAgPwogICBzdHJ1Y3R1cmUtaG9pc3Qtb3Zlci10cmFuc2l0
aW9ucyAgICAgICAgICAgICAgICAgICA0LjIxOTArLTAuMDk0MSAgICAgICAgICAgIDQuMjExMyst
MC4xMjMxICAgICAgICAKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0Ny4yNjg4Ky0wLjM2MTcgICAgID8gICAgIDQ3LjM3MjgrLTAuNDAzOSAgICAg
ICAgPwogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ3LjgxODkrLTAuNTM4OSAgICAgPyAgICAgNDguNTkwMystMC41OTM4ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE2MXggc2xvd2VyCiAgIHN1YnN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTEuOTMzNSstMC41NjA2ICAgICA/ICAgICA1Mi4zOTA3Ky0wLjQ5MTgg
ICAgICAgID8KICAgc3dpdGNoLWNoYXItY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi42NzE3Ky0wLjA2OTUgICAgICAgICAgICAyLjY1NDYrLTAuMDg0NyAgICAgICAgCiAg
IHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzY3
MistMC40Nzk4ICAgICAgICAgICAgNi4yNzAyKy0wLjA0MzYgICAgICAgICAgbWlnaHQgYmUgMS4w
MTU1eCBmYXN0ZXIKICAgc3dpdGNoLWNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC4yMTU3Ky0wLjEyOTggICAgID8gICAgICA4LjI1NzgrLTAuMTUxNyAgICAgICAg
PwogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZy12YXIgICAgICAgICAgICAgICAgICAgICAgIDE4
LjMxNjUrLTAuMTM5NyAgICAgPyAgICAgMTguMzI3MistMC4yMDk4ICAgICAgICA/CiAgIHN3aXRj
aC1zdHJpbmctYmFzaWMtYmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNjMxOCstMC4y
NDAwICAgICAgICAgICAxNi40NjQ3Ky0wLjEwNjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBm
YXN0ZXIKICAgc3dpdGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOC4xMDIyKy0wLjA4MjYgICAgICAgICAgIDE4LjA4MTcrLTAuMTU1MyAgICAgICAgCiAgIHN3
aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuMTg2MCst
MC4xNDAwICAgICAgICAgICAxNS4xMDA5Ky0wLjEzODAgICAgICAgIAogICBzd2l0Y2gtc3RyaW5n
LWJpZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgIDIzLjQ0MDMrLTAuNTQxNCAgICAg
ICAgICAgMjMuNDM3NistMC4yNjA5ICAgICAgICAKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93
ZXItdmFyICAgICAgICAgICAgICAgICAgICAxOC43MTYxKy0wLjE1NDEgICAgID8gICAgIDE4Ljc5
MDgrLTAuMjEyMSAgICAgICAgPwogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlciAgICAgICAg
ICAgICAgICAgICAgICAgIDE0LjQ1ODArLTAuMTE0NiAgICAgPyAgICAgMTQuNjAxNCstMC4wOTE1
ICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctc2hvcnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTQuNjkzMCstMC4xODkyICAgICAgICAgICAxNC42MTA3Ky0wLjE3OTMgICAgICAgIAog
ICBzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjU5
NDIrLTAuNTM3NiAgICAgICAgICAgMTEuNDE0NistMC41MTA1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDE1N3ggZmFzdGVyCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMjczMystMC4wMDkxICAgICA/ICAgICAgMC4yNzM0Ky0wLjAxNDIgICAgICAg
ID8KICAgdGVhci1vZmYtYXJndW1lbnRzLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
NS45NjM5Ky0wLjE0MDggICAgICAgICAgICA1Ljg5ODArLTAuMTYwOCAgICAgICAgICBtaWdodCBi
ZSAxLjAxMTJ4IGZhc3RlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjAyNjIrLTAuMjA3OSAgICAgICAgICAgIDYuOTk2NSstMC4wNzczICAg
ICAgICAKICAgdGVtcG9yYWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMy4yMTE4Ky0wLjI1NjEgICAgID8gICAgIDEzLjQ2MTArLTAuMjA4MSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxODl4IHNsb3dlcgogICB0by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE1Ljc0OTMrLTAuMTQxMyAgICAgICAgICAgMTUuNjY0MCstMC4xMDkw
ICAgICAgICAKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0
cmluZyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0Ljg1NTgrLTAuMDkwNSAgICAgPyAgICAgIDQuOTg2NCstMC4wODQ5ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDI2OXggc2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1vbmx5LW51bWJl
ciAgICAgICAgICAgICAgICAgIDAuODMxNSstMC4wMjg5ICAgICBeICAgICAgMC43MjQwKy0wLjA1
MTggICAgICAgIF4gZGVmaW5pdGVseSAxLjE0ODV4IGZhc3RlcgogICB0by1udW1iZXItY29uc3Ry
dWN0b3Itb25seS1zdHJpbmcgICAgICAgICAgICAgICAgICAyLjI4NjErLTAuMDQ3MSAgICAgPyAg
ICAgIDIuMjg3NSstMC4wOTAwICAgICAgICA/CiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1zdHJp
bmctbnVtYmVyLXN0cmluZy1udW1iZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC4yOTQxKy0wLjExODAgICAgICAgICAgICA0LjI4OTIr
LTAuMDg1NSAgICAgICAgCiAgIHRvLW51bWJlci1udW1iZXItc3RyaW5nLW51bWJlci1zdHJpbmcg
ICAgICAgICAgICAgIDQuMzgxMCstMC4xMTMwICAgICA/ICAgICAgNC40MDU2Ky0wLjA2NzggICAg
ICAgID8KICAgdG8tbnVtYmVyLW9ubHktbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC42NDQ1Ky0wLjEwNTcgICAgICAgICAgICAwLjU5NTYrLTAuMTAxNyAgICAgICAgICBtaWdo
dCBiZSAxLjA4MjF4IGZhc3RlcgogICB0by1udW1iZXItb25seS1zdHJpbmcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjIwNjcrLTAuMDk3MSAgICAgPyAgICAgIDIuMjg5OCstMC4wODY5
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM3N3ggc2xvd2VyCiAgIHRvLW51bWJlci1zdHJpbmctbnVt
YmVyLXN0cmluZy1udW1iZXIgICAgICAgICAgICAgIDQuMTY5MistMC4wOTYwICAgICA/ICAgICAg
NC4yNDAzKy0wLjA4OTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTcweCBzbG93ZXIKICAgdHJ5LWNh
dGNoLWdldC1ieS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNy4zODE4Ky0wLjQy
MTEgICAgID8gICAgICA4LjE3NDYrLTAuNjcxNSAgICAgICAgPyBtaWdodCBiZSAxLjEwNzR4IHNs
b3dlcgogICB0cnktY2F0Y2gtZ2V0LWJ5LXZhbC1kaXJlY3QtYXJndW1lbnRzICAgICAgICAgICAg
ICA0LjQ3MjYrLTAuMTc2MiAgICAgPyAgICAgIDQuNTM4NCstMC4xNzAyICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE0N3ggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLXNjb3BlZC1hcmd1bWVu
dHMgICAgICAgICAgICAgMTAuNTI3OCstMC4xNDE0ICAgICAgICAgICAxMC4zNDMwKy0wLjEzMTYg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTc5eCBmYXN0ZXIKICAgdHJ5LWdldC1ieS1pZC1iYXNpYyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNzY1Ky0wLjAxMjYgICAgICAgICAgICAw
LjI2MjArLTAuMDEwMSAgICAgICAgICBtaWdodCBiZSAxLjA1NTN4IGZhc3RlcgogICB0cnktZ2V0
LWJ5LWlkLXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1NjQrLTAuMDA1
OSAgICAgPyAgICAgIDAuMjYyMystMC4wMDc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xv
d2VyCiAgIHR5cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAgICAgICAg
IDAuMjM2NCstMC4wMTU1ICAgICAgICAgICAgMC4yMjk5Ky0wLjAwOTggICAgICAgICAgbWlnaHQg
YmUgMS4wMjgweCBmYXN0ZXIKICAgdHlwZWQtYXJyYXktc3ViYXJyYXkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4yNjQ1Ky0wLjAxODkgICAgID8gICAgICAwLjI3MzArLTAuMDI1MyAg
ICAgICAgPyBtaWdodCBiZSAxLjAzMjF4IHNsb3dlcgogICB1bmRlZmluZWQtcHJvcGVydHktYWNj
ZXNzICAgICAgICAgICAgICAgICAgICAgICAgMzY1LjEyMTkrLTIuNzMzNSAgICAgPyAgICAzNjcu
NTM0MCstNC4xODYzICAgICAgICA/CiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMzA4NistMC4wNjkzICAgICA/ICAgICAgMy40MjA1Ky0wLjA3
MjkgICAgICAgID8gbWlnaHQgYmUgMS4wMzM4eCBzbG93ZXIKICAgdW5wcm9maWxlZC1saWNtICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS4zODYyKy0wLjE1NDYgICAgID8gICAg
IDExLjY1NzcrLTAuMTk5NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMzh4IHNsb3dlcgogICB1bnR5
cGVkLXN0cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgIDExLjkzNjkrLTAu
MTMyMiAgICAgICAgICAgMTEuODU3MCstMC4yMDc5ICAgICAgICAKICAgdjgtcmF5dHJhY2Utd2l0
aC1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICA0NC4xNzE1Ky0wLjczMDQgICAgID8g
ICAgIDQ1LjI2NzkrLTAuNjY4NSAgICAgICAgPyBtaWdodCBiZSAxLjAyNDh4IHNsb3dlcgogICB2
OC1yYXl0cmFjZS13aXRoLXRyeS1jYXRjaC1oaWdoLWZyZXF1ZW5jeS10aHJvd3MgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yOTQ5Ky0w
LjAwODYgICAgICAgICAgICAwLjI5MzQrLTAuMDA5NyAgICAgICAgCiAgIHY4LXJheXRyYWNlLXdp
dGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjk3OCstMC4wMTMzICAgICA/
ICAgICAgMC4zMDgxKy0wLjAxOTMgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ3eCBzbG93ZXIKICAg
djgtcmVnZXhwLXNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ni40NTQx
Ky0wLjkwNDUgICAgICAgICAgIDc1LjU4ODgrLTAuODE5NCAgICAgICAgICBtaWdodCBiZSAxLjAx
MTR4IGZhc3RlcgogICB2YXJhcmdzLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjIxODgrLTAuMDEyMyAgICAgICAgICAgIDAuMjE2OSstMC4wMTQ4ICAgICAgICAK
ICAgdmFyYXJncy1jb25zdHJ1Y3QtaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
MjEwKy0wLjAxMTUgICAgICAgICAgICAwLjIyMDMrLTAuMDA5NSAgICAgICAgCiAgIHZhcmFyZ3Mt
Y29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjM2MistMC4wMTQ5
ICAgICAgICAgICAgMC4yMTY4Ky0wLjAxMDkgICAgICAgICAgbWlnaHQgYmUgMS4wODk0eCBmYXN0
ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yMjM4Ky0wLjAxMzYgICAgICAgICAgICAwLjIxMDkrLTAuMDA5NiAgICAgICAgICBtaWdodCBi
ZSAxLjA2MTF4IGZhc3RlcgogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjIxNDUrLTAuMDEwNyAgICAgPyAgICAgIDAuMjE1NSstMC4wMTMyICAg
ICAgICA/CiAgIHZhcmFyZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjE1NCstMC4wMDcyICAgICAgICAgICAgMC4yMTAwKy0wLjAwODAgICAgICAgICAgbWln
aHQgYmUgMS4wMjU4eCBmYXN0ZXIKICAgd2VpcmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMTQxKy0wLjAxMTggICAgID8gICAgICAwLjIyMDErLTAuMDE3
MSAgICAgICAgPyBtaWdodCBiZSAxLjAyODN4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy41OTY3Ky0wLjAwNzQgICAgICAgICAg
ICAzLjU5NDkrLTAuMDA3NSAgICAgICAgICBtaWdodCBiZSAxLjAwMDV4IGZhc3RlcgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKQXNtQmVuY2g6CiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1NDQuMDgzNSstMTAuMTQ4NyAgICA/ICAgIDU1MC4zMjQyKy0xMC4zNDQz
ICAgICAgID8gbWlnaHQgYmUgMS4wMTE1eCBzbG93ZXIKICAgY3JheS5jICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0NS42OTU1Ky01LjM4ODkgICAgICAgICAgNDQ1
LjYwNzMrLTQuMzI0MCAgICAgICAgCiAgIGRyeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1OTkuNjA1NSstNDcuNjE0OCAgICAgICAgIDU4NC4wNzcwKy0zMi4w
NjIxICAgICAgICAgbWlnaHQgYmUgMS4wMjY2eCBmYXN0ZXIKICAgRmxvYXRNTS5jICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwMy45NDYwKy00LjkyMTMgICAgID8gICAg
ODA0LjY2MDArLTcuNDI5MSAgICAgICAgPwogICBnY2MtbG9vcHMuY3BwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0NDk0LjE2NDArLTIzLjYwMTUgICAgPyAgIDQ1MjcuODk1OSst
MjguOTYwNiAgICAgICA/CiAgIG4tYm9keS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwMzMuMDE3NistNS4zODc1ICAgICAgICAgMTAzMC40NjU0Ky0xNy41OTI5ICAg
ICAgIAogICBRdWlja3NvcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDgyLjEyMzgrLTQuMjk1MSAgICAgPyAgICA0ODYuMDEzNCstNS41OTQzICAgICAgICA/CiAgIHN0
ZXBhbm92X2NvbnRhaW5lci5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2NzguMjM3Myst
MjYuMTczNiAgICAgICAgMzY2NC4wNTkxKy0xOS42OTA3ICAgICAgIAogICBUb3dlcnMuYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk0LjI4NjYrLTIuMDQzMyAgICAg
ICAgICAyOTIuNjk3NSstMS44NDA2ICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4NjguNjM1MistNy43NTY3ICAgICAgICAgIDg2Ny44
ODMxKy01Ljg5ODMgICAgICAgICAgbWlnaHQgYmUgMS4wMDA5eCBmYXN0ZXIKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAg
ICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCkRTUDoKICAgZmlsdHJyLXBvc3Rlcml6ZS10aW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzMC4yMjc4Ky0wLjI3MzkgICAgID8gICAgIDMwLjI0MzQrLTAuMzA4MSAgICAgICAgPwog
ICBmaWx0cnItdGludC1jb250cmFzdC1zYXQtYnJpZ2h0ICAgICAgICAgICAgICAgICAgIDQ0LjUy
MDErLTAuNTg1NiAgICAgICAgICAgNDQuMTgzMystMC4yNzMxICAgICAgICAKICAgZmlsdHJyLXRp
bnQtc2F0LWFkai1jb250ci1tdWx0ICAgICAgICAgICAgICAgICAgICA0OS41Mzg0Ky0wLjY0NTMg
ICAgID8gICAgIDQ5LjY3NTMrLTAuNDUzOCAgICAgICAgPwogICBmaWx0cnItYmx1ci1vdmVybGF5
LXNhdC1jb250ciAgICAgICAgICAgICAgICAgICAgMTA5LjE2NDIrLTIuNTA2OSAgICAgICAgICAx
MDcuODc5MSstMS4zNjc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOXggZmFzdGVyCiAgIGZpbHRy
ci1zYXQtYmx1ci1tdWx0LXNoYXJwZW4tY29udHIgICAgICAgICAgICAgICAxMjMuOTM0MistNy41
MzE3ICAgICA/ICAgIDEyNC44NDI4Ky02Ljk3NjcgICAgICAgID8KICAgZmlsdHJyLXNlcGlhLWJp
YXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy43MDMyKy0wLjQ1OTYgICAgID8g
ICAgIDI4LjAzMjErLTAuNjcwMCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTl4IHNsb3dlcgogICBy
b3V0ZTktdnA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg1ICAgICAxNjE4LjA5NTQr
LTY5LjcyNzUgICAgICAgIDE2MDUuMzMyNCstNDAuMzk5MiAgICAgICAKICAgc3RhcmZpZWxkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4NSAgICAgMTMwOS44MTA1Ky0xOC41NzQwICAg
ICAgICAxMzAyLjgzNDMrLTIyLjIyOTggICAgICAgCiAgIGJlbGxhcmQtanNsaW51eCAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDUgICAgIDM2MjYuNjAwMCstMzcuNDc0NSAgICA/ICAgMzYyNy40
MDAwKy0zMC45Mjk0ICAgICAgID8KICAgenluYXBzLXF1YWtlMyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4NSAgICAgIDU3MS41NTg1Ky02LjY5NTYgICAgICAgICAgNTY5LjAzOTcrLTUuNjQ2
NCAgICAgICAgCiAgIHp5bmFwcy1tYW5kZWxicm90ICAgICAgICAgICAgICAgICAgICAgICAgeDUg
ICAgICA0OTguODU3MistNi42Mzg4ICAgICAgICAgIDQ5Ny44MjE5Ky0zLjg3OTcgICAgICAgIAog
ICBhbW1vanMtYXNtLWpzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg1ICAgICAgIDY5LjYy
NDYrLTIuNzY3OSAgICAgPyAgICAgNzAuNDA3NystMS42OTU5ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMnggc2xvd2VyCiAgIGFtbW9qcy1yZWd1bGFyLWpzICAgICAgICAgICAgICAgICAgICAgICAg
eDUgICAgICAgNzAuMjE4NSstMS4zNDI0ICAgICAgICAgICA2OS45OTgxKy0xLjU1MDIgICAgICAg
IAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3
NS4wNjIzKy0yLjQyNTcgICAgICAgICAgMzc0LjY0ODErLTEuODE1NSAgICAgICAgICBtaWdodCBi
ZSAxLjAwMTF4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29tcHJlc3Npb25CZW5jaDoKICAgaHVm
Zm1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MS4wNzA0Ky0w
LjYzNTUgICAgID8gICAgIDYxLjE2MDIrLTAuMzQzMSAgICAgICAgPwogICBhcml0aG1ldGljLXNp
bXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQzLjM4NjYrLTMuOTg1MCAgICAg
PyAgICAzNDQuNjIxMCstNi4zNzA3ICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNzkuNjQ3MistMi4xMjM1ICAgICAgICAgIDI3OS40
MzYyKy00LjQxODIgICAgICAgIAogICBhcml0aG1ldGljLWNvbXBsZXgtcHJlY2lzZSAgICAgICAg
ICAgICAgICAgICAgICAgMjc5LjYwODkrLTUuMTcyNiAgICAgICAgICAyNzcuOTMyNistMS40NDQx
ICAgICAgICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTAgICAgICAgICAgICAgICAgICAg
ICAgIDM1MC40MDI5Ky0yLjkyMDggICAgICAgICAgMzQ0LjkyMzIrLTIuODk1NiAgICAgICAgICBt
aWdodCBiZSAxLjAxNTl4IGZhc3RlcgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMSAgICAg
ICAgICAgICAgICAgICAgICAgMzM1LjUyODgrLTMuODIxNCAgICAgICAgICAzMzMuNTA1NSstMy4y
ODgwICAgICAgICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTIgICAgICAgICAgICAgICAg
ICAgICAgIDM5OC43OTkyKy00Ljc3NzkgICAgICAgICAgMzk4LjExODcrLTMuNzI3MSAgICAgICAg
CiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgICAzOTku
NTQwMystNC42Mzk2ICAgICAgICAgIDM5Ny4xMTIxKy0zLjQzMjEgICAgICAgIAogICBhcml0aG1l
dGljLXNpbXBsZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAgNDU1LjQzMTMrLTUuNTkw
OCAgICAgICAgICA0NTMuMzA2NCstMy42MDE2ICAgICAgICAKICAgbHotc3RyaW5nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3MS4xOTY4Ky01LjcxMDggICAgICAgICAg
MjcwLjU5ODIrLTMuNTM0OCAgICAgICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjg2Ljk4MjcrLTEuNTQ3MyAgICAgICAgICAyODUuODk4NSst
MS4yODAwICAgICAgICAgIG1pZ2h0IGJlIDEuMDAzOHggZmFzdGVyCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAg
ICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApH
ZW9tZWFuIG9mIHByZWZlcnJlZCBtZWFuczoKICAgPHNjYWxlZC1yZXN1bHQ+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ny4zNzUxKy0wLjEwNDMgICAgID8gICAgIDU3LjQ5ODAr
LTAuMDg0MSAgICAgICAgPyBtaWdodCBiZSAxLjAwMjF4IHNsb3dlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>287337</attachid>
            <date>2016-08-29 15:18:56 -0700</date>
            <delta_ts>2016-08-29 15:18:56 -0700</delta_ts>
            <desc>x86_64 benchmark result run 2</desc>
            <filename>bench-result-x86_64-2.txt</filename>
            <type>text/plain</type>
            <size>86050</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">JCBzbGVlcCAxNSAmJiB0aW1lIC4vVG9vbHMvU2NyaXB0cy9ydW4tanNjLWJlbmNobWFya3MgLS1v
dXRlciAxMCBiYXNlOi9Wb2x1bWVzL0RhdGEvd3Mtb2xkL09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQv
UmVsZWFzZS9EdW1wUmVuZGVyVHJlZSBuZXc6L1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9X
ZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5kZXJUcmVlCjEzNDkyLzEzNDkyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKR2VuZXJhdGluZyBiZW5jaG1hcmsgcmVwb3J0IGF0IC9W
b2x1bWVzL0RhdGEvd3M2L0ludGVybmFsL2Jhc2VfbmV3X1N1blNwaWRlckxvbmdTcGlkZXJWOFNw
aWRlck9jdGFuZUtyYWtlbkpTQmVuY2hNaWNyb2JlbmNobWFya3NBc21CZW5jaERTUENvbXByZXNz
aW9uQmVuY2hfZGV1Y2FsaW9uXzIwMTYwODI5XzE0MjJfcmVwb3J0LnR4dApBbmQgcmF3IGRhdGEg
YXQgL1ZvbHVtZXMvRGF0YS93czYvSW50ZXJuYWwvYmFzZV9uZXdfU3VuU3BpZGVyTG9uZ1NwaWRl
clY4U3BpZGVyT2N0YW5lS3Jha2VuSlNCZW5jaE1pY3JvYmVuY2htYXJrc0FzbUJlbmNoRFNQQ29t
cHJlc3Npb25CZW5jaF9kZXVjYWxpb25fMjAxNjA4MjlfMTQyMi5qc29uCgpCZW5jaG1hcmsgcmVw
b3J0IGZvciBTdW5TcGlkZXIsIExvbmdTcGlkZXIsIFY4U3BpZGVyLCBPY3RhbmUsIEtyYWtlbiwg
SlNCZW5jaCwgTWljcm9iZW5jaG1hcmtzLCBBc21CZW5jaCwgRFNQLCBhbmQgQ29tcHJlc3Npb25C
ZW5jaCBvbiBkZXVjYWxpb24gKE1hY1BybzYsMSkuCgpWTXMgdGVzdGVkOgoiYmFzZSIgYXQgL1Zv
bHVtZXMvRGF0YS93cy1vbGQvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9SZWxlYXNlL0R1bXBSZW5k
ZXJUcmVlIChyMjA1MTAzKQoibmV3IiBhdCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVuU291cmNlL1dl
YktpdEJ1aWxkL1JlbGVhc2UvRHVtcFJlbmRlclRyZWUgKHIyMDUxMDMpCgpDb2xsZWN0ZWQgMTAg
c2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDEwIFZNIGludm9jYXRpb25zIHBlciBiZW5j
aG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRz
LgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11
cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1p
Y3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGlt
ZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
ICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjQ1OTErLTAuMTQxNSAgICAgPyAgICAgIDYuNDY4MSstMC4xMDI2
ICAgICAgICA/CiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDYuNTk1NistMC4xMTc2ICAgICAgICAgICAgNi41OTAxKy0wLjExMDUgICAgICAgIAog
ICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Ljg1
NjArLTAuMTMxMSAgICAgPyAgICAgIDcuMDAwNystMC4wOTM1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDIxMXggc2xvd2VyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuMzYyNSstMC4wODAxICAgICA/ICAgICAgMy4zNjg0Ky0wLjA4MjMgICAgICAg
ID8KICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ni44ODk0Ky0wLjIyOTQgICAgID8gICAgICA2Ljk5MDgrLTAuMDc0NyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNDd4IHNsb3dlcgogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjE3MTkrLTAuMDU1MyAgICAgPyAgICAgIDMuMjExOCstMC4wODk4ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzg5NistMC4xMDE2ICAgICAgICAgICAgNC4z
ODY5Ky0wLjA5ODkgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjI5NTcrLTAuMDk1NiAgICAgPyAgICAgIDEuNDE0MistMC4xMzc2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDkxNXggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTQ1NCstMC4wMzUwICAgICA/ICAgICAg
Mi45Njg5Ky0wLjA1MzMgICAgICAgID8KICAgYml0b3BzLWJpdHdpc2UtYW5kICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi4zMjcwKy0wLjA0NTYgICAgICAgICAgICAyLjMwNTMrLTAu
MDQ2NyAgICAgICAgCiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuNzAyMistMC4wNjI4ICAgICAgICAgICAgMy42NzQzKy0wLjA2NjYgICAgICAg
IAogICBjb250cm9sZmxvdy1yZWN1cnNpdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
Ljk2MzIrLTAuMDY0NCAgICAgICAgICAgIDIuODk3NystMC4wMzMwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIyNnggZmFzdGVyCiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuODYwMCstMC4xMDQ1ICAgICA/ICAgICAgNS44OTIzKy0wLjA4NDQgICAg
ICAgID8KICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4wNTkyKy0wLjA3MDIgICAgID8gICAgICAzLjEwNDIrLTAuMDUxOCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxNDd4IHNsb3dlcgogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjk5MDMrLTAuMDQ5MSAgICAgPyAgICAgIDMuMDQ2OSstMC4wODEz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4OXggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMjg5OSstMC4yMDY5ICAgICAgICAgICAx
My4yNjk4Ky0wLjE2ODUgICAgICAgIAogICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3LjgxOTcrLTAuMTM2MyAgICAgPyAgICAgIDcuOTQ1NCstMC4w
ODc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MXggc2xvd2VyCiAgIG1hdGgtY29yZGljICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjYwNCstMC4wNjg5ICAgICA/ICAg
ICAgMy4yNzYwKy0wLjA3MjAgICAgICAgID8KICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS40MDMzKy0wLjA5NjEgICAgICAgICAgICA1LjM3ODgr
LTAuMDk0NCAgICAgICAgCiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuMzk2NistMC4wMzk2ICAgICA/ICAgICAgMi40MDE0Ky0wLjAzNjQgICAg
ICAgID8KICAgcmVnZXhwLWRuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS40Mzc1Ky0wLjEyMTIgICAgID8gICAgICA5LjUzNzkrLTAuMTkzNSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMDZ4IHNsb3dlcgogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjkwMTIrLTAuMDcyMSAgICAgPyAgICAgIDcuMDMxNCstMC4xMjQx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4OXggc2xvd2VyCiAgIHN0cmluZy1mYXN0YSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNzIzNistMC4xMzk3ICAgICAgICAgICAg
Ny43MDIyKy0wLjE1MDUgICAgICAgIAogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDExLjYyMjkrLTAuMjIzOSAgICAgPyAgICAgMTEuODMxNCstMC4y
NTcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3OXggc2xvd2VyCiAgIHN0cmluZy11bnBhY2stY29k
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUuOTM3MystMC43MTMyICAgICAgICAg
ICAyNS43ODE2Ky0wLjM4MDIgICAgICAgIAogICBzdHJpbmctdmFsaWRhdGUtaW5wdXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3LjE2OTErLTAuMTA1NCAgICAgPyAgICAgIDcuMzEzOCst
MC4xNTUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMnggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjMwMTErLTAuMDMzOCAgICAg
PyAgICAgIDYuMzM4MSstMC4wMjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA1OXggc2xvd2VyCgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApMb25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMDkxLjM5MjUrLTEyLjE1NDUgICAgPyAgIDExMDAuOTkwMist
MTIuMTYxOSAgICAgICA/CiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA3MjMuMjU3NistNC44MzQ2ICAgICA/ICAgIDcyNS41NzcyKy02LjIyNjUgICAg
ICAgID8KICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYxNS4zNjUzKy0yLjAyMjIgICAgID8gICAgNjIwLjgwMDErLTguNjIzMSAgICAgICAgPwogICBh
Y2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMxLjY3NjIr
LTIuODU1OSAgICAgPyAgIDEwMzMuMzM2MCstMi45MDE1ICAgICAgICA/CiAgIGFjY2Vzcy1mYW5u
a3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMTcuOTM3OCstNS42ODA1ICAg
ICA/ICAgIDMxOS4xODIzKy04LjE5MTcgICAgICAgID8KICAgYWNjZXNzLW5ib2R5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzMC42OTY5Ky0xLjQyNjMgICAgICAgICAgNjMw
LjEwMjgrLTEuMjc1MCAgICAgICAgCiAgIGFjY2Vzcy1uc2lldmUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzODYuMzI4OCstMy4wMDM0ICAgICAgICAgIDM4NS44NzYwKy0yLjQy
OTcgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM3LjQ5NzcrLTAuNDUzNiAgICAgICAgICAgMzcuNDAwOCstMC41MTg3ICAgICAgICAK
ICAgYml0b3BzLWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MC43
NjQ2Ky0xLjQxMTcgICAgID8gICAgMTQyLjI2NzYrLTIuMTY3NyAgICAgICAgPyBtaWdodCBiZSAx
LjAxMDd4IHNsb3dlcgogICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNDQ3LjQ4MzMrLTIuNTgzOSAgICAgICAgICA0NDUuNDMzNystMi4yMTk4ICAgICAg
ICAKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0
Ny42NTA0Ky0zLjkwNzAgICAgID8gICAgNTU5LjMwNTcrLTE2LjMxOTcgICAgICAgPyBtaWdodCBi
ZSAxLjAyMTN4IHNsb3dlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNzM0LjYzMDQrLTIuODMzNyAgICAgICAgICA3MzQuNDQwMystMS44MDkwICAg
ICAgICAKICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDU3Ni4xMDQwKy02LjEwMjIgICAgID8gICAgNTc3LjM1MTkrLTguOTkwNiAgICAgICAgPwogICBj
cnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzcxLjYyOTgr
LTcuNjUwNCAgICAgPyAgICA3NzIuNjU4NSstNC4xNjkxICAgICAgICA/CiAgIGRhdGUtZm9ybWF0
LXRvZnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjkuMjc0NistNy4wMjIyICAg
ICA/ICAgIDUzMC44MDEwKy01Ljc3NjUgICAgICAgID8KICAgZGF0ZS1mb3JtYXQteHBhcmIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4NC43NDg1Ky01MS40MDI5ICAgICAgICAgNzc5
Ljc0MjYrLTE0LjcxMzkgICAgICAgCiAgIGhhc2gtbWFwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxODMuMjgzMCstMS41NTUzICAgICAgICAgIDE4Mi44Mzg3Ky0xLjY5
NzQgICAgICAgIAogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTY5LjM5NzQrLTkuNTE3MiAgICAgPyAgICA1NzUuMzY2MSstOC44OTU3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MDguODk4MystNS45MDgyICAgICAgICAgIDQwOC40Mjc2Ky01
LjI0NDMgICAgICAgIAogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNjAwLjAzNDYrLTMuNDM5NCAgICAgICAgICA1OTguNTY0MystMy44OTE2ICAgICAg
ICAKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUw
Mi4xMzEyKy00LjU3MTIgICAgICAgICAgNTAwLjM3MzgrLTMuNzUzNCAgICAgICAgCiAgIHN0cmlu
Zy1mYXN0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTUuNTE3OCstMy4z
NjIwICAgICAhICAgIDQyNS4zMTY2Ky00LjU2NDAgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMzZ4
IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjA5LjY1MTArLTIuMzg2MiAgICAgPyAgICAyMTIuMTEzMistMS41NjY4ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDExN3ggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDQzLjU3NjArLTEuMjE4MSAgICAgPyAgICA0NDUuMjM5NystMS4y
MjI0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAzOHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAg
ICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApWOFNw
aWRlcjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0NS4wOTUwKy0wLjI4NDcgICAgID8gICAgIDQ1LjYyOTMrLTAuNDM4OSAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMTh4IHNsb3dlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDczLjYxNTErLTIuMTE4NCAgICAgICAgICAgNzIuMDkyNistMi4xNDI3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXggZmFzdGVyCiAgIGVhcmxleS1ib3llciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuNzA5MCstMC44NTE5ICAgICAgICAgICA0
Ny40NTAyKy0wLjUzMDIgICAgICAgIAogICByYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUxLjIyMjMrLTAuNTEzNSAgICAgICAgICAgNTAuOTE2NystMS4x
MTM2ICAgICAgICAKICAgcmVnZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3MS4zNjgyKy0wLjgxOTggICAgICAgICAgIDcxLjI3NDYrLTAuNzExNiAgICAgICAg
CiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQu
NjkyNystMC45NzMwICAgICAgICAgICA1My42NjI4Ky0xLjI4NjggICAgICAgICAgbWlnaHQgYmUg
MS4wMTkyeCBmYXN0ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1Mi44NjUyKy0wLjc2MzMgICAgICAgICAgIDUyLjY2NTQrLTAuNDE0NyAgICAg
ICAgCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDU1LjczOTYrLTAuMzg3OCAgICAgICAgICAgNTUuMzgyNistMC4zNzg5ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDA2NHggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAgICAgICAgICAgICAgICAgbmV3ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApPY3RhbmU6CiAgIGVuY3J5cHQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMDQxOSstMC4wMDE4MCAg
ICAgICAgICAwLjIwNDA0Ky0wLjAwMTEwICAgICAgIAogICBkZWNyeXB0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTE3NTYrLTAuMDUyMTcgICAgICAgICAgMy40
OTQxNCstMC4wMjM4MSAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiAgICAgICAwLjE4NTUyKy0wLjAxMDU4ICAgID8gICAgIDAuMTk4MzYrLTAuMDE3
NDUgICAgICAgPyBtaWdodCBiZSAxLjA2OTJ4IHNsb3dlcgogICBlYXJsZXkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzg0MjQrLTAuMDAyNTkgICAgPyAgICAg
MC4zODQ1OCstMC4wMDQyNyAgICAgICA/CiAgIGJveWVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNi4wMzMxOCstMC4wMzMwMiAgICAgICAgICA2LjAwODY5Ky0w
LjAxMzcwICAgICAgIAogICBuYXZpZXItc3Rva2VzICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgyICAgICAgIDUuNTc2NDgrLTAuMDA2NjQgICAgPyAgICAgNS42MTAyNSstMC4wNDI3NCAgICAg
ICA/CiAgIHJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAg
MS4yMTczNistMC4wMTEyNSAgICA/ICAgICAxLjIzMTMxKy0wLjAxODM4ICAgICAgID8gbWlnaHQg
YmUgMS4wMTE1eCBzbG93ZXIKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MiAgICAgICAwLjEwOTc2Ky0wLjAwMTQwICAgICAgICAgIDAuMTA4OTIrLTAuMDAyMzUg
ICAgICAgCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAg
ICAgMC40MDYyNCstMC4wMDMyNiAgICAgICAgICAwLjQwNTA0Ky0wLjAwNTM4ICAgICAgIAogICBy
ZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjUuMjc5NTQr
LTAuMzI1NzUgICAgICAgICAyNS4xODc1MystMC4xMjA4MyAgICAgICAKICAgcGRmanMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDQ4LjE5NjY2Ky0wLjU0NzMxICAg
ID8gICAgNDguNjQzMzYrLTAuNDk2OTggICAgICAgPwogICBtYW5kcmVlbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyICAgICAgNTEuNzk5MTkrLTAuMzEzMzYgICAgPyAgICA1MS44
MTkwNystMC40NDM4MiAgICAgICA/CiAgIGdiZW11ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIgICAgICA0MC4xNTMyOCstMC4yNTI0NSAgICA/ICAgIDQwLjE5MTg0Ky0wLjI1
NTcyICAgICAgID8KICAgY2xvc3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjM4NTA3Ky0wLjAwMTY4ICAgICAgICAgIDAuMzgyODgrLTAuMDAyMjMgICAgICAg
CiAgIGpxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45
ODIwMCstMC4wMzExNiAgICAgICAgICA0Ljk2ODA2Ky0wLjA1NzU0ICAgICAgIAogICBib3gyZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMTIuMDA4NTcrLTAuMDQw
MzcgICAgPyAgICAxMi4wMjI2NCstMC4wMzE0NCAgICAgICA/CiAgIHpsaWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgIDM5NS41Njk2MCstOS4xNDIzMiAgICA/ICAg
Mzk4Ljk4NjM3Ky0xMS43MDkzNiAgICAgID8KICAgdHlwZXNjcmlwdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgODI5LjkxNDcwKy02Ljk5MjA2ICAgID8gICA4MzQuNDAwODgr
LTExLjUwOTg4ICAgICAgPwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjMwOTIwKy0wLjAzNTE0ICAgID8gICAgIDYuMzQzNjErLTAuMDQzMDkg
ICAgICAgPyBtaWdodCBiZSAxLjAwNTV4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAg
ICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgog
ICBhaS1hc3RhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMy41
NjIrLTEuNjcxICAgICAgPyAgICAgMTE0LjUxMystMS40NjQgICAgICAgICA/CiAgIGF1ZGlvLWJl
YXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjMzMCstMC4zMzMg
ICAgICA/ICAgICAgNzUuNzgwKy0wLjI1NyAgICAgICAgID8KICAgYXVkaW8tZGZ0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTUuMjY3Ky0xLjIzNSAgICAgICAgICAg
IDExNC41ODcrLTAuNTMxICAgICAgICAgCiAgIGF1ZGlvLWZmdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUxLjA4NCstMC40NzEgICAgICAgICAgICAgNTAuOTk0Ky0w
LjU0MSAgICAgICAgIAogICBhdWRpby1vc2NpbGxhdG9yICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2OC42MzUrLTAuNjkxICAgICAgICAgICAgIDY4LjA2NSstMC4zMjggICAgICAg
ICAKICAgaW1hZ2luZy1kYXJrcm9vbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OTMuMjM4Ky0xLjMxNSAgICAgICAgICAgICA5Mi4zMjIrLTEuMTAzICAgICAgICAgCiAgIGltYWdp
bmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1LjQ1OSstMC43
NTMgICAgICA/ICAgICAgNjUuNTIwKy0wLjg3NyAgICAgICAgID8KICAgaW1hZ2luZy1nYXVzc2lh
bi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODkuNzkzKy01LjU2MCAgICAgICAg
ICAgICA4Ni41MTMrLTYuMTI1ICAgICAgICAgICBtaWdodCBiZSAxLjAzNzl4IGZhc3RlcgogICBq
c29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny41ODMr
LTAuODA1ICAgICAgPyAgICAgIDQ3LjgwNSstMC40OTUgICAgICAgICA/CiAgIGpzb24tc3RyaW5n
aWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1LjUxNistMC4yMjMgICAg
ICAgICAgICAgMzUuMTI5Ky0wLjU1NSAgICAgICAgICAgbWlnaHQgYmUgMS4wMTEweCBmYXN0ZXIK
ICAgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgu
ODY5Ky0wLjc5MCAgICAgICAgICAgICA1OC40NTYrLTAuMjgyICAgICAgICAgCiAgIHN0YW5mb3Jk
LWNyeXB0by1jY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LjU1NCstMS42NDMg
ICAgICA/ICAgICAgNjkuMTcxKy0xLjYzNiAgICAgICAgID8gbWlnaHQgYmUgMS4wMjM5eCBzbG93
ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MjAuNTY1Ky0yLjExNyAgICAgICAgICAgIDExOS45OTcrLTEuMzIyICAgICAgICAgCiAgIHN0YW5m
b3JkLWNyeXB0by1zaGEyNTYtaXRlcmF0aXZlICAgICAgICAgICAgICAgICAgIDQ5LjQzNistMC40
MDEgICAgICA/ICAgICAgNDkuODA5Ky0wLjc5NyAgICAgICAgID8KCiAgIDxhcml0aG1ldGljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjEzNSstMC40MzIgICAgICAg
ICAgICAgNzQuOTA0Ky0wLjYxNCAgICAgICAgICAgbWlnaHQgYmUgMS4wMDMxeCBmYXN0ZXIKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZSAgICAgICAgICAgICAgICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkpTQmVuY2g6CiAgIGFtYXpvbi1jaHJvbWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuMjQ3NSstMC4xOTYzICAgICA/ICAgICAgNC4zMDgxKy0wLjE2
OTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTQzeCBzbG93ZXIKICAgYW1hem9uLWNocm9tZS13aW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40MDI1Ky0wLjEwMDkgICAgID8gICAg
ICA0LjQ0MTQrLTAuMTMzNiAgICAgICAgPwogICBhbWF6b24tZmlyZWZveCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjQwNjcrLTAuMTM1NCAgICAgPyAgICAgIDMuNDE5Mist
MC4wODk1ICAgICAgICA/CiAgIGFtYXpvbi1maXJlZm94LXdpbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMjg2MystMC4xMDI4ICAgICA/ICAgICAgMy4zODU2Ky0wLjEwMDkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzAyeCBzbG93ZXIKICAgYW1hem9uLXNhZmFyaSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43MzE2Ky0wLjE0NjEgICAgID8gICAgICA0Ljgy
NjkrLTAuMDc4MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMDF4IHNsb3dlcgogICBmYWNlYm9vay1j
aHJvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LjI4MzcrLTAuNjc2MyAg
ICAgPyAgICAgNTQuMjk4OCstMC40NDkzICAgICAgICA/CiAgIGZhY2Vib29rLWNocm9tZS13aW4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEuMzcyMCstMC44NDk2ICAgICAhICAgIDEx
Mi43Njc4Ky0wLjUwNDAgICAgICAgICEgZGVmaW5pdGVseSAxLjAxMjV4IHNsb3dlcgogICBmYWNl
Ym9vay1maXJlZm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLjY3MjUrLTAu
MjM1NyAgICAgPyAgICAgMzEuODA4NistMC4yOTExICAgICAgICA/CiAgIGZhY2Vib29rLWZpcmVm
b3gtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuNzc4NystMC4xMzgyICAgICA/
ICAgICAyMC44MzM5Ky0wLjIxNzcgICAgICAgID8KICAgZmFjZWJvb2stc2FmYXJpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDExNC41NjkxKy0xLjgxMjIgICAgID8gICAgMTE2LjU4
OTArLTEuODA3NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzZ4IHNsb3dlcgogICBnb29nbGUtY2hy
b21lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1LjY2NDgrLTAuNTA1MSAg
ICAgPyAgICAgNDYuMjU0MCstMC4yOTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyOXggc2xvd2Vy
CiAgIGdvb2dsZS1jaHJvbWUtd2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMu
OTIxNCstMC41ODA3ICAgICA/ICAgICA0NS4wMDc3Ky0wLjU3MjIgICAgICAgID8gbWlnaHQgYmUg
MS4wMjQ3eCBzbG93ZXIKICAgZ29vZ2xlLWZpcmVmb3ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMy4xOTcwKy0wLjIzMDUgICAgID8gICAgIDIzLjI0MzYrLTAuMjg3MiAgICAg
ICAgPwogICBnb29nbGUtZmlyZWZveC13aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDI3LjIxOTIrLTAuNDY4NiAgICAgPyAgICAgMjcuMjUzNistMC40NjM3ICAgICAgICA/CiAgIGdv
b2dsZS1zYWZhcmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYuNjIzOSst
MC41OTQ1ICAgICA/ICAgICA0Ny45MTI4Ky0wLjc3MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjc2
eCBzbG93ZXIKICAgdHdpdHRlci1jaHJvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy44OTY4Ky0wLjI2MDUgICAgICAgICAgICA3Ljg0NTQrLTAuMTAwMiAgICAgICAgCiAg
IHR3aXR0ZXItY2hyb21lLXdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNjYz
MistMC4xNjMyICAgICA/ICAgICAgNy45MzA5Ky0wLjE2NTggICAgICAgID8gbWlnaHQgYmUgMS4w
MzQ5eCBzbG93ZXIKICAgdHdpdHRlci1maXJlZm94ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS4yMDU5Ky0wLjA1ODYgICAgICAgICAgICAxLjE3NTkrLTAuMDQ3NSAgICAgICAg
ICBtaWdodCBiZSAxLjAyNTZ4IGZhc3RlcgogICB0d2l0dGVyLWZpcmVmb3gtd2luICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjA5NTQrLTAuMDM5OCAgICAgPyAgICAgIDEuMDk4MSst
MC4wNDAwICAgICAgICA/CiAgIHR3aXR0ZXItc2FmYXJpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDcuNDY2OSstMC4xMTM0ICAgICAgICAgICAgNy40NjUyKy0wLjI0NzMgICAg
ICAgIAogICB5YWhvby1jaHJvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ0LjU5OTcrLTEuMDgzMCAgICAgPyAgICAgNDYuNjg4MSstMS4zMTk1ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDQ2OHggc2xvd2VyCiAgIHlhaG9vLWNocm9tZS13aW4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNDAuMDU4OSstMC4yNzU1ICAgICA/ICAgICA0MC44OTYwKy0wLjY2ODcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjA5eCBzbG93ZXIKICAgeWFob28tZmlyZWZveCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NS4zODIzKy0wLjY3OTMgICAgID8gICAgIDQ1
LjYyNDArLTAuOTY5NSAgICAgICAgPwogICB5YWhvby1maXJlZm94LXdpbiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMwLjY1MDcrLTAuMTc2MyAgICAgPyAgICAgMzEuNTYzNSstMC43
NzQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5OHggc2xvd2VyCiAgIHlhaG9vLXNhZmFyaSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQuNzA0MistMC45MDg2ICAgICA/ICAg
ICA0NS43NDI4Ky0xLjEzMTMgICAgICAgID8gbWlnaHQgYmUgMS4wMjMyeCBzbG93ZXIKCiAgIDxn
ZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuMjA2NSst
MC4wNjE5ICAgICAhICAgICAxNi40MDk2Ky0wLjA3ODEgICAgICAgICEgZGVmaW5pdGVseSAxLjAx
MjV4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKTWljcm9iZW5jaG1hcmtzOgogICBhYmMtZm9yd2Fy
ZC1sb29wLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNTQrLTAuMDExNCAg
ICAgICAgICAgIDAuMjIxNystMC4wMTA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NnggZmFzdGVy
CiAgIGFiYy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MjIyMCstMC4wMTIyICAgICA/ICAgICAgMC4yMjQ1Ky0wLjAxMTcgICAgICAgID8gbWlnaHQgYmUg
MS4wMTExeCBzbG93ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29wICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yMjgyKy0wLjAxOTAgICAgICAgICAgICAwLjIyNjErLTAuMDA3MiAgICAg
ICAgCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMjI1NSstMC4wMDczICAgICA/ICAgICAgMC4yMjY3Ky0wLjAxMDAgICAgICAgID8KICAgYWJj
LXNraXBweS1sb29wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzY2Ky0w
LjAxNjkgICAgICAgICAgICAwLjIzMDErLTAuMDA5MyAgICAgICAgICBtaWdodCBiZSAxLjAyODJ4
IGZhc3RlcgogICBhYnMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjkwOTcrLTAuMDYyMSAgICAgICAgICAgIDIuODk3MystMC4wNTk1ICAgICAgICAKICAg
YWRhcHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi45MzMy
Ky0wLjIxOTMgICAgICAgICAgIDE2LjczMDUrLTAuMTA4MiAgICAgICAgICBtaWdodCBiZSAxLjAx
MjF4IGZhc3RlcgogICBhbGlhc2VkLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjU3NjcrLTAuMDU5OCAgICAgICAgICAgIDEuNTIzNCstMC4wNDEzICAgICAgICAg
IG1pZ2h0IGJlIDEuMDM1MHggZmFzdGVyCiAgIGFsbG9jYXRlLWJpZy1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuMjAyMCstMC4xMzM1ICAgICAgICAgICAgNi4xMjU2Ky0w
LjExMDUgICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgYXBwbHktbm90LWFwcGx5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzY3Ky0wLjAxNDYgICAgICAg
ICAgICAwLjIyNzMrLTAuMDA5MiAgICAgICAgICBtaWdodCBiZSAxLjA0MTV4IGZhc3RlcgogICBh
cmd1bWVudHMtbmFtZWQtYW5kLXJlZmxlY3RpdmUgICAgICAgICAgICAgICAgICAgICAwLjIyNDQr
LTAuMDA5MiAgICAgPyAgICAgIDAuMjI2MystMC4wMTAxICAgICAgICA/CiAgIGFyZ3VtZW50cy1v
dXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIzNystMC4wMTE1ICAg
ICA/ICAgICAgMC4yMjY0Ky0wLjAxMTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIK
ICAgYXJndW1lbnRzLXN0cmljdC1tb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
Mzg3Ky0wLjAyMjggICAgICAgICAgICAwLjIzODMrLTAuMDEwMSAgICAgICAgCiAgIGFyZ3VtZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI3MSstMC4wMTAy
ICAgICA/ICAgICAgMC4yMzQwKy0wLjAxNDggICAgICAgID8gbWlnaHQgYmUgMS4wMzA0eCBzbG93
ZXIKICAgYXJpdHktbWlzbWF0Y2gtaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC45ODc3Ky0wLjA0MDggICAgICAgICAgICAwLjk0MjQrLTAuMDM3NCAgICAgICAgICBtaWdodCBi
ZSAxLjA0ODB4IGZhc3RlcgogICBhcnJheS1hY2Nlc3MtcG9seW1vcnBoaWMtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICA5LjUzNjIrLTAuMTEyNyAgICAgICAgICAgIDkuNDI1MCstMC4wODk5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDExOHggZmFzdGVyCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3Jo
cGljLWFjY2VzcyAgICAgICAgICAgICAgICAgMjkuMjgxOSstMC44MDY4ICAgICA/ICAgICAyOS43
MDY4Ky0wLjM2MzQgICAgICAgID8gbWlnaHQgYmUgMS4wMTQ1eCBzbG93ZXIKICAgYXJyYXktcHJv
dG90eXBlLWV2ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OC45NTgzKy0wLjkyMTAg
ICAgICAgICAgIDg4LjA0MDgrLTAuODEzOCAgICAgICAgICBtaWdodCBiZSAxLjAxMDR4IGZhc3Rl
cgogICBhcnJheS1wcm90b3R5cGUtZm9yRWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4
LjczNTMrLTAuODEwNyAgICAgICAgICAgODcuNjQ1NystMC42OTc1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEyNHggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1tYXAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOTYuODQ2OCstMS4wNTA3ICAgICAgICAgICA5NS4zMTIyKy0wLjk0OTMgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIKICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA4OC45MzI1Ky0xLjk0NzAgICAgICAgICAgIDg4Ljcx
NjMrLTQuMTA1NCAgICAgICAgCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2VSaWdodCAgICAgICAg
ICAgICAgICAgICAgICAxMjEuMDE4MCstOC43MDY3ICAgICA/ICAgIDEyMi45MTU1Ky01LjAxOTIg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTU3eCBzbG93ZXIKICAgYXJyYXktcHJvdG90eXBlLXNvbWUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OC4xMTY2Ky0wLjU2MzQgICAgID8gICAgIDg4
LjY5NjcrLTAuOTM2MyAgICAgICAgPwogICBhcnJheS1zcGxpY2UtY29udGlndW91cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMwLjc5ODUrLTAuNDE3MyAgICAgPyAgICAgMzEuMTkwMystMC40
MzE2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyN3ggc2xvd2VyCiAgIGFycmF5LXdpdGgtZG91Ymxl
LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjkyMSstMC4wODU0ICAgICA/ICAg
ICAgNC4zMjIzKy0wLjEwNjIgICAgICAgID8KICAgYXJyYXktd2l0aC1kb3VibGUtaW5jcmVtZW50
ICAgICAgICAgICAgICAgICAgICAgICAgMy40ODgxKy0wLjA4ODkgICAgICAgICAgICAzLjQ2MDEr
LTAuMDg0NiAgICAgICAgCiAgIGFycmF5LXdpdGgtZG91YmxlLW11bC1hZGQgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuOTQzNystMC4wODMxICAgICA/ICAgICAgNC45NzgxKy0wLjEzNzcgICAg
ICAgID8KICAgYXJyYXktd2l0aC1kb3VibGUtc3VtICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy4zMTQ2Ky0wLjA2MTUgICAgICAgICAgICAzLjI3MDkrLTAuMDc3MCAgICAgICAgICBtaWdo
dCBiZSAxLjAxMzR4IGZhc3RlcgogICBhcnJheS13aXRoLWludDMyLWFkZC1zdWIgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjQ1MzgrLTAuMTE0MiAgICAgPyAgICAgIDYuNTAxNistMC4xMzQ0
ICAgICAgICA/CiAgIGFycmF5LXdpdGgtaW50MzItb3ItZG91YmxlLXN1bSAgICAgICAgICAgICAg
ICAgICAgIDMuNDgyNistMC4wODc1ICAgICAgICAgICAgMy40NDg2Ky0wLjA1NTQgICAgICAgIAog
ICBBcnJheUJ1ZmZlci1EYXRhVmlldy1hbGxvYy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTMuNDg0MSstMC4z
ODI1ICAgICA/ICAgICA5NC40NDU4Ky0wLjg4NDcgICAgICAgID8gbWlnaHQgYmUgMS4wMTAzeCBz
bG93ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAg
ICAzNi4wMTA0Ky0wLjg5OTggICAgICAgICAgIDM1LjY0NTIrLTEuMDc1OCAgICAgICAgICBtaWdo
dCBiZSAxLjAxMDJ4IGZhc3RlcgogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQg
ICAgICAgICAgICAgICAgICA0LjAwMDMrLTAuMDgwNSAgICAgICAgICAgIDMuOTc3NSstMC4wMjY5
ICAgICAgICAKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
OS43MDA5Ky0wLjc1NzcgICAgID8gICAgIDk5Ljc3NDgrLTIuMTE2NCAgICAgICAgPwogICBBcnJh
eUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZC1idWZmZXIgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NS43NDA5Ky0wLjUzMzAg
ICAgICAgICAgIDU0Ljk5NzkrLTAuNDExNiAgICAgICAgICBtaWdodCBiZSAxLjAxMzV4IGZhc3Rl
cgogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgIDM0
LjQwNzArLTAuMTk5NCAgICAgPyAgICAgMzQuODQxNCstMC42Mzg0ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEyNnggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAgICAgICAg
ICAgICAgICAgICAgMzIuOTg0NCstMC41Njg1ICAgICAgICAgICAzMi45MjM2Ky0wLjI5MTcgICAg
ICAgIAogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAg
ICAwLjI2ODQrLTAuMDEzMSAgICAgPyAgICAgIDAuMjcyNCstMC4wMTI3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDE0Nnggc2xvd2VyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2Qg
ICAgICAgICAgICAgICAgMjQuMjE4OCstMC4yNTg0ICAgICAgICAgICAyNC4yMDQ1Ky0wLjI5NDYg
ICAgICAgIAogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAg
ICAgICAwLjIzNDYrLTAuMDE1MSAgICAgICAgICAgIDAuMjI5NCstMC4wMDU0ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDIyNnggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjI2NSstMC4wMDkzICAgICA/ICAgICAgMC4yMzAxKy0wLjAx
MjIgICAgICAgID8gbWlnaHQgYmUgMS4wMTU4eCBzbG93ZXIKICAgYXNtanNfYm9vbF9idWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC43OTk0Ky0wLjA1NjkgICAgID8gICAg
ICA4Ljk3NDArLTAuMTQxMSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTh4IHNsb3dlcgogICBhc3Np
Z24tY3VzdG9tLXNldHRlci1wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAzLjUzNTIrLTAu
MDgyOSAgICAgICAgICAgIDMuNTE4NCstMC4wNjUwICAgICAgICAKICAgYXNzaWduLWN1c3RvbS1z
ZXR0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zODQxKy0wLjEwNzIgICAgID8g
ICAgICA1LjQ5ODgrLTAuMTA2NyAgICAgICAgPyBtaWdodCBiZSAxLjAyMTN4IHNsb3dlcgogICBi
YXNpYy1zZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjczMDQr
LTAuMTYxNSAgICAgPyAgICAgMTAuODE2MistMC4xNTM2ICAgICAgICA/CiAgIGJpZy1pbnQtbXVs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTIwNCstMC4wNTg5ICAg
ICBeICAgICAgMy43ODEwKy0wLjA2OTggICAgICAgIF4gZGVmaW5pdGVseSAxLjAzNjl4IGZhc3Rl
cgogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sLW9yLXVuZGVmaW5lZCAgICAgICAgICAgIDc5
LjU2ODYrLTEuNjY1OCAgICAgPyAgICAgODIuMTQ3OCstMS43MzgyICAgICAgICA/IG1pZ2h0IGJl
IDEuMDMyNHggc2xvd2VyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdC1zeW1ib2wgICAgICAgICAgICAg
ICAgICAgICAgICAgODYuMjUzNistMC44MTU1ICAgICA/ICAgICA4Ni4zMTIwKy0xLjUwNjEgICAg
ICAgID8KICAgYmlnc3dpdGNoLWluZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1NC40NzU1Ky0wLjU5OTYgICAgID8gICAgIDU0Ljg4OTErLTAuODI5OCAgICAgICAgPwogICBi
aWdzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjc1NTEr
LTEuMDY3OSAgICAgPyAgICAgNDEuOTgwMSstMC4yODUwICAgICAgICA/CiAgIGJvb2xlYW4tdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzk5MSstMC4wNzAzICAg
ICAgICAgICAgMy4zOTA2Ky0wLjEwMDcgICAgICAgIAogICBib3VuZC1mdW5jdGlvbi1jYWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjkzNTIrLTAuMDg5MSAgICAgICAgICAgMTAu
ODYxMistMC4xMDYzICAgICAgICAKICAgYm91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZv
cm1hbmNlICAgICAgICAgICAgMC4yNDU3Ky0wLjAyNTcgICAgICAgICAgICAwLjIyNDErLTAuMDEw
MCAgICAgICAgICBtaWdodCBiZSAxLjA5NjR4IGZhc3RlcgogICBicmFuY2gtZm9sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUyMTQrLTAuMDU3MCAgICAgICAgICAg
IDQuNTAyMistMC4wNDMxICAgICAgICAKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAg
ICAgICAgICAgICAgICAgICAgICAyMC43NTcwKy0wLjEwNzAgICAgID8gICAgIDIwLjgxNzMrLTAu
MjM1NSAgICAgICAgPwogICBidWctMTUzNDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLjIyNTQrLTAuMDExMSAgICAgPyAgICAgIDAuMjI5MCstMC4wMTI4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE1OHggc2xvd2VyCiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNDAuNTEwMystMC40MjkxICAgICA/ICAgICA0MS4wNjYx
Ky0wLjQxNzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTM3eCBzbG93ZXIKICAgYnktdmFsLWdlbmVy
aWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjY0Ky0wLjAxMDkgICAg
ID8gICAgICAwLjIzODMrLTAuMDEyNyAgICAgICAgPyBtaWdodCBiZSAxLjA1MjR4IHNsb3dlcgog
ICBjYWxsLW9yLW5vdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIy
NTUrLTAuMDA1OSAgICAgPyAgICAgIDAuMjI3OSstMC4wMDc3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwN3ggc2xvd2VyCiAgIGNhbGwtc3ByZWFkLWFwcGx5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzQuNjk0NystMC4yMzgxICAgICAgICAgICAzNC40NDczKy0wLjM2MzYgICAgICAg
IAogICBjYWxsLXNwcmVhZC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0
LjAxNTUrLTAuNjMxNCAgICAgICAgICAgMzMuNzM4MystMC44ODM5ICAgICAgICAKICAgY2FwdHVy
ZWQtYXNzaWdubWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MTUzKy0wLjA0
MDUgICAgICAgICAgICAwLjQwOTkrLTAuMDExMyAgICAgICAgICBtaWdodCBiZSAxLjAxMzB4IGZh
c3RlcgogICBjYXN0LWludC10by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ljc0ODIrLTAuMDY5OCAgICAgICAgICAgIDUuNzQwOCstMC4wODExICAgICAgICAKICAgY2Vs
bC1hcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43Mzk0Ky0w
LjA3MTAgICAgID8gICAgICA0Ljc1NTIrLTAuMTI4MiAgICAgICAgPwogICBjZmctc2ltcGxpZnkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjM0OTIrLTAuMDQ3NiAgICAg
ICAgICAgIDMuMzAyMCstMC4wNjgzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0M3ggZmFzdGVyCiAg
IGNoYWluLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjYw
MystMC4wMTkxICAgICAgICAgICAgMC4yNDUxKy0wLjAwOTUgICAgICAgICAgbWlnaHQgYmUgMS4w
NjE5eCBmYXN0ZXIKICAgY21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC42MjE4Ky0wLjEzOTggICAgICEgICAgIDEwLjk4NTMrLTAuMTM1NCAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDM0Mnggc2xvd2VyCiAgIGNvbmNhdC1hcHBlbmQtb25lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMwOCstMC4wMTI1ICAgICAgICAgICAgMC4yMjcx
Ky0wLjAxMjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgY29uc3RhbnQtdGVz
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMzI3Ky0wLjEwMzMgICAg
ID8gICAgICA1LjM1MzUrLTAuMTA5OCAgICAgICAgPwogICBjcmVhdGUtbG90cy1vZi1mdW5jdGlv
bnMgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjAzNDYrLTAuMTIwOSAgICAgICAgICAgMTIu
MDA2OCstMC4xMzk2ICAgICAgICAKICAgY3NlLW5ldy1hcnJheS1idWZmZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMzY3Ky0wLjAxNDAgICAgICAgICAgICAwLjIyNzUrLTAuMDA5
NyAgICAgICAgICBtaWdodCBiZSAxLjA0MDd4IGZhc3RlcgogICBjc2UtbmV3LWFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNDMrLTAuMDA4MyAgICAgPyAgICAg
IDAuMjM0NystMC4wMTM4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2NXggc2xvd2VyCiAgIGN1c3Rv
bS1zZXR0ZXItZ2V0dGVyLWFzLXB1dC1nZXQtYnktaWQgICAgICAgICAgICAgIDAuMjM2MSstMC4w
MTg5ICAgICAgICAgICAgMC4yMzMzKy0wLjAxNjYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE4eCBm
YXN0ZXIKICAgRGF0YVZpZXctY3VzdG9tLXByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAg
ICA5OC45Nzk0Ky0wLjk3MDUgICAgID8gICAgIDk5LjE5NzgrLTEuMjQ2MiAgICAgICAgPwogICBk
ZWxheS10ZWFyLW9mZi1hcmd1bWVudHMtc3RyaWN0bW9kZSAgICAgICAgICAgICAgICA5LjY3NjQr
LTAuMTMyNyAgICAgPyAgICAgMTAuMDMxNystMC40MzkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM2
N3ggc2xvd2VyCiAgIGRlbHRhYmx1ZS1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNDUuNjM2MCstMC42MDUyICAgICA/ICAgICA0Ni4yOTIyKy0wLjY3NDEgICAgICAgID8g
bWlnaHQgYmUgMS4wMTQ0eCBzbG93ZXIKICAgZGVsdGFibHVlLXZhcmFyZ3MgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0MC4yODE1Ky0wLjQ0NDUgICAgID8gICAgIDQwLjkxODkrLTAu
ODY0MCAgICAgICAgPyBtaWdodCBiZSAxLjAxNTh4IHNsb3dlcgogICBkZXN0cnVjdHVyaW5nLWFy
Z3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwLjU3MjUrLTAuNjcyMCAgICAgXiAg
ICAgNjguMTg2OSstMC40NDgwICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzUweCBmYXN0ZXIKICAg
ZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24gICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjI2Ky0w
LjAxMTkgICAgICAgICAgICAwLjIxNDMrLTAuMDA4NCAgICAgICAgICBtaWdodCBiZSAxLjAzODd4
IGZhc3RlcgogICBkZXN0cnVjdHVyaW5nLXN3YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1LjQ0OTkrLTAuMDg4NiAgICAgPyAgICAgIDUuNDcxMCstMC4wODMzICAgICAgICA/CiAg
IGRpcmVjdC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNTQz
MistMC4wMzQzICAgICA/ICAgICAgMS41NjE2Ky0wLjA5NzEgICAgICAgID8gbWlnaHQgYmUgMS4w
MTIweCBzbG93ZXIKICAgZGlyZWN0LWFyZ3VtZW50cy1sZW5ndGggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOC41NzUwKy0wLjIzNDAgICAgICAgICAgICA4LjQyMDgrLTAuMjI2MSAgICAgICAg
ICBtaWdodCBiZSAxLjAxODN4IGZhc3RlcgogICBkaXJlY3QtYXJndW1lbnRzLW92ZXJyaWRkZW4t
bGVuZ3RoICAgICAgICAgICAgICAgICA4LjE4NTgrLTAuMjk5NCAgICAgPyAgICAgIDguMjg1Nist
MC4yOTg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMnggc2xvd2VyCiAgIGRpcmVjdC1hcmd1bWVu
dHMtcG9zc2libHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC42NDgyKy0wLjA5OTggICAgICAgICAgICA4
LjU5MTgrLTAuMTA2MiAgICAgICAgCiAgIGRpdi1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNjY0OSstMC4wNDU3ICAgICA/ICAgICAgNC43MjE2Ky0wLjA3
MzIgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBzbG93ZXIKICAgZGl2LWJvb2xlYW4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy44OTM3Ky0wLjE1NjQgICAgICAgICAg
ICA3Ljg0MTIrLTAuMDk2NyAgICAgICAgCiAgIGRvdWJsZS1nZXQtYnktdmFsLW91dC1vZi1ib3Vu
ZHMgICAgICAgICAgICAgICAgICAgIDAuMjI3NystMC4wMTQzICAgICAgICAgICAgMC4yMjU3Ky0w
LjAwOTYgICAgICAgIAogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICA4LjAzMzIrLTAuMDczOSAgICAgPyAgICAgIDguMDgwMystMC4wNjYyICAgICAg
ICA/CiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0YnlvZmZzZXQgICAgICAgICAgICAgICAgICAgICAg
IDUuOTI4MistMC4xMTEyICAgICAgICAgICAgNS43OTI3Ky0wLjEwMTMgICAgICAgICAgbWlnaHQg
YmUgMS4wMjM0eCBmYXN0ZXIKICAgZG91YmxlLXJlYWwtdXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4yMzIyKy0wLjAxNDQgICAgICAgICAgICAwLjIyOTMrLTAuMDEyNCAg
ICAgICAgICBtaWdodCBiZSAxLjAxMjV4IGZhc3RlcgogICBkb3VibGUtdG8taW50MzItdHlwZWQt
YXJyYXktbm8taW5saW5lICAgICAgICAgICAgICAwLjI3MjErLTAuMDE1NSAgICAgPyAgICAgIDAu
MjczMistMC4wMDgyICAgICAgICA/CiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheSAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNTIwNSstMC4wNTg0ICAgICAgICAgICAgMi40NTI5Ky0wLjA3
MzAgICAgICAgICAgbWlnaHQgYmUgMS4wMjc2eCBmYXN0ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10
eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAgICAgICAgMC4yNjkxKy0wLjAwOTQgICAgID8gICAg
ICAwLjI4MjkrLTAuMDE4MSAgICAgICAgPyBtaWdodCBiZSAxLjA1MTN4IHNsb3dlcgogICBkb3Vi
bGUtdG8tdWludDMyLXR5cGVkLWFycmF5ICAgICAgICAgICAgICAgICAgICAgICAyLjUxOTYrLTAu
MDI1MCAgICAgICAgICAgIDIuNDgzOSstMC4wMzg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NHgg
ZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjUuNjMzNystMC4yMTc4ICAgICA/ICAgICAyNS45MTA1Ky0wLjQ0MjkgICAgICAgID8gbWln
aHQgYmUgMS4wMTA4eCBzbG93ZXIKICAgZWxpZGFibGUtbmV3LW9iamVjdC1yb2ZsY29wdGVyICAg
ICAgICAgICAgICAgICAgICAzMy40OTAzKy01LjY2MTcgICAgICAgICAgIDMzLjExNDgrLTUuNjAw
NyAgICAgICAgICBtaWdodCBiZSAxLjAxMTN4IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0
LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDI3LjIzMzcrLTAuMjEzNSAgICAgPyAgICAg
MjcuMzM0MystMC4yMDM2ICAgICAgICA/CiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdHJlZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjguNzU4MCstMC40NDI1ICAgICA/ICAgICAyOC44MTA0Ky0w
LjQ5MTMgICAgICAgID8KICAgZW1wdHktc3RyaW5nLXBsdXMtaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS40NzkyKy0wLjE0MDEgICAgICAgICAgICA5LjMzNTUrLTAuMTE4MiAgICAg
ICAgICBtaWdodCBiZSAxLjAxNTR4IGZhc3RlcgogICBlbXNjcmlwdGVuLWN1YmUyaGFzaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjczODIrLTAuNTAwNCAgICAgICAgICAgNDEuMjgw
NCstMC4zNzYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMXggZmFzdGVyCiAgIGV2YWwtY29tcHV0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI4NSstMC4wMTM3ICAg
ICAgICAgICAgMC4yMjY3Ky0wLjAwNzQgICAgICAgIAogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUt
YXJncyAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNzQrLTAuMDEwMSAgICAgICAgICAgIDAu
MjI2NCstMC4wMTA5ICAgICAgICAKICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMjA4Ky0wLjAxMTIgICAgID8gICAgICAwLjIyODUrLTAuMDEy
MSAgICAgICAgPyBtaWdodCBiZSAxLjAzNDd4IHNsb3dlcgogICBleGl0LWxlbmd0aC1vbi1wbGFp
bi1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAwLjIxOTUrLTAuMDA4MCAgICAgPyAgICAg
IDAuMjIxNCstMC4wMTAwICAgICAgICA/CiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAg
ICAgICAgICAgICAgICAgICAgICAgIDEuNjQzMSstMC4wODEzICAgICA/ICAgICAgMS43OTcwKy0w
LjEwMzggICAgICAgID8gbWlnaHQgYmUgMS4wOTM3eCBzbG93ZXIKICAgZXh0ZXJuYWwtYXJndW1l
bnRzLXB1dGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMy4yMzU3Ky0wLjA3MDUgICAgICAg
ICAgICAzLjIxMjUrLTAuMDg4NiAgICAgICAgCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2Ut
dmFyLWluZGV4ICAgICAgICAgICAgICAgIDEuNDM4NCstMC4wNDY1ICAgICAgICAgICAgMS40MTU4
Ky0wLjA1NzUgICAgICAgICAgbWlnaHQgYmUgMS4wMTYweCBmYXN0ZXIKICAgZml4ZWQtdHlwZWQt
YXJyYXktc3RvcmFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wNjc4Ky0wLjAzMjIgICAg
ID8gICAgICAxLjA4NjYrLTAuMDMyNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNzd4IHNsb3dlcgog
ICBGbG9hdDMyQXJyYXktbWF0cml4LW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEw
NTArLTAuMjg0OSAgICAgICAgICAgIDUuOTEzNystMC4yMTMwICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMyM3ggZmFzdGVyCiAgIEZsb2F0MzJBcnJheS10by1GbG9hdDY0QXJyYXktc2V0ICAgICAgICAg
ICAgICAgICAgNTUuNDMxMCstMC44ODUwICAgICAgICAgICA1NC45ODg3Ky0wLjYyMzMgICAgICAg
IAogICBGbG9hdDY0QXJyYXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgIDg2
LjE2MzArLTAuODc2OCAgICAgPyAgICAgODYuMjQ4NystMC42MjQ2ICAgICAgICA/CiAgIEZsb2F0
NjRBcnJheS10by1JbnQxNkFycmF5LXNldCAgICAgICAgICAgICAgICAgICAgNjkuNzUzMCstMC40
NjUyICAgICAgICAgICA2OS40OTI5Ky0wLjQyNzcgICAgICAgIAogICBmb2xkLWRvdWJsZS10by1p
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1Ljk5ODUrLTAuMTQ0MyAgICAgPyAg
ICAgMTYuMTUyMistMC4xODgzICAgICAgICA/CiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdl
dC1ieS1vZmZzZXQtcmFyZS1pbnQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMi4xOTkzKy0wLjk5MTYgICAgICAgICAgIDExLjQ5MjgrLTAu
NTc3NCAgICAgICAgICBtaWdodCBiZSAxLjA2MTV4IGZhc3RlcgogICBmb2xkLWdldC1ieS1pZC10
by1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgIDExLjE3NjgrLTEuNTIwNiAgICAgICAg
ICAgIDkuOTQ4OSstMS4yODYxICAgICAgICAgIG1pZ2h0IGJlIDEuMTIzNHggZmFzdGVyCiAgIGZv
bGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1nZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuODkwMystMS4yNDM2ICAg
ICAgICAgICAgNi41Mzk1Ky0wLjk1MzUgICAgICAgICAgbWlnaHQgYmUgMS4wNTM2eCBmYXN0ZXIK
ICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLXBvbHktZ2V0LWJ5LW9mZnNldCAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjcwOTcr
LTEuNTAzOCAgICAgPyAgICAgIDguOTYxNSstMS4yMjUzICAgICAgICA/IG1pZ2h0IGJlIDEuMTYy
NHggc2xvd2VyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1wb2x5LXB1dC1ieS1vZmZz
ZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS43NTE3Ky0xLjU1NzMgICAgICAgICAgICA5LjYxNjcrLTEuNTE3OCAgICAgICAgICBtaWdo
dCBiZSAxLjAxNDB4IGZhc3RlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZzZXQtdG8tcHV0LWJ5
LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjQwNzIrLTEuNDg0NiAgICAgICAgICAgIDYuNDIwMSstMS41NTIwICAgICAgICAg
IG1pZ2h0IGJlIDEuMTUzN3ggZmFzdGVyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1y
ZXBsYWNlLW9yLXRyYW5zaXRpb24tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjU0MTkrLTEuNTc3NyAgICAgPyAg
ICAgMTkuNjIxNCstMS40MDM1ICAgICAgICA/CiAgIGZvbGQtcHV0LWJ5LWlkLXRvLW11bHRpLXB1
dC1ieS1vZmZzZXQgICAgICAgICAgICAgIDkuMzYzOCstMC4xNzMyICAgICA/ICAgICAxMC4zMjUx
Ky0xLjQ4MTMgICAgICAgID8gbWlnaHQgYmUgMS4xMDI3eCBzbG93ZXIKICAgZm9sZC1wdXQtYnkt
dmFsLXdpdGgtc3RyaW5nLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC44OTc4Ky0xLjQxMzYgICAg
ID8gICAgIDEyLjQ4NTYrLTEuNjU5MSAgICAgICAgPyBtaWdodCBiZSAxLjE0NTd4IHNsb3dlcgog
ICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjA1
NTMrLTEuNjY3NSAgICAgICAgICAgMTAuMTA3MystMS4xNDE1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDkzOHggZmFzdGVyCiAgIGZvbGQtcHV0LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQuNzY1NCstMC44MTEzICAgICA/ICAgICAgNC45MDkyKy0wLjgzNTUgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzAyeCBzbG93ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmll
cyAgICAgICAgICAgICAgICAgICAgICAxNy41NzE5Ky0wLjYxMTkgICAgID8gICAgIDE3LjYzMDYr
LTAuNTk4OCAgICAgICAgPwogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1rZXlzICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjU5MjYrLTAuMTQ5OSAgICAgICAgICAgIDYuNTI5NistMC4xMzE0ICAg
ICAgICAKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktdmFsdWVzICAgICAgICAgICAgICAgICAgICAg
ICAgNi40NTM0Ky0wLjE2NTQgICAgICAgICAgICA2LjQyMDMrLTAuMTI5NyAgICAgICAgCiAgIGZy
ZWV6ZS1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNjI4Nyst
MC4xMTUwICAgICAgICAgICAxNi41NzA5Ky0wLjE3MzEgICAgICAgIAogICBmcm91bmQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjcxMTkrLTAuMjQwMiAgICAg
ICAgICAgMTEuNjQ1MystMC4xNjEyICAgICAgICAKICAgZnRsLWxpYnJhcnktaW5saW5pbmctZGF0
YXZpZXcgICAgICAgICAgICAgICAgICAgICA3OC43ODYyKy0wLjgwMzQgICAgICEgICAgIDgyLjQ5
ODkrLTAuNjY5NyAgICAgICAgISBkZWZpbml0ZWx5IDEuMDQ3MXggc2xvd2VyCiAgIGZ0bC1saWJy
YXJ5LWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuMzE2NSstMC4yMjM1
ICAgICAgICAgICAyNy4wNTEwKy0wLjU5NjUgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtYml0
YW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1OTYrLTAuMDE1OSAgICAgICAgICAg
IDAuMjU3NistMC4wMTMxICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWJpdG9yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yMzg1Ky0wLjAxMDUgICAgICAgICAgICAwLjIzMTgrLTAu
MDA1MSAgICAgICAgICBtaWdodCBiZSAxLjAyOTF4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMt
Yml0eG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1MjErLTAuMDEzMyAgICAgICAg
ICAgIDAuMjQwNistMC4wMDk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3NXggZmFzdGVyCiAgIGZ0
bC1wb2x5bW9ycGhpYy1kaXYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjM5Nist
MC4wMDg1ICAgICA/ICAgICAgMC4yNDcxKy0wLjAyMzMgICAgICAgID8gbWlnaHQgYmUgMS4wMzEy
eCBzbG93ZXIKICAgZnRsLXBvbHltb3JwaGljLWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yNDc0Ky0wLjAxODQgICAgICAgICAgICAwLjI0MTUrLTAuMDA4NCAgICAgICAgICBt
aWdodCBiZSAxLjAyNDR4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtbXVsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjIzOTQrLTAuMDA4NCAgICAgPyAgICAgIDAuMjQ4NistMC4w
MTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4N3ggc2xvd2VyCiAgIGZ0bC1wb2x5bW9ycGhpYy1y
c2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjUwNistMC4wMDg2ICAgICAgICAg
ICAgMC4yNDUwKy0wLjAxMDQgICAgICAgICAgbWlnaHQgYmUgMS4wMjI5eCBmYXN0ZXIKICAgZnRs
LXBvbHltb3JwaGljLVN0cmluZ0Zyb21DaGFyQ29kZSAgICAgICAgICAgICAgICAgMC4yNjM1Ky0w
LjAxNjUgICAgICAgICAgICAwLjI1MjkrLTAuMDA5MCAgICAgICAgICBtaWdodCBiZSAxLjA0MjF4
IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjI0NDgrLTAuMDExNyAgICAgICAgICAgIDAuMjQwNCstMC4wMDkwICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE4N3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy11cnNoaWZ0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMjQxNCstMC4wMDc3ICAgICA/ICAgICAgMC4yNDgwKy0wLjAx
MzcgICAgICAgID8gbWlnaHQgYmUgMS4wMjczeCBzbG93ZXIKICAgZnVuY3Rpb24tY2FsbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjcxKy0wLjAxMDUgICAgICAgICAg
ICAwLjIyMDYrLTAuMDEzOCAgICAgICAgICBtaWdodCBiZSAxLjAyOTR4IGZhc3RlcgogICBmdW5j
dGlvbi1kb3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU3NTUrLTAu
MDU4MCAgICAgICAgICAgIDIuNTQwNCstMC4wNjUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHgg
ZmFzdGVyCiAgIGZ1bmN0aW9uLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuMTYwMystMC4wNTU1ICAgICAgICAgICAgMy4xMjcwKy0wLjA2NTkgICAgICAgICAgbWln
aHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgZnVuY3Rpb24td2l0aC1ldmFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4yMzAwKy0wLjAxMjAgICAgID8gICAgICAwLjIzNzArLTAuMDEz
OCAgICAgICAgPyBtaWdodCBiZSAxLjAzMDV4IHNsb3dlcgogICBnY3NlLXBvbHktZ2V0LWxlc3Mt
b2J2aW91cyAgICAgICAgICAgICAgICAgICAgICAgIDIyLjQ5MjErLTAuMjQ2MiAgICAgPyAgICAg
MjIuODM1OCstMC4xNjE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1M3ggc2xvd2VyCiAgIGdjc2Ut
cG9seS1nZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIuNjM0NistMC4y
MjQ3ICAgICAgICAgICAyMi41MDM3Ky0wLjE1OTUgICAgICAgIAogICBnY3NlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUxMDkrLTAuMDc4MiAgICAgPyAg
ICAgIDQuNTI5NystMC4xNTA4ICAgICAgICA/CiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIyOCstMC4wMTM4ICAgICA/ICAgICAgMC4yMzA5
Ky0wLjAxNDQgICAgICAgID8gbWlnaHQgYmUgMS4wMzY0eCBzbG93ZXIKICAgZ2VuZXJhdG9yLWZp
YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MC45Njg5Ky0wLjQwMTEgICAg
ID8gICAgIDQxLjQ0MzErLTAuNDg4MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMTZ4IHNsb3dlcgog
ICBnZW5lcmF0b3ItZnVuY3Rpb24tY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIy
ODUrLTAuMDExOSAgICAgICAgICAgIDAuMjI2MistMC4wMDk3ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwMXggZmFzdGVyCiAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAg
ICAgICAgICAgIDYuNzI4NistMC4wNTEzICAgICA/ICAgICAgNi43OTQ0Ky0wLjE3ODcgICAgICAg
ID8KICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgICAgICAgICAgIDE0
Ny4zMjk1Ky01Ljc0NDEgICAgID8gICAgMTQ5LjIwNzgrLTMuMjk0MSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMjd4IHNsb3dlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1l
bGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi44NjA4Ky0wLjA0MjkgICAgICAgICAgICAyLjg0NzgrLTAuMDQ4
NSAgICAgICAgCiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0
aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUuNzAyMCstMC4wNzExICAgICAgICAgICAgNS42NzM4Ky0wLjA2NjEgICAgICAgIAogICBn
ZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICAgICAyLjU3NjMr
LTAuMDY2MCAgICAgPyAgICAgIDIuNTk1OSstMC4xMTk1ICAgICAgICA/CiAgIGdldC1ieS1pZC1j
aGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAgICAgICAgICAgIDMuOTM3MistMC4wNzE3ICAg
ICAgICAgICAgMy45MjE2Ky0wLjExNzggICAgICAgIAogICBnZXQtYnktaWQtcHJvdG8tb3Itc2Vs
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjI2MDcrLTAuNzkyNiAgICAgICAgICAgMTMu
ODczNistMC44MzYzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3OXggZmFzdGVyCiAgIGdldC1ieS1p
ZC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDMwOCst
MC4wNDgwICAgICBeICAgICAgMy4yOTg0Ky0wLjA2OTggICAgICAgIF4gZGVmaW5pdGVseSAxLjA0
MDF4IGZhc3RlcgogICBnZXQtYnktaWQtc2VsZi1vci1wcm90byAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE0LjI3MjErLTAuNzg2MCAgICAgICAgICAgMTMuODk1MystMC45OTYwICAgICAgICAg
IG1pZ2h0IGJlIDEuMDI3MXggZmFzdGVyCiAgIGdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjI2MystMC4wMTIxICAgICA/ICAgICAgMC4yNDExKy0w
LjAxMzAgICAgICAgID8gbWlnaHQgYmUgMS4wNjU3eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRo
LXN0cmluZy1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg4
MDErLTAuMDg2NiAgICAgICAgICAgIDMuNzcwOCstMC4wNDAyICAgICAgICAgIG1pZ2h0IGJlIDEu
MDI5MHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3Ljk1NzYrLTAuMTMzOCAgICAgICAgICAgIDcuODQ0OCstMC4w
OTIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NHggZmFzdGVyCiAgIGdldC1ieS12YWwtd2l0aC1z
dHJpbmctY2hhaW4tZnJvbS10cnktYmxvY2sgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NjY5Ky0wLjA1OTggICAgICAgICAgICAyLjU4
NDkrLTAuMDU5MiAgICAgICAgICBtaWdodCBiZSAxLjAzMTd4IGZhc3RlcgogICBnZXQtYnktdmFs
LXdpdGgtc3RyaW5nLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjYzNTYrLTAuMDg4NyAg
ICAgPyAgICAgIDYuNzI4MSstMC4wOTM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xvd2Vy
CiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTQu
MDAzMCstMC4yMTYyICAgICAgICAgICAxMy44NDc3Ky0wLjE3MDUgICAgICAgICAgbWlnaHQgYmUg
MS4wMTEyeCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1xdWFkbW9ycGhpYy1jaGVj
ay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzEyNCstMC4wOTAwICAgICAgICAgICAg
NS4yNTM3Ky0wLjE1NTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTEyeCBmYXN0ZXIKICAgZ2V0LWJ5
LXZhbC13aXRoLXN0cmluZy1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMy45MzQxKy0wLjE4
MjQgICAgID8gICAgIDE0LjAwMTArLTAuMTk2OSAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgt
c3ltYm9sLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjE0
NystMC4wNTU4ICAgICA/ICAgICAgMy4yNjMxKy0wLjExMjQgICAgICAgID8gbWlnaHQgYmUgMS4w
MTUxeCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3Ry
dWN0dXJlLWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTEuMTU2NistMC4xNDYyICAgICAgICAgICAxMS4wODM0Ky0wLjA4
ODggICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoYWluLWZyb20tdHJ5LWJsb2Nr
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuNjM3OCstMC4wODczICAgICAgICAgICAgMi42MTQwKy0wLjA2MTggICAgICAgIAogICBnZXQt
YnktdmFsLXdpdGgtc3ltYm9sLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjMzNjErLTAu
MDY0MCAgICAgPyAgICAgIDguMzg4MystMC4xMDA2ICAgICAgICA/CiAgIGdldC1ieS12YWwtd2l0
aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgMTQuMTA5NCstMC4yMDEwICAgICAg
ICAgICAxNC4wMjIzKy0wLjE0ODMgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLXF1
YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41MjM1Ky0wLjA4
MDkgICAgID8gICAgICA0LjUyOTErLTAuMTA1MSAgICAgICAgPwogICBnZXQtYnktdmFsLXdpdGgt
c3ltYm9sLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgIDEzLjkyMjErLTAuMTY5NSAgICAgICAg
ICAgMTMuODE0MCstMC4yMjk0ICAgICAgICAKICAgZ2V0X2J5X3ZhbC1JbnQzMkFycmF5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjMzKy0wLjAzMjIgICAgID8gICAgICAxLjE3MTUr
LTAuMDUwOSAgICAgICAgPwogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjI4NjUrLTAuMDc2MiAgICAgICAgICAgIDYuMjA5NistMC4xMTI1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyNHggZmFzdGVyCiAgIGdldF9jYWxsZWVfcG9seW1vcnBoaWMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzgxNistMC4xMjMxICAgICAgICAgICAgNi4z
MTQxKy0wLjExNDMgICAgICAgICAgbWlnaHQgYmUgMS4wMTA3eCBmYXN0ZXIKICAgZ2V0dGVyLW5v
LWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wNzUzKy0wLjA0OTAg
ICAgICAgICAgICA0LjAzNTIrLTAuMDM5MSAgICAgICAgCiAgIGdldHRlci1wcm90b3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5OSstMC4wMTA0ICAgICA/ICAgICAg
MC4yMzE3Ky0wLjAxNzMgICAgICAgID8KICAgZ2V0dGVyLXJpY2hhcmRzLXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4zMTcyKy0wLjAyMTkgICAgICAgICAgICAwLjMxMjYrLTAu
MDI0MCAgICAgICAgICBtaWdodCBiZSAxLjAxNDZ4IGZhc3RlcgogICBnZXR0ZXItcmljaGFyZHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3LjQyMDYrLTUuMTk5NCAgICAgICAg
ICAgNzQuMDg2MSstNC4xNDU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1MHggZmFzdGVyCiAgIGdl
dHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTM2OSst
MC4wODU5ICAgICA/ICAgICAgNC41MzkxKy0wLjEwOTYgICAgICAgID8KICAgZ2xvYmFsLWlzTmFO
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi45MzY1Ky0wLjYwMzQgICAg
ICAgICAgIDE2Ljc5ODkrLTAuNjkwNSAgICAgICAgCiAgIGdsb2JhbC1vYmplY3QtYWNjZXNzLXdp
dGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjIzMSstMC4wMjIyICAgICAgICAgICAgMC4yMTc1Ky0w
LjAxMzkgICAgICAgICAgbWlnaHQgYmUgMS4wMjYweCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25z
dC1pbmZlci1maXJlLWZyb20tb3B0ICAgICAgICAgICAgICAgMC4yMzM2Ky0wLjAxNTIgICAgID8g
ICAgICAwLjI0MjArLTAuMDE0NiAgICAgICAgPyBtaWdodCBiZSAxLjAzNTl4IHNsb3dlcgogICBn
bG9iYWwtdmFyLWNvbnN0LWluZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyNzgr
LTAuMDExNyAgICAgICAgICAgIDAuMjI0NCstMC4wMTYwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1
MXggZmFzdGVyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2stZXF1YWwgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjMwNSstMC4wMTU4ICAgICAgICAgICAgMC4yMjU3Ky0wLjAxMDMgICAgICAgICAg
bWlnaHQgYmUgMS4wMjE0eCBmYXN0ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yMTgxKy0wLjAwNzYgICAgICAgICAgICAwLjIxNzArLTAu
MDEwNCAgICAgICAgCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlLWtleXMgICAgICAgICAgICAg
ICAgICAgICAgMzAuMTI2NCstMC4zMTMwICAgICAgICAgICAyOS45MTQ3Ky0wLjI1NzYgICAgICAg
IAogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5
Ljk1MTArLTAuMzEzOCAgICAgICAgICAgMjkuNzcxMystMC42MzMwICAgICAgICAKICAgSGFzaE1h
cC1zdHJpbmctcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAzOS45NTYwKy0wLjQz
MzkgICAgICAgICAgIDM5LjgyMjYrLTAuNTYwNyAgICAgICAgCiAgIGhvaXN0LW1ha2Utcm9wZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMxMSstMC4wMTA3ICAgICA/ICAg
ICAgMC4yNTA4Ky0wLjAyNzcgICAgICAgID8gbWlnaHQgYmUgMS4wODUzeCBzbG93ZXIKICAgaG9p
c3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUtZWZmZWN0ZnVsLWxvb3AgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzMxKy0wLjAxMDcgICAg
ID8gICAgICAwLjIzNDcrLTAuMDE4NiAgICAgICAgPwogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVj
dHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMDYrLTAuMDExMyAgICAgICAgICAgIDAu
MjI5MystMC4wMDc1ICAgICAgICAKICAgaW1wbGljaXQtYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJv
bCAgICAgICAgICAgICAgICA2Mi40NzY4Ky0wLjQ2OTcgICAgID8gICAgIDYyLjgzNjArLTAuOTcx
MiAgICAgICAgPwogICBpbXVsLWRvdWJsZS1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjk5MDArLTAuMDcyNyAgICAgPyAgICAgIDQuMTAyNystMC4yNzM1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI4M3ggc2xvd2VyCiAgIGltdWwtaW50LW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuNDYyOCstMC4xMjkxICAgICA/ICAgICAgNi42NDcyKy0w
LjEzODcgICAgICAgID8gbWlnaHQgYmUgMS4wMjg1eCBzbG93ZXIKICAgaW11bC1taXhlZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44NDAwKy0wLjExNDkgICAgICAg
ICAgICAzLjc2MTQrLTAuMDc2NiAgICAgICAgICBtaWdodCBiZSAxLjAyMDl4IGZhc3RlcgogICBp
bi1mb3VyLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjI1ODAr
LTAuMjcwMSAgICAgICAgICAgMjMuMTc4MystMC4yMTk0ICAgICAgICAKICAgaW4tb25lLWNhc2Ut
ZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4wNTkwKy0wLjA4MjcgICAg
ID8gICAgIDEwLjA4MzcrLTAuMTY3MyAgICAgICAgPwogICBpbi1vbmUtY2FzZS10cnVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjA2MTMrLTAuMDk1NiAgICAgPyAgICAgMTAu
MDg1MSstMC4xMDc0ICAgICAgICA/CiAgIGluLXR3by1jYXNlcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTAuNDI2MistMC4xMzg3ICAgICA/ICAgICAxMC40Njk5Ky0wLjEz
MTggICAgICAgID8KICAgaW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAg
ICAgICAgICAgMy4yNDc5Ky0wLjAzNjQgICAgID8gICAgICAzLjI4MTkrLTAuMDM3OCAgICAgICAg
PyBtaWdodCBiZSAxLjAxMDV4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92
LW5vLWlubGluZSAgICAgICAgICAgICAwLjIyNTkrLTAuMDExMyAgICAgPyAgICAgIDAuMjI2MCst
MC4wMTE4ICAgICAgICA/CiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3YgICAgICAgICAg
ICAgICAgICAgICAgMTEuOTkxNystMC4yMDgzICAgICAgICAgICAxMS45NjM3Ky0wLjE4NDMgICAg
ICAgIAogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlLW5vLWlubGluZSAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjIzMDIrLTAuMDEyOSAgICAgPyAgICAgIDAuMjMwNistMC4wMTE3ICAgICAgICA/CiAgIGluZmVy
LWNsb3N1cmUtY29uc3QtdGhlbi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMjQuMzI3MSstMC4z
Njg1ICAgICAgICAgICAyNC4wNTA4Ky0wLjE5MzYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE1eCBm
YXN0ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI3
NystMC4wMTAxICAgICA/ICAgICAgMC4yMzU0Ky0wLjAxNzQgICAgICAgID8gbWlnaHQgYmUgMS4w
MzM3eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAg
ICAgICAgICAyNC4zNTQzKy0wLjIxMDIgICAgID8gICAgIDI0LjQ4OTUrLTAuMTkyMyAgICAgICAg
PwogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAz
LjI3NjcrLTAuMDI5OSAgICAgPyAgICAgIDMuMjk1MSstMC4wNzUzICAgICAgICA/CiAgIGluZmVy
LWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzQ1NystMC4w
NTU4ICAgICA/ICAgICAgMi43NTgyKy0wLjA5ODIgICAgICAgID8KICAgaW5mZXItb25lLXRpbWUt
Y2xvc3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgMC4yMjgyKy0wLjAxMTYgICAgID8g
ICAgICAwLjIzMzkrLTAuMDE0MCAgICAgICAgPyBtaWdodCBiZSAxLjAyNDl4IHNsb3dlcgogICBp
bmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12YXJzICAgICAgICAgICAgICAgICAgICAwLjIzODcr
LTAuMDE1MCAgICAgICAgICAgIDAuMjMzMSstMC4wMTE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0
MnggZmFzdGVyCiAgIGluZmVyLW9uZS10aW1lLWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMjIzOCstMC4wMDc2ICAgICAgICAgICAgMC4yMTg4Ky0wLjAxMDQgICAgICAgICAg
bWlnaHQgYmUgMS4wMjI1eCBmYXN0ZXIKICAgaW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yMzgxKy0wLjAwOTMgICAgID8gICAgICAwLjI0MzArLTAu
MDEzMiAgICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBpbmxpbmUtYXJndW1lbnRz
LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjE1NzIrLTAuMjA5NSAgICAgICAg
ICAgMTAuMDMxOSstMC4xNjMxICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyNXggZmFzdGVyCiAgIGlu
bGluZS1hcmd1bWVudHMtYWxpYXNlZC1hY2Nlc3MgICAgICAgICAgICAgICAgICAgMTAuMjg1Nist
MC4xNjM2ICAgICAgICAgICAxMC4xMTk3Ky0wLjEzMzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTY0
eCBmYXN0ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1sb2NhbC1lc2NhcGUgICAgICAgICAgICAgICAg
ICAgICAgOS45Mzg1Ky0wLjExODcgICAgICAgICAgICA5LjkxNDUrLTAuMjAxNCAgICAgICAgCiAg
IGlubGluZS1nZXQtc2NvcGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzMx
NystMC4wNzM5ICAgICAgICAgICAgMy4yNDkzKy0wLjA3NTAgICAgICAgICAgbWlnaHQgYmUgMS4w
MjU0eCBmYXN0ZXIKICAgaW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAxMS4yNzE2Ky0wLjA5NjUgICAgICAgICAgIDExLjI0MDcrLTAuMTI4NSAgICAgICAg
CiAgIGlubGluZWQtcHV0LWJ5LXZhbC13aXRoLXN0cmluZy10cmFuc2l0aW9uICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkuNjk1MSstMC40
MDQ5ICAgICA/ICAgICA1MC4zMzkzKy0wLjk3MTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTMweCBz
bG93ZXIKICAgaW5saW5lZC1wdXQtYnktdmFsLXdpdGgtc3ltYm9sLXRyYW5zaXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MS4zMzIz
Ky0xLjIxMjEgICAgICAgICAgIDUwLjk4MTArLTEuMDAzNyAgICAgICAgCiAgIGluc3RhbmNlb2Yt
Ym91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjY1NistMC4wMDkxICAg
ICA/ICAgICAgMC4yNzI1Ky0wLjAwODQgICAgICAgID8gbWlnaHQgYmUgMS4wMjU2eCBzbG93ZXIK
ICAgaW50LW9yLW90aGVyLWFicy10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS4y
Mjg2Ky0wLjEzMzcgICAgICAgICAgICA1LjE4MTErLTAuMTI0NyAgICAgICAgCiAgIGludC1vci1v
dGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgMTkuNzUxNSstMC4yNDY1
ICAgICAgICAgICAxOS41Njg2Ky0wLjE1NDMgICAgICAgIAogICBpbnQtb3Itb3RoZXItYWRkLXRo
ZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA0LjczNDUrLTAuMDU5NSAgICAgICAgICAg
IDQuNzMwOCstMC4wNjIxICAgICAgICAKICAgaW50LW9yLW90aGVyLWFkZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS44NjkzKy0wLjA5NDkgICAgICAgICAgICA1Ljg0NTIrLTAu
MDg3MiAgICAgICAgCiAgIGludC1vci1vdGhlci1kaXYtdGhlbi1nZXQtYnktdmFsICAgICAgICAg
ICAgICAgICAgIDQuMjk3NSstMC4wNTA2ICAgICA/ICAgICAgNC4zMTg3Ky0wLjA2MzUgICAgICAg
ID8KICAgaW50LW9yLW90aGVyLW1heC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAg
NC41MjE1Ky0wLjA1NjYgICAgICAgICAgICA0LjQ5NjArLTAuMDkyNiAgICAgICAgCiAgIGludC1v
ci1vdGhlci1taW4tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuMjgzNCstMC4w
NjgyICAgICA/ICAgICAgNC4zMTU3Ky0wLjA2MjMgICAgICAgID8KICAgaW50LW9yLW90aGVyLW1v
ZC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC4zMzU4Ky0wLjA5OTkgICAgICAg
ICAgICA0LjI1OTIrLTAuMDUzNyAgICAgICAgICBtaWdodCBiZSAxLjAxODB4IGZhc3RlcgogICBp
bnQtb3Itb3RoZXItbXVsLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA3LjE4ODcr
LTAuMDM2MyAgICAgPyAgICAgIDcuMjM3MCstMC4xMDM0ICAgICAgICA/CiAgIGludC1vci1vdGhl
ci1uZWctdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDQuOTEyNCstMC4wODE1ICAg
ICAgICAgICAgNC44NzYzKy0wLjA0OTggICAgICAgIAogICBpbnQtb3Itb3RoZXItbmVnLXplcm8t
dGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE5LjY1NjYrLTAuMTIyMiAgICAgICAgICAgMTku
NjQxOCstMC4yMzI0ICAgICAgICAKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdldC1ieS12YWwg
ICAgICAgICAgICAgICAgICAgNi4wMjQxKy0wLjE0OTUgICAgICAgICAgICA1Ljg3MTErLTAuMDMy
OSAgICAgICAgICBtaWdodCBiZSAxLjAyNjF4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItc3ViICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjgxOTQrLTAuMTA0OCAgICAgPyAgICAg
IDQuOTUzMCstMC4yMzQ0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3N3ggc2xvd2VyCiAgIGludC1v
dmVyZmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODA0MSstMC4w
ODQwICAgICA/ICAgICAgNC44MTA5Ky0wLjEwMjMgICAgICAgID8KICAgSW50MTZBcnJheS1hbGxv
Yy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICA2My40OTg0Ky0wLjY0OTkgICAgID8g
ICAgIDYzLjg0MjUrLTEuMDA2MiAgICAgICAgPwogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdp
dGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDIyLjA5NTgrLTAuNTk4NCAgICAgPyAgICAgMjIuMjEx
MistMC45NDk4ICAgICAgICA/CiAgIEludDE2QXJyYXktYnViYmxlLXNvcnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjIuNzUyMistMC4xOTA2ICAgICAgICAgICAyMi40NzE3Ky0wLjI4NDMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTI1eCBmYXN0ZXIKICAgSW50MTZBcnJheS1sb2FkLWludC1t
dWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44MDc1Ky0wLjA1ODQgICAgID8gICAgICAx
Ljg0MTkrLTAuMDQ3MCAgICAgICAgPyBtaWdodCBiZSAxLjAxOTB4IHNsb3dlcgogICBJbnQxNkFy
cmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDUyLjM4NTArLTAuODUy
MiAgICAgPyAgICAgNTcuNDcyOCstNS4xODIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDk3MXggc2xv
d2VyCiAgIEludDMyQXJyYXktYWxsb2MtbGFyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjQuMTk4NystMC4yMzE2ICAgICA/ICAgICAyNC40NDYwKy0wLjM1MTEgICAgICAgID8gbWlnaHQg
YmUgMS4wMTAyeCBzbG93ZXIKICAgSW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAg
ICAgICAgICAgICAgICA3My45MzQxKy0wLjk1MjAgICAgICAgICAgIDczLjM3NDUrLTAuODEzNCAg
ICAgICAgCiAgIEludDMyQXJyYXktYWxsb2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDkuMzM0NCstMC4xNjcwICAgICA/ICAgICAgOS40NTE3Ky0wLjIxNDYgICAgICAgID8gbWln
aHQgYmUgMS4wMTI2eCBzbG93ZXIKICAgSW50MzJBcnJheS1JbnQ4QXJyYXktdmlldy1hbGxvYyAg
ICAgICAgICAgICAgICAgICAxOC42OTU1Ky0wLjQxMTMgICAgICAgICAgIDE4LjQ1ODYrLTAuMTUx
NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjh4IGZhc3RlcgogICBpbnQ1Mi1zcGlsbCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIzMjUrLTAuMDExNSAgICAgICAgICAg
IDAuMjI5MystMC4wMjIzICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MXggZmFzdGVyCiAgIEludDhB
cnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgICAgNTkuNDYwNistMS4z
NjIyICAgICAgICAgICA1OC40NDI3Ky0wLjY5MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMTc0eCBm
YXN0ZXIKICAgSW50OEFycmF5LWxvYWQtd2l0aC1ieXRlTGVuZ3RoICAgICAgICAgICAgICAgICAg
ICAgMy43MTc2Ky0wLjA0MzAgICAgID8gICAgICAzLjcyNTQrLTAuMDUzNiAgICAgICAgPwogICBJ
bnQ4QXJyYXktbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc0NTMr
LTAuMDg3OCAgICAgICAgICAgIDMuNzMyMSstMC4wNjMxICAgICAgICAKICAgaW50ZWdlci1kaXZp
ZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi42MzEyKy0wLjIyNjMgICAg
ICAgICAgIDEyLjYwODkrLTAuMTY0OCAgICAgICAgCiAgIGludGVnZXItbW9kdWxvICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMzc4NSstMC4xMTE0ICAgICAgICAgICAgMi4z
MTU4Ky0wLjA0OTMgICAgICAgICAgbWlnaHQgYmUgMS4wMjcxeCBmYXN0ZXIKICAgaXMtYm9vbGVh
bi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43MTk4Ky0wLjA4Mzkg
ICAgICAgICAgICAzLjY0NzMrLTAuMDc3MiAgICAgICAgICBtaWdodCBiZSAxLjAxOTl4IGZhc3Rl
cgogICBpcy1ib29sZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjczNTkrLTAuMDY0MiAgICAgPyAgICAgIDIuNzYzMistMC4wNjI4ICAgICAgICA/CiAgIGlzLWZ1
bmN0aW9uLWZvbGQtdHJpY2t5LWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjI5NSstMC4xNDExICAgICAh
ICAgICAxMy4yOTEwKy0wLjE5ODQgICAgICAgICEgZGVmaW5pdGVseSAxLjA1MjR4IHNsb3dlcgog
ICBpcy1mdW5jdGlvbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjg1
NTUrLTAuMTAxMyAgICAgPyAgICAgIDMuOTUxNistMC4xMDI3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI0OXggc2xvd2VyCiAgIGlzLWZ1bmN0aW9uLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNzQ5MSstMC4wMzM2ICAgICA/ICAgICAgMi43NzUzKy0wLjA2OTIgICAgICAg
ID8KICAgaXMtbnVtYmVyLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My43OTY5Ky0wLjA3MzMgICAgID8gICAgICAzLjgxNDYrLTAuMTI3NyAgICAgICAgPwogICBpcy1u
dW1iZXItZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjcwNTYrLTAu
MDM5NCAgICAgICAgICAgIDIuNjg5NSstMC4wNDczICAgICAgICAKICAgaXMtb2JqZWN0LW9yLW51
bGwtZm9sZC1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgMi44ODkwKy0wLjA2NTggICAgICAg
ICAgICAyLjg0NTArLTAuMDQ1MiAgICAgICAgICBtaWdodCBiZSAxLjAxNTV4IGZhc3RlcgogICBp
cy1vYmplY3Qtb3ItbnVsbC1mb2xkLWxlc3MtdHJpY2t5ICAgICAgICAgICAgICAgICAzLjgyNzEr
LTAuMDQyMiAgICAgPyAgICAgIDMuODU1MCstMC4wNjkzICAgICAgICA/CiAgIGlzLW9iamVjdC1v
ci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgIDQuMzg3NystMC4xMDU3ICAg
ICAgICAgICAgNC4zNjM1Ky0wLjA2MTkgICAgICAgIAogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc3NTErLTAuMDg0MCAgICAgPyAgICAgIDIu
ODE2MSstMC4wNzM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OHggc2xvd2VyCiAgIGlzLW9iamVj
dC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAgICAgICAgICAgICAgIDQuMDEzNystMC4wNjU1
ICAgICAgICAgICAgMy45MjQ4Ky0wLjA2NTQgICAgICAgICAgbWlnaHQgYmUgMS4wMjI3eCBmYXN0
ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi43MTA5
Ky0yLjA0NTcgICAgID8gICAgIDIzLjU0NDArLTAuMjIwNSAgICAgICAgPyBtaWdodCBiZSAxLjAz
Njd4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja3ktZnVuY3Rpb24gICAgICAgICAg
ICAgICAgICAzLjk0NDIrLTAuMTA4MyAgICAgICAgICAgIDMuODkzNistMC4wNDgyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDEzMHggZmFzdGVyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNreS1pbnRl
cm5hbC1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LjQ0MTArLTAuMDU4OCAgICAgISAgICAgIDguNzA5MCstMC4xMzY1ICAg
ICAgICAhIGRlZmluaXRlbHkgMS4wMzE3eCBzbG93ZXIKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy43OTkwKy0wLjA5MjUgICAgICAgICAgICAz
LjcxMDkrLTAuMDQwNiAgICAgICAgICBtaWdodCBiZSAxLjAyMzd4IGZhc3RlcgogICBpcy1zdHJp
bmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY3NzYrLTAuMDY1
NCAgICAgPyAgICAgIDIuNjk4NystMC4wNDQ3ICAgICAgICA/CiAgIGlzLXVuZGVmaW5lZC1mb2xk
LXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjgxOSstMC4wNTY2ICAgICA/ICAg
ICAgMy4zNjY2Ky0wLjA3NTcgICAgICAgID8gbWlnaHQgYmUgMS4wMjU4eCBzbG93ZXIKICAgaXMt
dW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43NDI5Ky0w
LjA2NDkgICAgID8gICAgICAyLjc3MjUrLTAuMDY3MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDh4
IHNsb3dlcgogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjE1MzUrLTAuMDA1OCAgICAgPyAgICAgIDAuMTU2NCstMC4wMDkzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDE5Mnggc2xvd2VyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDguMzAyOCstMC4xNjgwICAgICA/ICAgICAgOC4zMDczKy0wLjA5
NjQgICAgICAgID8KICAgbGFyZ2UtaW50LW5lZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC43NjA2Ky0wLjEwMTIgICAgID8gICAgIDEwLjgzODErLTAuMTQxNCAgICAgICAg
PwogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5
LjU0NjcrLTAuMTI2NiAgICAgICAgICAgIDkuNDU5MystMC4xMjY3ICAgICAgICAKICAgbGF6eS1h
cnJheS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAgICAgICAgICAgICAgICAgMC4yMzY2Ky0wLjAx
ODEgICAgID8gICAgICAwLjI0ODQrLTAuMDE1NSAgICAgICAgPyBtaWdodCBiZSAxLjA0OTd4IHNs
b3dlcgogICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjI1MjErLTAuMDI4MSAgICAgICAgICAgIDAuMjMzMystMC4wMTQ0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDgwOHggZmFzdGVyCiAgIGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMjMzMystMC4wMDk0ICAgICA/ICAgICAgMC4yMzg0Ky0wLjAxNjcg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjE4eCBzbG93ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDU1Ky0wLjAxNTQgICAgICAgICAgICAw
LjIzOTcrLTAuMDE0OSAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3RlcgogICBsb2FkLXZh
cmFyZ3MtZWxpbWluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjYrLTAuMDEy
NSAgICAgPyAgICAgIDAuMjIzOCstMC4wMTEyICAgICAgICA/CiAgIGxvY2FsZS1jb21wYXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuODExMystMC44ODUwICAgICAgICAg
ICAzMC41NzkyKy0wLjcyNzYgICAgICAgIAogICBsb2dpY2FsLW5vdC13ZWlyZC10eXBlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjI0MzMrLTAuMDE4OCAgICAgICAgICAgIDAuMjMzMyst
MC4wMTAxICAgICAgICAgIG1pZ2h0IGJlIDEuMDQyOXggZmFzdGVyCiAgIGxvZ2ljYWwtbm90ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1OSstMC4wMTE1ICAgICA/
ICAgICAgMC4yMjg2Ky0wLjAxNDIgICAgICAgID8gbWlnaHQgYmUgMS4wMTE4eCBzbG93ZXIKICAg
bG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy43NTA4
Ky0wLjI2MjIgICAgICAgICAgIDE3LjYzNzUrLTAuMzI2NyAgICAgICAgCiAgIG1ha2UtaW5kZXhl
ZC1zdG9yYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODEzOCstMC4wOTg3ICAg
ICAgICAgICAgNC43MzcyKy0wLjEzOTAgICAgICAgICAgbWlnaHQgYmUgMS4wMTYyeCBmYXN0ZXIK
ICAgbWFrZS1yb3BlLWNzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS41
NzAxKy0wLjI5MjUgICAgICAgICAgIDE5LjQ1NzErLTAuMjEyNiAgICAgICAgCiAgIG1hbnktZm9y
ZWFjaC1jYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTI2NSstMC4wNTg2
ICAgICA/ICAgICAgMy45ODEwKy0wLjA0OTIgICAgICAgID8gbWlnaHQgYmUgMS4wMTM5eCBzbG93
ZXIKICAgbWFueS1yZXBlYXQtc3RvcmVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
MC40NjE0Ky0wLjIwNzkgICAgICAgICAgIDIwLjM0ODUrLTAuMTQ1MSAgICAgICAgCiAgIG1hcC1m
b3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMDc0OSstMC4x
MTAzICAgICAgICAgICAgNi4wMjA3Ky0wLjExODggICAgICAgIAogICBtYXAtZm9yLW9mICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjAwNzIrLTAuMjIxNyAgICAgICAg
ICAgMjYuOTIyNystMC4zNTQzICAgICAgICAKICAgbWFyc2FnbGlhLWxhcmdlci1pbnRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3Ni45MjA5Ky0wLjQ4NDMgICAgID8gICAgIDc3LjA5NTUr
LTEuMTg1NiAgICAgICAgPwogICBtYXJzYWdsaWEtb3NyLWVudHJ5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIwLjc5ODcrLTAuMjEwNCAgICAgICAgICAgMjAuNDk5OCstMC4xMDM3ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE0NnggZmFzdGVyCiAgIG1hdGgtcmFuZG9tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1MistMC4wMTI0ICAgICA/ICAgICAgMC4y
Mzg4Ky0wLjAxOTIgICAgICAgID8gbWlnaHQgYmUgMS4wNjA0eCBzbG93ZXIKICAgbWF0aC10cnVu
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzYzKy0wLjAxNjgg
ICAgICAgICAgICAwLjIyNjkrLTAuMDExMiAgICAgICAgICBtaWdodCBiZSAxLjA0MTN4IGZhc3Rl
cgogICBtYXRoLXdpdGgtb3V0LW9mLWJvdW5kcy1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAw
LjIyODgrLTAuMDA3NSAgICAgPyAgICAgIDAuMjM0MSstMC4wMTU2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDIyOXggc2xvd2VyCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuNzk2NystMC4wMjY5ICAgICA/ICAgICAgMi44MDMxKy0wLjA3MjAgICAg
ICAgID8KICAgbWVnYW1vcnBoaWMtbG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzNS40Njk4Ky0wLjU5MDcgICAgID8gICAgIDM1LjY0MTgrLTAuMjUzMyAgICAgICAgPwogICBt
ZXRob2Qtb24tbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjM3OTMr
LTAuNDgzNSAgICAgISAgICAgMjAuMTc1NistMC4yMTcxICAgICAgICAhIGRlZmluaXRlbHkgMS4w
NDExeCBzbG93ZXIKICAgbWluLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi43MzAxKy0wLjAzOTggICAgICEgICAgICAyLjgzMTgrLTAuMDM0OCAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDM3M3ggc2xvd2VyCiAgIG1pbnVzLWJvb2xlYW4tZG91YmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzQwNystMC4wNTIyICAgICA/ICAgICAgMi43NTI2
Ky0wLjA0OTAgICAgICAgID8KICAgbWludXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi41NjE1Ky0wLjA1MTcgICAgICAgICAgICAyLjUxMzgrLTAuMDQ0MCAg
ICAgICAgICBtaWdodCBiZSAxLjAxOTB4IGZhc3RlcgogICBtaXNjLWJ1Z3MtODQ3Mzg5LWpwZWcy
MDAwICAgICAgICAgICAgICAgICAgICAgICA1MzcwLjQ5MzQrLTUwLjQ0ODUgICAgPyAgIDU0Mjcu
ODc0MystNzguNTAzNCAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIG1pc2Mtc3Ry
aWN0LWVxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYuOTQyMistMC40MDk5
ICAgICAgICAgICAyNS40ODUxKy0xLjIwNDQgICAgICAgICAgbWlnaHQgYmUgMS4wNTcyeCBmYXN0
ZXIKICAgbW9kLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
MC4zMzM3Ky0wLjE1NDkgICAgICAgICAgIDEwLjI1NTkrLTAuMTQzMCAgICAgICAgCiAgIG1vZC1i
b29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuNTc1MCstMC4x
MDQyICAgICAgICAgICAgNy41Mzc4Ky0wLjA2ODQgICAgICAgIAogICBtdWwtYm9vbGVhbi1kb3Vi
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE2MTcrLTAuMDM3MiAgICAgPyAg
ICAgIDMuMTYzOCstMC4wNTQ4ICAgICAgICA/CiAgIG11bC1ib29sZWFuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuODc3NistMC4wNDYzICAgICA/ICAgICAgMi44OTIw
Ky0wLjA1NjAgICAgICAgID8KICAgbmVnLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi44NjQzKy0wLjA2NTQgICAgID8gICAgICAyLjkwNzUrLTAuMDgyMCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNTF4IHNsb3dlcgogICBuZWdhdGl2ZS16ZXJvLWRpdmlkZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI5MTcrLTAuMDE0OCAgICAgPyAgICAgIDAu
MzAyOCstMC4wMTQ1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4MHggc2xvd2VyCiAgIG5lZ2F0aXZl
LXplcm8tbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzA5OSstMC4wMTE5
ICAgICA/ICAgICAgMC4zMjc1Ky0wLjAxNTkgICAgICAgID8gbWlnaHQgYmUgMS4wNTY4eCBzbG93
ZXIKICAgbmVnYXRpdmUtemVyby1uZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zMTgyKy0wLjAyNDcgICAgICAgICAgICAwLjMwNDQrLTAuMDI5NyAgICAgICAgICBtaWdodCBi
ZSAxLjA0NTZ4IGZhc3RlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQ5LjkzNzArLTEuMzQwMyAgICAgICAgICAgNDkuMTk2MistMC4yODg5ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE1MXggZmFzdGVyCiAgIG5ldy1hcnJheS1idWZmZXItZGVhZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOTkuNDc1OCstMS4zNzY1ICAgICAgICAgICA5OC45
NzY1Ky0wLjY1MDAgICAgICAgIAogICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEyLjM2MTUrLTAuMjEwNSAgICAgPyAgICAgMTIuNjU5MystMC4yMDkz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0MXggc2xvd2VyCiAgIG5ldy1hcnJheS1kZWFkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuMzgzMCstMC4xOTY3ICAgICAgICAgICAx
NS4yOTY4Ky0wLjExODYgICAgICAgIAogICBuZXctYXJyYXktcHVzaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3LjM3NTMrLTAuMjMwMCAgICAgPyAgICAgIDcuMzk5NCstMC4x
NDk0ICAgICAgICA/CiAgIG5vLWlubGluZS1jb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMjIwNistMC4wMTA2ICAgICA/ICAgICAgMC4yMjkzKy0wLjAxMDcgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzkyeCBzbG93ZXIKICAgTnVtYmVyLWlzTmFOICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNy4wNjE1Ky0wLjEwODEgICAgICAgICAgIDE2LjgyMTMr
LTAuNzM3NyAgICAgICAgICBtaWdodCBiZSAxLjAxNDN4IGZhc3RlcgogICBudW1iZXItdGVzdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjQwNTgrLTAuMDYzOCAgICAg
PyAgICAgIDMuNDI0MystMC4wODkwICAgICAgICA/CiAgIG9iamVjdC1hbmQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODM3OCstMC4wNzQyICAgICA/ICAgICAgNS44
NjUyKy0wLjEwMTQgICAgICAgID8KICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi4xMjQ5Ky0wLjA3MjkgICAgID8gICAgICA2LjI1MTUrLTAuMTQ2
NyAgICAgICAgPyBtaWdodCBiZSAxLjAyMDd4IHNsb3dlcgogICBvYmplY3QtZ2V0LW93bi1wcm9w
ZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjQ5MystMC4xNTU3ICAgICAgICAgICAgNS41
NDU1Ky0wLjEwNzkgICAgICAgICAgbWlnaHQgYmUgMS4wMTg3eCBmYXN0ZXIKICAgb2JqZWN0LWlu
dC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS44MzQxKy0wLjE1MDkg
ICAgID8gICAgIDE2LjA2MjArLTAuMTYzMSAgICAgICAgPyBtaWdodCBiZSAxLjAxNDR4IHNsb3dl
cgogICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4
LjQ3MTcrLTAuMTI5NCAgICAgICAgICAgMTguNDI2MSstMC4xMjY4ICAgICAgICAKICAgb2JqZWN0
LWludC1hbmQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi4wMjYzKy0wLjE2
NDEgICAgICAgICAgIDE1Ljk5MjYrLTAuMTQ1MSAgICAgICAgCiAgIG9iamVjdC1pbnQtbXVsLWFy
cmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuODY4MCstMC4xNDg3ICAgICA/ICAg
ICAxNi4xMjgyKy0wLjE3MTMgICAgICAgID8gbWlnaHQgYmUgMS4wMTY0eCBzbG93ZXIKICAgb2Jq
ZWN0LWludC1zdWItYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4wNDk5Ky0w
LjExMzEgICAgID8gICAgIDEzLjA4MjQrLTAuMTU2MiAgICAgICAgPwogICBvYmplY3QtaW50LXN1
YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjQyOTIrLTAuMTA2NCAgICAg
PyAgICAgMTguNTA0NSstMC4xNjM0ICAgICAgICA/CiAgIG9iamVjdC1sc2hpZnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODA5NCstMC4wNDg1ICAgICAgICAgICAgNS44
MDQxKy0wLjEwMTggICAgICAgIAogICBvYmplY3Qtb3IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1LjgwMjErLTAuMDYwNSAgICAgICAgICAgIDUuNzcyNSstMC4wODY5
ICAgICAgICAKICAgb2JqZWN0LXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNS43ODYwKy0wLjA4MDMgICAgICAgICAgICA1Ljc0MDgrLTAuMDc0MiAgICAgICAgCiAg
IG9iamVjdC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDc0
MSstMC4wNDQ4ICAgICA/ICAgICAgMy4wODY2Ky0wLjAzODUgICAgICAgID8KICAgb2JqZWN0LXVy
c2hpZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43ODk0Ky0wLjA4NjUg
ICAgICAgICAgICA1Ljc3NTYrLTAuMDg3MiAgICAgICAgCiAgIG9iamVjdC14b3IgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODcyMCstMC4xMjcwICAgICAgICAgICAg
NS43NzEwKy0wLjA5MjQgICAgICAgICAgbWlnaHQgYmUgMS4wMTc1eCBmYXN0ZXIKICAgb2J2aW91
cy1zaW5rLXBhdGhvbG9neS10YWtlbiAgICAgICAgICAgICAgICAgICAgICAgMC4yMzUzKy0wLjAx
NzUgICAgICAgICAgICAwLjIyOTArLTAuMDE1NCAgICAgICAgICBtaWdodCBiZSAxLjAyNzN4IGZh
c3RlcgogICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjI0NjUrLTAuMDE0NyAgICAgICAgICAgIDAuMjM1NystMC4wMjEwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ1OHggZmFzdGVyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0ICAgICAg
ICAgICAgICAgICAgICAgMjYuNTQ4NystMC4zNTgxICAgICA/ICAgICAyNi43ODQ1Ky0wLjE5MTgg
ICAgICAgID8KICAgcGx1cy1ib29sZWFuLWFyaXRoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi43MTE5Ky0wLjA2OTEgICAgICAgICAgICAyLjY2NzErLTAuMDYzNiAgICAgICAgICBt
aWdodCBiZSAxLjAxNjh4IGZhc3RlcgogICBwbHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjc5MzMrLTAuMDQ4MiAgICAgPyAgICAgIDIuODA2NSstMC4w
NzkyICAgICAgICA/CiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNTk1MistMC4wNTA2ICAgICAgICAgICAgMi41MzUyKy0wLjA0MjkgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjM3eCBmYXN0ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50
LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuOTQxNSstMC4wNTA2ICAgICAgICAgICAgMi45MjMyKy0wLjA0
MTIgICAgICAgIAogICBwb2x5LWNoYWluLWFjY2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcyAgICAg
ICAgICAgICAyLjk2NjMrLTAuMDUzMyAgICAgICAgICAgIDIuOTQyNSstMC4wNTUwICAgICAgICAK
ICAgcG9seS1jaGFpbi1hY2Nlc3Mtc2ltcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgMi45
MDgzKy0wLjA1ODIgICAgID8gICAgICAyLjkyOTgrLTAuMDY4OSAgICAgICAgPwogICBwb2x5LWNo
YWluLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjkzODMrLTAuMDY3
NiAgICAgPyAgICAgIDIuOTczNystMC4wODAxICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMHggc2xv
d2VyCiAgIHBvbHktc3RyaWN0ZXEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjQuNTY0NSstMC4yOTc2ICAgICA/ICAgICA2NS4yMjExKy0wLjY4MjAgICAgICAgID8gbWlnaHQg
YmUgMS4wMTAyeCBzbG93ZXIKICAgcG9seW1vcnBoaWMtYXJyYXktY2FsbCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi4wNTU1Ky0wLjA1MjcgICAgICAgICAgICAyLjA1MzErLTAuMDU1NyAg
ICAgICAgCiAgIHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjI5MistMC4wMTAxICAgICAgICAgICAgMC4yMjg2Ky0wLjAxMjggICAgICAgIAogICBw
b2x5bW9ycGhpYy1wdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyODUr
LTAuMDA2NSAgICAgPyAgICAgIDAuMjMwNystMC4wMTAxICAgICAgICA/CiAgIHBvbHltb3JwaGlj
LXB1dC1ieS12YWwtd2l0aC1zdHJpbmcgICAgICAgICAgICAgICAgIDAuMjI5MistMC4wMDk5ICAg
ICA/ICAgICAgMC4yMjkyKy0wLjAwODggICAgICAgID8KICAgcG9seW1vcnBoaWMtcHV0LWJ5LXZh
bC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAgMC4yNTYyKy0wLjAxNzQgICAgICAgICAgICAw
LjI1NTkrLTAuMDE2NSAgICAgICAgCiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTUuNjcyMCstMC4yMzE0ICAgICAgICAgICAxNS41MzEwKy0wLjE2
NjkgICAgICAgIAogICBwb2x5dmFyaWFudC1tb25vbW9ycGhpYy1nZXQtYnktaWQgICAgICAgICAg
ICAgICAgICA1LjAzMDYrLTAuMDkwNiAgICAgPyAgICAgIDUuMDM5OSstMC4wODY0ICAgICAgICA/
CiAgIHByZXZlbnQtZXh0ZW5zaW9ucy1hbmQtZG8td29yayAgICAgICAgICAgICAgICAgICAgMTYu
NDYwMystMC4xNzk5ICAgICA/ICAgICAxNi42OTA4Ky0wLjE3NjYgICAgICAgID8gbWlnaHQgYmUg
MS4wMTQweCBzbG93ZXIKICAgcHJvdG8tZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4yNDM4Ky0wLjAxNTUgICAgICAgICAgICAwLjI0MTYrLTAuMDEzOCAgICAg
ICAgCiAgIHByb3RvdHlwZS1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1wcm90b3R5cGUgICAgICAgICAg
IDAuMjI1NSstMC4wMDcyICAgICA/ICAgICAgMC4yMjg4Ky0wLjAxMzcgICAgICAgID8gbWlnaHQg
YmUgMS4wMTQ4eCBzbG93ZXIKICAgcHV0LWJ5LWlkLXJlcGxhY2UtYW5kLXRyYW5zaXRpb24gICAg
ICAgICAgICAgICAgICAgOS45NTA4Ky0wLjE0OTQgICAgID8gICAgIDEwLjAzNTUrLTAuMDgyNiAg
ICAgICAgPwogICBwdXQtYnktaWQtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAgICAgICAgICAgICAg
ICAgICAyLjg5OTArLTAuMDYyMCAgICAgICAgICAgIDIuODkyOCstMC4xMDcxICAgICAgICAKICAg
cHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRleGluZy1oZWFkZXIgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi44NTk2Ky0wLjEyMTkg
ICAgID8gICAgIDE3LjAzMzQrLTAuMjQ3MiAgICAgICAgPyBtaWdodCBiZSAxLjAxMDN4IHNsb3dl
cgogICBwdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEz
Ljc0MDErLTAuMjQ1OSAgICAgICAgICAgMTMuNTkzNystMC4zMDgxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEwOHggZmFzdGVyCiAgIHB1dC1ieS12YWwtZGlyZWN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMzAzMSstMC4wMjUyICAgICAgICAgICAgMC4yOTYyKy0wLjAxMjIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjMyeCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1i
bGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQuMTU5MCstMC4xMzgzICAgICAgICAgICAxNC4wNTUxKy0wLjI0
NjEgICAgICAgIAogICBwdXQtYnktdmFsLW1hY2hpbmUtaW50ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjI1OTUrLTAuMDExNCAgICAgPyAgICAgIDAuMjY5MistMC4wMjgxICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM3NHggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFj
ZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE0LjY1MjMrLTAuMjcyNSAgICAgPyAgICAgMTQuOTA0OSstMC4xMjQ4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3Mnggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJp
bmctc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMy44Njc2Ky0wLjA0ODkgICAgICAgICAgICAzLjgyMDEr
LTAuMDY0NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjR4IGZhc3RlcgogICBwdXQtYnktdmFsLXdp
dGgtc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjAzNDgrLTAuMTkzNSAgICAg
PyAgICAgMTQuMjAzMSstMC4yNTcwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyMHggc2xvd2VyCiAg
IHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjk0NjgrLTAu
MDg1NyAgICAgPyAgICAgMTQuMDUyMCstMC4yMjE3ICAgICAgICA/CiAgIHB1dC1ieS12YWwtd2l0
aC1zeW1ib2wtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4xMDUyKy0wLjA3OTYgICAgID8gICAgICAz
LjExNTQrLTAuMDQyMiAgICAgICAgPwogICBwdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE0LjI3NTcrLTAuMjI0NSAgICAgPyAgICAgMTQuMzY0NSstMC4y
OTYwICAgICAgICA/CiAgIHJhcmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTQuNjEyNCstMC4xNTM2ICAgICAgICAgICAxNC41MDA0Ky0wLjE5MjcgICAgICAg
IAogICByYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAgICA3
LjA1NTQrLTAuMTU5OSAgICAgPyAgICAgIDcuMjYyNystMC4xODE3ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI5NHggc2xvd2VyCiAgIHJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMjc1MCstMC4wMTE2ICAgICAgICAgICAgMC4yNjMzKy0wLjAxMTUgICAg
ICAgICAgbWlnaHQgYmUgMS4wNDQzeCBmYXN0ZXIKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NC42Njg3Ky0wLjgzNTcgICAgID8gICAgIDQ0Ljcw
OTErLTAuNzY4NyAgICAgICAgPwogICByZWdleHAtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE3Ljc2MTYrLTAuMTk2OCAgICAgPyAgICAgMTcuODIyMSstMC4xNTkx
ICAgICAgICA/CiAgIHJlZ2V4cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNlICAgICAgICAgICAg
ICAgICAgIDAuMzU3MSstMC4wMTkyICAgICAgICAgICAgMC4zNDU5Ky0wLjAxMDAgICAgICAgICAg
bWlnaHQgYmUgMS4wMzI1eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMS4wODk1Ky0wLjAzMTIgICAgICAgICAgICAxLjA4NTArLTAuMDI5
OCAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjIyMzYrLTAuMDEwMCAgICAgPyAgICAgIDAuMjMyOSstMC4wMTY0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDQxNHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi41NjM4Ky0wLjA3ODQgICAgICAgICAgICAyLjQ4NTMrLTAuMDU1MiAg
ICAgICAgICBtaWdodCBiZSAxLjAzMTZ4IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI3MDQrLTAuMDEwNiAgICAgICAgICAgIDAuMjcw
MistMC4wMTE4ICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4zMDQxKy0wLjAwODUgICAgID8gICAgICAwLjMxODArLTAuMDIy
NSAgICAgICAgPyBtaWdodCBiZSAxLjA0NTd4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTYwKy0wLjAxNzIgICAgID8g
ICAgICAwLjMxNzgrLTAuMDE4NCAgICAgICAgPwogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE1NistMC4wMTk0ICAgICAgICAg
ICAgMC4zMTM5Ky0wLjAxMDIgICAgICAgIAogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMy1tdWx0aWxpbmUgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMjAyKy0wLjAxNDggICAgICAgICAgICAw
LjMxNzMrLTAuMDE2NSAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXN0aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjMyOTUrLTAuMDI2NyAgICAgICAgICAgIDAuMzA4NCst
MC4wMTA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4NnggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMTYwKy0wLjAwODkg
ICAgICAgICAgICAwLjMxNDgrLTAuMDEyOCAgICAgICAgCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3Bs
aXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE5NCstMC4wMTMyICAgICA/ICAgICAgMC4z
MTk1Ky0wLjAwOTQgICAgICAgID8KICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuOTg2NCstMC4wMzExICAgICA/ICAgICAgMS4wMTcxKy0wLjAzMzIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjIzNzArLTAuMDEyNCAgICAgICAgICAgIDAuMjMzMist
MC4wMTIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NHggZmFzdGVyCiAgIHJlZ2V4cC1zZXQtbGFz
dC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuNDAwMistMC4xMzY5ICAgICAg
ICAgICAxNy4yODI2Ky0wLjEyMjcgICAgICAgIAogICByZWdpc3Rlci1wcmVzc3VyZS1mcm9tLW9z
ciAgICAgICAgICAgICAgICAgICAgICAgIDIyLjcxNjMrLTAuMjA5NSAgICAgICAgICAgMjIuMzk3
MistMC4xOTQ0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0MnggZmFzdGVyCiAgIHJlcGVhdC1tdWx0
aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE5MystMC4wMTg1ICAg
ICA/ICAgICAgMC4yMjY1Ky0wLjAxNTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzI1eCBzbG93ZXIK
ICAgcmVzdC1wYXJhbWV0ZXItY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICAgMC4y
MjkyKy0wLjAyMjEgICAgICAgICAgICAwLjIyMzArLTAuMDEyMCAgICAgICAgICBtaWdodCBiZSAx
LjAyNzd4IGZhc3RlcgogICByaWNoYXJkcy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgIDY2LjM0NzMrLTAuODQ0MCAgICAgICAgICAgNjUuOTU3NCstMC42ODIwICAgICAg
ICAKICAgcmljaGFyZHMtdHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4yNzYzKy0wLjAxMDkgICAgID8gICAgICAwLjI3NzYrLTAuMDA5MiAgICAgICAgPwogICBzY29w
ZWQtYXJndW1lbnRzLWxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjEzODYrLTAu
MTAzNCAgICAgICAgICAgIDguMTE1MCstMC4xMDM1ICAgICAgICAKICAgc2NvcGVkLWFyZ3VtZW50
cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNy45Nzk4Ky0wLjE2NzAgICAgICAg
ICAgICA3Ljk2ODErLTAuMDgzMCAgICAgICAgCiAgIHNjb3BlZC1hcmd1bWVudHMtcG9zc2libHkt
b3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOC44NTAyKy0wLjExMTIgICAgICAgICAgICA4Ljc5NTArLTAuMTE1
OSAgICAgICAgCiAgIHNlYWwtYW5kLWRvLXdvcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTYuNTM2MCstMC4xODk5ICAgICAgICAgICAxNi4zODYyKy0wLjE2NjYgICAgICAgIAog
ICBzZXQtZm9yLWVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk1
NDErLTAuMTM4NSAgICAgICAgICAgIDQuODA0MistMC4wNzUxICAgICAgICAgIG1pZ2h0IGJlIDEu
MDMxMnggZmFzdGVyCiAgIHNldC1mb3Itb2YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTUuMTg3MystMC4zNTIyICAgICA/ICAgICAxNS41NjIwKy0wLjIzNDAgICAgICAg
ID8gbWlnaHQgYmUgMS4wMjQ3eCBzbG93ZXIKICAgc2V0dGVyLXByb3RvdHlwZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4yNDEyKy0wLjAxODUgICAgID8gICAgICAwLjI0NjUr
LTAuMDE2NCAgICAgICAgPyBtaWdodCBiZSAxLjAyMTh4IHNsb3dlcgogICBzZXR0ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjk0MjYrLTAuMDkxMyAgICAg
PyAgICAgIDMuOTQ2OCstMC4wNzMzICAgICAgICA/CiAgIHNpbXBsZS1hY3RpdmF0aW9uLWRlbW8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcuMTAxMystMC4zMjg5ICAgICAgICAgICAyNy4w
NTMwKy0wLjI5NTcgICAgICAgIAogICBzaW1wbGUtZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjIzNzErLTAuMDE2NSAgICAgICAgICAgIDAuMjMwOCstMC4wMTk1
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3NnggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVz
dGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODY4NCstMC4wOTg4ICAgICAgICAgICAg
NC44NDI1Ky0wLjA4MDEgICAgICAgIAogICBzaW1wbGUtcG9seS1jYWxsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLjU0NTUrLTAuMDMzMCAgICAgICAgICAgIDEuNTM4MystMC4w
Mjk0ICAgICAgICAKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmctZmFpbCAgICAgICAgICAg
ICAgICAgICAgNi4zOTg3Ky0wLjE2NTggICAgID8gICAgICA2LjQ0NjUrLTAuMDg5MSAgICAgICAg
PwogICBzaW1wbGUtcmVnZXhwLWV4ZWMtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAgIDIy
LjgwMDkrLTAuNDMyMyAgICAgICAgICAgMjIuNjE3MCstMC41NzM0ICAgICAgICAKICAgc2ltcGxl
LXJlZ2V4cC10ZXN0LWZvbGRpbmctZmFpbC13aXRoLWhvaXN0ZWQtcmVnZXhwICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMDgyNistMC4w
ODk2ICAgICBeICAgICAxMS4zMTY5Ky0wLjQ1NTIgICAgICAgIF4gZGVmaW5pdGVseSAxLjA2Nzd4
IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsICAgICAgICAgICAgICAg
ICAgIDE5Ljc0NjMrLTAuMjMyNyAgICAgICAgICAgMTkuNDAwOCstMC4zMDM4ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE3OHggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLXdpdGgt
aG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMi4zMzgxKy0wLjEyNTQgICAgIF4gICAgIDEyLjA3MTYrLTAuMTA1NiAg
ICAgICAgXiBkZWZpbml0ZWx5IDEuMDIyMXggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1m
b2xkaW5nICAgICAgICAgICAgICAgICAgICAgICAgMjAuOTc2NistMC42MDgwICAgICAgICAgICAy
MC44ODA1Ky0wLjEyMTQgICAgICAgIAogICBzaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA3Ljg4NTIrLTAuMTA5MiAgICAgICAgICAgIDcuODM2MSstMC4w
OTc4ICAgICAgICAKICAgc2luZ2xldG9uLXNjb3BlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4yMzgyKy0wLjAxODkgICAgICAgICAgICAwLjIyODMrLTAuMDEyMSAgICAgICAg
ICBtaWdodCBiZSAxLjA0MzN4IGZhc3RlcgogICBzaW5rLWZ1bmN0aW9uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjIyMjErLTAuMDA3MSAgICAgPyAgICAgIDAuMjI5MSst
MC4wMTIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMnggc2xvd2VyCiAgIHNpbmstaHVnZS1hY3Rp
dmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMxMistMC4wMTAxICAgICAg
ICAgICAgMC4yMjc5Ky0wLjAxMTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ3eCBmYXN0ZXIKICAg
c2lua2FibGUtbmV3LW9iamVjdC1kYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMzUz
Ky0wLjAxNjIgICAgICAgICAgICAwLjIyODYrLTAuMDA3NyAgICAgICAgICBtaWdodCBiZSAxLjAy
OTN4IGZhc3RlcgogICBzaW5rYWJsZS1uZXctb2JqZWN0LXRha2VuICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjIyNzUrLTAuMDE4NCAgICAgPyAgICAgIDAuMjQxNSstMC4wMjA2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDYxNXggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMjM1MSstMC4wMTU1ICAgICAgICAgICAgMC4yMTk1Ky0w
LjAxNjQgICAgICAgICAgbWlnaHQgYmUgMS4wNzEzeCBmYXN0ZXIKICAgc2xvdy1hcnJheS1wcm9m
aWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMy42OTgxKy0wLjEwODEgICAgID8g
ICAgICAzLjcwMzgrLTAuMDc1MiAgICAgICAgPwogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE4MDcrLTAuMDQyMSAgICAgPyAgICAgIDMuMjA0
MCstMC4wNzYzICAgICAgICA/CiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjIuMTA1OCstMC4zMzIyICAgICAgICAgICAyMS44MzkyKy0wLjExNzMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTIyeCBmYXN0ZXIKICAgc29ydGluZy1iZW5jaG1hcmsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC4zMTUxKy0wLjQ4MDUgICAgICAgICAgIDI0
LjA1OTcrLTAuMzUwMSAgICAgICAgICBtaWdodCBiZSAxLjAxMDZ4IGZhc3RlcgogICBzcGFyc2Ut
Y29uZGl0aW9uYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjM0OTcrLTAuMDM1
NiAgICAgPyAgICAgIDEuMzc0NystMC4wMzA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4Nnggc2xv
d2VyCiAgIHNwbGljZS10by1yZW1vdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjEuNTYzNistMC4yNjEzICAgICA/ICAgICAyMS41OTEwKy0wLjYxNjQgICAgICAgID8KICAgc3Ry
Y2F0LWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMjY3Ky0w
LjAyMjcgICAgICAgICAgICAwLjIxMDErLTAuMDA1OCAgICAgICAgICBtaWdodCBiZSAxLjA3OTN4
IGZhc3RlcgogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjIzNjgrLTAuMDIyNyAgICAgICAgICAgIDAuMjIxMystMC4wMDYyICAgICAgICAgIG1p
Z2h0IGJlIDEuMDY5OXggZmFzdGVyCiAgIHN0cmljdC1vc3ItZW50cnkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQuNDQwNystMC4xNTUzICAgICAgICAgICAxNC4zNjU3Ky0wLjEx
MTAgICAgICAgIAogICBzdHJpbmctY2hhci1jb2RlLWF0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3LjU3ODMrLTAuMjA0OSAgICAgPyAgICAgMTcuNTc4MystMC4xNjIzICAgICAgICA/
CiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
MjgwMystMC4wOTQ5ICAgICAgICAgICAgNi4yMTg5Ky0wLjE1NDcgICAgICAgIAogICBzdHJpbmct
Y29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEyMjYrLTAuMTA2
NyAgICAgICAgICAgIDYuMDg4MSstMC4xMDMxICAgICAgICAKICAgc3RyaW5nLWNvbmNhdC1wYWly
LXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgMy43MDU0Ky0wLjA1MDkgICAgID8gICAg
ICAzLjc0MTIrLTAuMDMxOSAgICAgICAgPwogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEzLjU2NTQrLTAuMTAxOSAgICAgPyAgICAgMTMuNzc5Mist
MC4yMTUwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1OHggc2xvd2VyCiAgIHN0cmluZy1jb25zLXJl
cGVhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMzEzMystMC4xMDU2ICAgICA/
ICAgICAxMS40MjM5Ky0wLjE0MDMgICAgICAgID8KICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS42OTM2Ky0wLjEzNjEgICAgID8gICAgIDExLjcw
ODgrLTAuMTA1MiAgICAgICAgPwogICBzdHJpbmctZXF1YWxpdHkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIwLjM0MTcrLTAuMjAyNCAgICAgICAgICAgMjAuMjI5NCstMC4xODE4
ICAgICAgICAKICAgc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMC42NjQwKy0wLjIwMTQgICAgICAgICAgIDEwLjYzNjErLTAuMTE1OCAgICAgICAgCiAg
IHN0cmluZy1nZXQtYnktdmFsLWJpZy1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgIDYuMzMx
NSstMC4xNDE5ICAgICA/ICAgICAgNi4zODE1Ky0wLjEyOTAgICAgICAgID8KICAgc3RyaW5nLWdl
dC1ieS12YWwtb3V0LW9mLWJvdW5kcy1pbnNhbmUgICAgICAgICAgICAgNS4wMDA2Ky0wLjA5NzAg
ICAgIF4gICAgICA0LjY3NzQrLTAuMDUzOSAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDY5MXggZmFz
dGVyCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAg
IDUuNjkyNSstMC4wNjY5ICAgICA/ICAgICAgNS43MDU1Ky0wLjE2MjIgICAgICAgID8KICAgc3Ry
aW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43MjEyKy0w
LjA5OTggICAgICAgICAgICAyLjY1MDIrLTAuMDgzMyAgICAgICAgICBtaWdodCBiZSAxLjAyNjh4
IGZhc3RlcgogICBzdHJpbmctaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjIzNjUrLTAuMDM1MSAgICAgPyAgICAgIDIuMjU3MistMC4wNDc1ICAgICAgICA/CiAg
IHN0cmluZy1sb25nLWlkZW50LWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgMTYuNzIz
MystMC4xNDkxICAgICA/ICAgICAxNi43MzU0Ky0wLjEzOTQgICAgICAgID8KICAgc3RyaW5nLW91
dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTcyKy0wLjAxMDAg
ICAgICAgICAgICAwLjIxNTUrLTAuMDExMiAgICAgICAgCiAgIHN0cmluZy1wcm90b3R5cGUtc2Vh
cmNoLW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzc1OCstMC4wMzIwICAgICAgICAgICAgMS4z
MjUzKy0wLjA0MDEgICAgICAgICAgbWlnaHQgYmUgMS4wMzgxeCBmYXN0ZXIKICAgc3RyaW5nLXBy
b3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjQwNistMC4wMTkxICAg
ICA/ICAgICAgMC4yNDU5Ky0wLjAxNTAgICAgICAgID8gbWlnaHQgYmUgMS4wMjIyeCBzbG93ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjMz
MystMC4wMTAyICAgICA/ICAgICAgMC4yMzM2Ky0wLjAxNjMgICAgICAgID8KICAgc3RyaW5nLXBy
b3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI5NCstMC4wMTI0ICAg
ICAgICAgICAgMC4yMTc1Ky0wLjAwODggICAgICAgICAgbWlnaHQgYmUgMS4wNTQ2eCBmYXN0ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjc5MzEr
LTAuMDYxMCAgICAgPyAgICAgIDIuODIxMSstMC4wNjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEw
MHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMjgwNCstMC4wMTQ5ICAgICA/ICAgICAgMC4yODE2Ky0wLjAxMjggICAgICAgID8KICAg
c3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4z
Mzk2Ky0wLjAzNTkgICAgICAgICAgICAwLjMyMTYrLTAuMDEyNCAgICAgICAgICBtaWdodCBiZSAx
LjA1NjN4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1nbG9iYWwgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4zMTg4Ky0wLjAxMjMgICAgID8gICAgICAwLjMyODErLTAuMDIxMyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyOTB4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0
LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzMyOSstMC4wMTgwICAgICA/
ICAgICAgMC4zMzQ0Ky0wLjAxODYgICAgICAgID8KICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzM5MystMC4wMjA1ICAgICA/ICAg
ICAgMC4zNTQwKy0wLjA0MTAgICAgICAgID8gbWlnaHQgYmUgMS4wNDM1eCBzbG93ZXIKICAgc3Ry
aW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzE2
OSstMC4wMDc4ICAgICA/ICAgICAgMC4zMzQ0Ky0wLjAyMTggICAgICAgID8gbWlnaHQgYmUgMS4w
NTUyeCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwLjMzNjgrLTAuMDIxNiAgICAgICAgICAgIDAuMzM0MistMC4wMTk3ICAg
ICAgICAKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC4zMjk3Ky0wLjAxMzQgICAgID8gICAgICAwLjM0NjgrLTAuMDE4NCAgICAgICAgPyBtaWdodCBi
ZSAxLjA1MTh4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LWFyaXRoICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDI3LjQwMzErLTAuMzczOCAgICAgICAgICAgMjYuODY5NystMC4zMDYyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE5OXggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29s
dmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDUuNzkyNSstMC4wODY2ICAgICA/ICAgICAgNS44
NDk1Ky0wLjE2ODUgICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5nLW5vLWlu
bGluZSAgICAgICAgICAgICAgMC4yMTU5Ky0wLjAwOTQgICAgID8gICAgICAwLjIxOTErLTAuMDEy
NyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTJ4IHNsb3dlcgogICBzdHJpbmctcmVwZWF0LW5vdC1y
ZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICA4Ljg5NzIrLTAuMDk5MyAgICAgPyAgICAg
IDguOTczMistMC4xNDkxICAgICAgICA/CiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nLWZpeGVk
ICAgICAgICAgICAgICAgICAgICAgMzMuMDI5OCstMC41MTc4ICAgICAgICAgICAzMi44MDk0Ky0w
LjM5MzAgICAgICAgIAogICBzdHJpbmctcmVwZWF0LXJlc29sdmluZy1uby1pbmxpbmUgICAgICAg
ICAgICAgICAgICAwLjIzOTArLTAuMDEzMSAgICAgICAgICAgIDAuMjI5MistMC4wMTM3ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDQyOXggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzkuODEwOCstMC4zNjY2ICAgICA/ICAgICAzOS44OTY3
Ky0wLjQzMzggICAgICAgID8KICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtbm90LXJlc29sdmluZyAg
ICAgICAgICAgICAgICAgOS40MTM0Ky0wLjE3OTMgICAgICAgICAgICA5LjMyMTQrLTAuMTQ1OSAg
ICAgICAgCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29sdmluZyAgICAgICAgICAgICAgICAg
ICAgIDkuNTM3NSstMC4xNDAzICAgICA/ICAgICAgOS41NDg1Ky0wLjE1ODEgICAgICAgID8KICAg
c3RyaW5nLXJlcGVhdC1zbWFsbC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgNy41Mjg3
Ky0wLjE0MDUgICAgID8gICAgICA3LjU5MzArLTAuMjI0NCAgICAgICAgPwogICBzdHJpbmctcmVw
ZWF0LXNtYWxsLXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgIDM5Ljk3MzgrLTAuNjAxOSAg
ICAgICAgICAgMzkuNzc0NistMC4yMTA1ICAgICAgICAKICAgc3RyaW5nLXJlcGxhY2UtZW1wdHkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC45ODI3Ky0wLjEzOTcgICAgID8gICAgIDE5
LjEzODUrLTAuMjg1NyAgICAgICAgPwogICBzdHJpbmctcmVwbGFjZS1nZW5lcmljICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDY2LjE0MzMrLTAuNDk5OSAgICAgISAgICAgNjcuMTg3NistMC4y
MzAwICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTU4eCBzbG93ZXIKICAgc3RyaW5nLXJlcGxhY2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4xNjI3Ky0wLjE3NTUgICAgICAg
ICAgIDE5LjEzMzArLTAuMTgxMSAgICAgICAgCiAgIHN0cmluZy1yb3BlLXdpdGgtb2JqZWN0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjI1NistMC4wMDk3ICAgICA/ICAgICAgMC4yMzEw
Ky0wLjAxNjYgICAgICAgID8gbWlnaHQgYmUgMS4wMjQyeCBzbG93ZXIKICAgc3RyaW5nLXN1YiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NC42NjA4Ky0wLjY1NzggICAg
ICAgICAgIDQ0LjE1NjIrLTAuNDM2OSAgICAgICAgICBtaWdodCBiZSAxLjAxMTR4IGZhc3Rlcgog
ICBzdHJpbmctdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE5
ODQrLTAuMDQ0NCAgICAgPyAgICAgIDMuMjMyOSstMC4wNDc3ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwOHggc2xvd2VyCiAgIHN0cmluZy10cmFuc2NvZGluZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjUuNDUyNistMC4yOTc2ICAgICAgICAgICAyNC44ODI1Ky0wLjI4MzQgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjI5eCBmYXN0ZXIKICAgc3RyaW5nLXZhci1lcXVhbGl0eSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzOC41MjYwKy0wLjQ1NTggICAgICAgICAgIDM4LjI1NDcr
LTAuNDI1NSAgICAgICAgCiAgIHN0cnVjdHVyZS1ob2lzdC1vdmVyLXRyYW5zaXRpb25zICAgICAg
ICAgICAgICAgICAgIDQuMjA3NistMC4wODkxICAgICA/ICAgICAgNC4yNjk3Ky0wLjA1OTQgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTQ3eCBzbG93ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0Ny4yMzI4Ky0wLjM3MjggICAgID8gICAgIDQ3LjMx
NDgrLTAuNDE4MSAgICAgICAgPwogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDQ4LjQ5OTkrLTAuNTYzMCAgICAgPyAgICAgNDkuNDIxNystMS4yNzE2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5MHggc2xvd2VyCiAgIHN1YnN0cmluZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIuMjc4MystMC40OTE0ICAgICA/ICAgICA1
Mi41NTUxKy0wLjQ4NTUgICAgICAgID8KICAgc3dpdGNoLWNoYXItY29uc3RhbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi42ODgxKy0wLjA3ODYgICAgICAgICAgICAyLjY3NjMrLTAu
MDg1NyAgICAgICAgCiAgIHN3aXRjaC1jaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDYuMTYzOSstMC4xNDA0ICAgICA/ICAgICAgNi4yNTM5Ky0wLjEwNjQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTQ2eCBzbG93ZXIKICAgc3dpdGNoLWNvbnN0YW50ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC40MDk3Ky0wLjA5MzUgICAgIF4gICAgICA4LjE5MjQr
LTAuMDc0MCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDI2NXggZmFzdGVyCiAgIHN3aXRjaC1zdHJp
bmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAgICAgICAgICAgMTguNTQ3OSstMC4xNjUwICAg
ICAgICAgICAxOC40NTgwKy0wLjE0NjEgICAgICAgIAogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJp
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LjU4MjgrLTAuMTE1OCAgICAgPyAgICAgMTYu
NjI3MystMC4yMDAwICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtdmFyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTguMTAyNystMC4xMjc1ICAgICA/ICAgICAxOC4yMTU2Ky0wLjEx
MjUgICAgICAgID8KICAgc3dpdGNoLXN0cmluZy1iYXNpYyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxNS4yMTg1Ky0wLjI0MTcgICAgICAgICAgIDE1LjEzMzcrLTAuMTkzNSAgICAgICAg
CiAgIHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMjMu
NjkxMistMC4zMTM0ICAgICAgICAgICAyMy42MTMzKy0wLjE5MzkgICAgICAgIAogICBzd2l0Y2gt
c3RyaW5nLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgICAgIDE4Ljg4NzErLTAuMTQ0
NCAgICAgPyAgICAgMTguOTIxMCstMC4wODU3ICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctbGVu
Z3RoLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgMTQuNTg0NystMC4xNDE5ICAgICA/ICAg
ICAxNC42MTkzKy0wLjEzNTQgICAgICAgID8KICAgc3dpdGNoLXN0cmluZy1zaG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxNC41MzU2Ky0wLjEzNDcgICAgID8gICAgIDE0LjU5MTYr
LTAuMTMyMSAgICAgICAgPwogICBzd2l0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDExLjU2ODMrLTAuNjQyNyAgICAgPyAgICAgMTIuMDg0MystMC42ODc5ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ0Nnggc2xvd2VyCiAgIHN5bWJvbC10b3N0cmluZ3RhZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjc4NistMC4wMTAxICAgICA/ICAgICAgMC4y
ODk1Ky0wLjAxODMgICAgICAgID8gbWlnaHQgYmUgMS4wMzkyeCBzbG93ZXIKICAgdGVhci1vZmYt
YXJndW1lbnRzLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgNS45NTc3Ky0wLjE2MjUg
ICAgICAgICAgICA1LjkzNDErLTAuMTIxMiAgICAgICAgCiAgIHRlYXItb2ZmLWFyZ3VtZW50cyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMjMwOCstMC4yMjY1ICAgICAgICAgICAg
Ny4xMzc3Ky0wLjExMDAgICAgICAgICAgbWlnaHQgYmUgMS4wMTMweCBmYXN0ZXIKICAgdGVtcG9y
YWwtc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy4zMjA3Ky0wLjI0
ODUgICAgID8gICAgIDEzLjY2ODIrLTAuMjc3MiAgICAgICAgPyBtaWdodCBiZSAxLjAyNjF4IHNs
b3dlcgogICB0by1pbnQzMi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDE1LjY5MTgrLTAuMTcyMSAgICAgICAgICAgMTUuNjE3NistMC4xNTE3ICAgICAgICAKICAgdG8t
bnVtYmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljk5MzQrLTAu
MDk1MiAgICAgPyAgICAgIDUuMDkwMystMC4xMTY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5NHgg
c2xvd2VyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1vbmx5LW51bWJlciAgICAgICAgICAgICAg
ICAgIDAuNzk3MistMC4wNDk3ICAgICA/ICAgICAgMC43OTkxKy0wLjAyMTIgICAgICAgID8KICAg
dG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5nICAgICAgICAgICAgICAgICAgMi4zMTk5
Ky0wLjA3NjcgICAgID8gICAgICAyLjMyMzErLTAuMDkxMSAgICAgICAgPwogICB0by1udW1iZXIt
Y29uc3RydWN0b3Itc3RyaW5nLW51bWJlci1zdHJpbmctbnVtYmVyICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjY3NistMC4xMTA5ICAg
ICA/ICAgICAgNC4yNzE1Ky0wLjA2NDQgICAgICAgID8KICAgdG8tbnVtYmVyLW51bWJlci1zdHJp
bmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgNC4zNzY2Ky0wLjA5MTggICAgICAgICAgICA0
LjM1NTUrLTAuMTEwMiAgICAgICAgCiAgIHRvLW51bWJlci1vbmx5LW51bWJlciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNjA4NystMC4wODc5ICAgICAgICAgICAgMC41ODYyKy0wLjA5
MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMzg1eCBmYXN0ZXIKICAgdG8tbnVtYmVyLW9ubHktc3Ry
aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yOTYzKy0wLjEwNjkgICAgICAgICAg
ICAyLjI4MTcrLTAuMDUwNSAgICAgICAgCiAgIHRvLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmlu
Zy1udW1iZXIgICAgICAgICAgICAgIDQuMTkzMistMC4wNzI0ICAgICA/ICAgICAgNC4yNzI5Ky0w
LjA5OTQgICAgICAgID8gbWlnaHQgYmUgMS4wMTkweCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1i
eS12YWwtY2xvbmVkLWFyZ3VtZW50cyAgICAgICAgICAgICAgNy43NTMwKy0wLjQxODIgICAgID8g
ICAgICA4LjIyMDUrLTAuNDA0NiAgICAgICAgPyBtaWdodCBiZSAxLjA2MDN4IHNsb3dlcgogICB0
cnktY2F0Y2gtZ2V0LWJ5LXZhbC1kaXJlY3QtYXJndW1lbnRzICAgICAgICAgICAgICA0LjM4NjIr
LTAuMTYzMCAgICAgPyAgICAgIDQuNTU0NystMC4xNjM1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4
NHggc2xvd2VyCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLXNjb3BlZC1hcmd1bWVudHMgICAgICAg
ICAgICAgMTAuNTc4OCstMC4yNzc4ICAgICAgICAgICAxMC40MDA0Ky0wLjIyNDYgICAgICAgICAg
bWlnaHQgYmUgMS4wMTcxeCBmYXN0ZXIKICAgdHJ5LWdldC1ieS1pZC1iYXNpYyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4yODI0Ky0wLjAyNzYgICAgICAgICAgICAwLjI2NDgrLTAu
MDA4NyAgICAgICAgICBtaWdodCBiZSAxLjA2NjZ4IGZhc3RlcgogICB0cnktZ2V0LWJ5LWlkLXBv
bHltb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI3MjkrLTAuMDA5OCAgICAgICAg
ICAgIDAuMjYzNSstMC4wMTA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1NHggZmFzdGVyCiAgIHR5
cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAgICAgICAgIDAuMjMwNCst
MC4wMTM1ICAgICAgICAgICAgMC4yMjU3Ky0wLjAxMTkgICAgICAgICAgbWlnaHQgYmUgMS4wMjEx
eCBmYXN0ZXIKICAgdHlwZWQtYXJyYXktc3ViYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMC4yNjcwKy0wLjAxNTMgICAgID8gICAgICAwLjI2NzIrLTAuMDE3NiAgICAgICAgPwog
ICB1bmRlZmluZWQtcHJvcGVydHktYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgMzY3LjY4
MzIrLTIuNTg4OSAgICAgPyAgICAzNjcuNzY2NCstMy4xODg4ICAgICAgICA/CiAgIHVuZGVmaW5l
ZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzQwMCstMC4wNDY3
ICAgICAhICAgICAgMy40NDMyKy0wLjA1MzcgICAgICAgICEgZGVmaW5pdGVseSAxLjAzMDl4IHNs
b3dlcgogICB1bnByb2ZpbGVkLWxpY20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDExLjQ4MzkrLTAuMTM4MCAgICAgPyAgICAgMTEuNTUzMistMC4xMzI5ICAgICAgICA/CiAgIHVu
dHlwZWQtc3RyaW5nLWZyb20tY2hhci1jb2RlICAgICAgICAgICAgICAgICAgICAgMTIuMjA0Nist
MC4wOTQ5ICAgICBeICAgICAxMS42Nzc3Ky0wLjEwOTggICAgICAgIF4gZGVmaW5pdGVseSAxLjA0
NTF4IGZhc3RlcgogICB2OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAgICAgICAgICAg
ICAgICAgIDQ1LjI2MTcrLTAuNzc4NiAgICAgICAgICAgNDQuNjIzNistMC4zNjc2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE0M3ggZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoLWhp
Z2gtZnJlcXVlbmN5LXRocm93cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjMxMTkrLTAuMDIwMyAgICAgICAgICAgIDAuMzA2MistMC4w
MTY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4NnggZmFzdGVyCiAgIHY4LXJheXRyYWNlLXdpdGgt
dHJ5LWNhdGNoICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzA4NystMC4wMjE4ICAgICAgICAg
ICAgMC4zMDQzKy0wLjAxMTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ2eCBmYXN0ZXIKICAgdjgt
cmVnZXhwLXNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NS44MTI2Ky0w
LjUyMjYgICAgID8gICAgIDc2LjU1MDkrLTAuNzg0OSAgICAgICAgPwogICB2YXJhcmdzLWNhbGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIyMDErLTAuMDA5NyAgICAg
PyAgICAgIDAuMjI3MCstMC4wMTQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxMnggc2xvd2VyCiAg
IHZhcmFyZ3MtY29uc3RydWN0LWlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjE3
MystMC4wMDkwICAgICAgICAgICAgMC4yMTcwKy0wLjAwOTQgICAgICAgIAogICB2YXJhcmdzLWNv
bnN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjIxNzUrLTAuMDA5MyAg
ICAgICAgICAgIDAuMjE1OSstMC4wMTA3ICAgICAgICAKICAgdmFyYXJncy1pbmxpbmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTgyKy0wLjAwODUgICAgID8gICAgICAw
LjIxODcrLTAuMDExNCAgICAgICAgPwogICB2YXJhcmdzLXN0cmljdC1tb2RlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjIxMTYrLTAuMDA3MyAgICAgPyAgICAgIDAuMjIwOCstMC4w
MTM0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQzOHggc2xvd2VyCiAgIHZhcmFyZ3MgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMjIwNistMC4wMTg0ICAgICAgICAg
ICAgMC4yMTQ4Ky0wLjAwOTggICAgICAgICAgbWlnaHQgYmUgMS4wMjY2eCBmYXN0ZXIKICAgd2Vp
cmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAgMC4yMTc4Ky0w
LjAwOTYgICAgICAgICAgICAwLjIxNTMrLTAuMDEwNCAgICAgICAgICBtaWdodCBiZSAxLjAxMTZ4
IGZhc3RlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMy42MDk2Ky0wLjAwNzUgICAgICAgICAgICAzLjYwNTgrLTAuMDA1NiAgICAgICAgICBt
aWdodCBiZSAxLjAwMTB4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAgICAgICAgICAgICAgICAgIG5ldyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQXNtQmVuY2g6CiAgIGJpZ2Zp
Yi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDYuNzM3MCstMTAu
ODkyNCAgICAgICAgIDUzNC4yNjE2Ky0xMy4zNjY1ICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBm
YXN0ZXIKICAgY3JheS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQ0Ni45MjM5Ky00LjcxNjQgICAgID8gICAgNDQ2Ljk1NDcrLTQuNDYzNSAgICAgICAgPwogICBk
cnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjIzLjcwNzIr
LTM1LjA2NjQgICAgICAgICA1ODMuNjU2MystNDMuMjk4NSAgICAgICAgIG1pZ2h0IGJlIDEuMDY4
NnggZmFzdGVyCiAgIEZsb2F0TU0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4MTMuNDg0NystOC41OTQ0ICAgICA/ICAgIDgxNy42MDAwKy0xNy44ODgzICAgICAgID8K
ICAgZ2NjLWxvb3BzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUyOC45
NTg0Ky03LjI0ODggICAgID8gICA0NTMxLjY1NzgrLTIwLjA4NzggICAgICAgPwogICBuLWJvZHku
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQ0LjA2MTMrLTYuMDMz
MCAgICAgICAgIDEwMjcuNTEyNystMTYuNDI0NiAgICAgICAgIG1pZ2h0IGJlIDEuMDE2MXggZmFz
dGVyCiAgIFF1aWNrc29ydC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
ODguNDEzOSstMy44NTk3ICAgICAgICAgIDQ4NC4yNDMwKy0yLjE5OTMgICAgICAgIAogICBzdGVw
YW5vdl9jb250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAzNzA5LjI0ODArLTEy
Ljc2OTEgICAgICAgIDM2OTMuNjY5OCstMTEuNjE0NCAgICAgICAKICAgVG93ZXJzLmMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5Ni4zMzY4Ky0xLjQ2MjcgICAgID8g
ICAgMjk4LjAwMjYrLTIuODc3MSAgICAgICAgPwoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDg3OS4xMjY1Ky01LjgxOTYgICAgICAgICAgODY4LjUz
MTArLTguMDk1NyAgICAgICAgICBtaWdodCBiZSAxLjAxMjJ4IGZhc3RlcgoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlICAgICAg
ICAgICAgICAgICAgICAgIG5ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKRFNQOgogICBmaWx0cnItcG9zdGVyaXplLXRpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMwLjM3MDUrLTAuMjk3MSAgICAgPyAgICAgMzAuNDk5NystMC4yMjQ3ICAgICAgICA/CiAg
IGZpbHRyci10aW50LWNvbnRyYXN0LXNhdC1icmlnaHQgICAgICAgICAgICAgICAgICAgNDQuNTU4
OSstMC41NDc4ICAgICAgICAgICA0NC4zODM3Ky0wLjI3MzcgICAgICAgIAogICBmaWx0cnItdGlu
dC1zYXQtYWRqLWNvbnRyLW11bHQgICAgICAgICAgICAgICAgICAgIDQ5Ljc1NjgrLTAuMzU2NyAg
ICAgPyAgICAgNDkuNzY2NystMC41ODkyICAgICAgICA/CiAgIGZpbHRyci1ibHVyLW92ZXJsYXkt
c2F0LWNvbnRyICAgICAgICAgICAgICAgICAgICAxMDcuNzQ3MystMS4wODE1ICAgICA/ICAgIDEw
OC4xOTE1Ky0xLjM3MTQgICAgICAgID8KICAgZmlsdHJyLXNhdC1ibHVyLW11bHQtc2hhcnBlbi1j
b250ciAgICAgICAgICAgICAgIDEyOS4wMDc5Ky04LjQyODIgICAgICAgICAgMTI1LjI5MDYrLTgu
MTcxMSAgICAgICAgICBtaWdodCBiZSAxLjAyOTd4IGZhc3RlcgogICBmaWx0cnItc2VwaWEtYmlh
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3Ljk3NzErLTAuMjg1MyAgICAgICAg
ICAgMjcuODI4NistMC4yOTUwICAgICAgICAKICAgcm91dGU5LXZwOCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4NSAgICAgMTU5MC4zODYyKy0yNC4zNjY5ICAgID8gICAxNTkwLjk2OTEr
LTMuMzY1NyAgICAgICAgPwogICBzdGFyZmllbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHg1ICAgICAxMjcyLjEyNTcrLTM3LjU5OTIgICAgPyAgIDEyOTguMzk1MistMzEuNzQ0NSAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIwN3ggc2xvd2VyCiAgIGJlbGxhcmQtanNsaW51eCAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDUgICAgIDM2MzguNTAwMCstNTAuMjY3OSAgICA/ICAgMzY1My42
MDAwKy0yOC44ODk2ICAgICAgID8KICAgenluYXBzLXF1YWtlMyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4NSAgICAgIDU3NS4wMDcwKy0zLjk3MDUgICAgICAgICAgNTcwLjU1NzIrLTUuMjQ5
MiAgICAgICAgCiAgIHp5bmFwcy1tYW5kZWxicm90ICAgICAgICAgICAgICAgICAgICAgICAgeDUg
ICAgICA0OTUuNDM3NystNS42ODI1ICAgICA/ICAgIDQ5OS40MTQ0Ky01LjkxMTggICAgICAgID8K
ICAgYW1tb2pzLWFzbS1qcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4NSAgICAgICA2OC4y
NjE2Ky0xLjYxODcgICAgID8gICAgIDcwLjMxOTQrLTEuNjQyMyAgICAgICAgPyBtaWdodCBiZSAx
LjAzMDF4IHNsb3dlcgogICBhbW1vanMtcmVndWxhci1qcyAgICAgICAgICAgICAgICAgICAgICAg
IHg1ICAgICAgIDcwLjczMTIrLTEuMzQ2OSAgICAgPyAgICAgNzMuMDA1MistNS4yMjEyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDMyMnggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzcyLjk4NjArLTIuNDYwOSAgICAgPyAgICAzNzYuNTI4
MistMi44NTc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA5NXggc2xvd2VyCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgICAgICAg
ICAgICAgICAgICAgICAgbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IApDb21wcmVzc2lvbkJlbmNoOgogICBodWZmbWFuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYxLjczMzcrLTAuNTI5MiAgICAgPyAgICAgNjEuNzUyOCstMC40OTQx
ICAgICAgICA/CiAgIGFyaXRobWV0aWMtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNDYuNjc3MystMy4wNTE1ICAgICAgICAgIDM0NS4wNDY3Ky0zLjMwMjcgICAgICAgIAog
ICBhcml0aG1ldGljLXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgyLjc2
NjMrLTMuOTMzNiAgICAgICAgICAyODEuMzA0NistMy4yMzM2ICAgICAgICAKICAgYXJpdGhtZXRp
Yy1jb21wbGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgIDI4MS41OTI4Ky00Ljk0OTAg
ICAgICAgICAgMjc4LjQwMjErLTAuNzYwOCAgICAgICAgICBtaWdodCBiZSAxLjAxMTV4IGZhc3Rl
cgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAgICAgICAgMzUx
LjE3MjgrLTQuNTE5MCAgICAgPyAgICAzNTEuNzk1MistNC4xNzE2ICAgICAgICA/CiAgIGFyaXRo
bWV0aWMtcHJlY2lzZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICAzMzUuNTYwNistMS45
MjIwICAgICAgICAgIDMzNS4wMTY2Ky0yLjg2MzYgICAgICAgIAogICBhcml0aG1ldGljLXByZWNp
c2Utb3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgNDAwLjI2ODUrLTEuOTA4OSAgICAgPyAg
ICA0MDMuNTc2MCstNy43MjAyICAgICAgICA/CiAgIGFyaXRobWV0aWMtc2ltcGxlLW9yZGVyLTEg
ICAgICAgICAgICAgICAgICAgICAgICAzOTkuNTI1NSstNC4xOTkyICAgICA/ICAgIDQwMC4wMDQ2
Ky0zLjg0NjggICAgICAgID8KICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMiAgICAgICAgICAg
ICAgICAgICAgICAgIDQ1OS4wNjc3Ky04LjUwOTEgICAgICAgICAgNDUzLjM2MDYrLTEuODI0OSAg
ICAgICAgICBtaWdodCBiZSAxLjAxMjZ4IGZhc3RlcgogICBsei1zdHJpbmcgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc1LjA0NjUrLTUuODEzNCAgICAgICAgICAyNzQu
NDA2NCstNC4yNTU0ICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyODguODk0NystMS40MzM5ICAgICAgICAgIDI4OC4xNDc5Ky0wLjk5
MDYgICAgICAgICAgbWlnaHQgYmUgMS4wMDI2eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSAgICAgICAgICAgICAg
ICAgICAgICBuZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkdlb21l
YW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDU3LjcwMTkrLTAuMTA0OSAgICAgPyAgICAgNTcuNzY5MCstMC4x
MjA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAxMnggc2xvd2VyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287341</attachid>
            <date>2016-08-29 15:43:38 -0700</date>
            <delta_ts>2016-08-29 16:36:38 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>736134</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1NCBA
QAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAgKEpTQzo6
QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFj
a09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0
ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpjb25z
dHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbUhh
c0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxs
KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1
ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rp
b25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxi
YWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNwcDoKKyAgICAgICAgKGNy
ZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5cGVkQXJyYXlXaXRoU2l6
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbklzSFRNTEFs
bENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJpZXMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNp
emUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQ
cm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVk
U2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkdldEludGVybmFs
UHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxs
RnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29w
ZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlw
dENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4pOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlzT2JqZWN0KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVHlwZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFpbERlbGV0ZWQpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkQ2Fs
bDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9mVmFyYXJncyk6CisgICAg
ICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpz
aXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1c3RvbUdldHRlcjo6Y3Vz
dG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgor
ICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAgKGZ1bmN0aW9uUnVuKToK
KyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1bmN0aW9uTG9hZCk6Cisg
ICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25SZWFkRmlsZSk6
CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAgKGZ1bmN0aW9uVHJhbnNm
ZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1bGUpOgorICAgICAgICAo
ZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5jdGlvblNhbXBsaW5nUHJv
ZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlND
OjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwp
OgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheVdpdGhTaXpl
UXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oOgorICAgICAgICAo
SlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpjb25jYXRBcHBlbmRPbmUp
OgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNWYWx1
ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhz
OjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcpOgorICAgICAgICAoSlND
OjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAoSlNDOjpkYXRlUHJv
dG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRGdWxsWWVhcik6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcik6CisgICAgICAgIChK
U0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXRlKToKKyAgICAg
ICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJv
dG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RheSk6Cisg
ICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNaW51
dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbGxp
U2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChKU0M6OnNldE5ld1ZhbHVl
RnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6Cisg
ICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OnRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJv
d1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTVR5cGVFcnJvcik6
CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcik6CisgICAgICAg
IChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRocm93VHlwZUVycm9yKToK
KyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJy
b3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25GdXp6LmNw
cDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJvd091dE9mTWVtb3J5RXJy
b3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgIChK
U0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6CisgICAgICAgICogcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpmdW5jdGlvblByb3Rv
RnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xs
YXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3JQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0
KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVk
T3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6CisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51
bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5nT3B0aW9uKToKKyAgICAg
ICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZUxv
Y2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRMb2NhbGVzKToKKyAgICAg
ICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Oml0ZXJh
dG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgorICAgICAgICAoSlNDOjpj
cmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yRm9ySXRl
cmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHV0KToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAgICAgICAgKEpTQzo6SlNB
cnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAg
KEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5QnVmZmVyKToKKyAgICAg
ICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZm
ZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNl
KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6cHV0
VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmdTbG93
Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpy
ZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3Bw
OgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldERhdGEpOgorICAgICAg
ICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ1ZmZl
cik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0
cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAg
ICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc6OnNldEluZGV4KToK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0Zyb21J
dGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KToKKyAgICAgICAg
KiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZVVuaW5pdGlhbGl6ZWQp
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dmFsaWRh
dGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+
Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAgICAgICogcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlND
OjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0
SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0
dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpkZWNvZGUpOgorICAgICAg
ICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50
c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b0dldHRlcik6
CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6CisgICAgICAgICogcnVudGlt
ZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVFbnZpcm9u
bWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNv
cmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3JkOjps
aW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRp
b25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgIChKU0M6OldhbGtl
cjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJzZSk6CisgICAgICAgIChK
U0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2sp
OgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5j
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJl
eW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjp2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omdl
dE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpj
cmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU09i
amVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZyb21BcnJheUxpa2UpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0UHJvbWlzZSk6
CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWVJdGVyYXRvckZ1
bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0J1
aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpidWlsZCk6CisgICAgICAg
IChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5lcjo6am9pbmVkTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OkpTU3Ry
aW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0VHlwZWRBcnJh
eVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgpOgorICAgICAg
ICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdElu
ZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOgor
ICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlND
Ojp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OnR5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RNYXApOgorICAg
ICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNJdGVyYXRv
cj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50aW1lL01hcEl0ZXJhdG9y
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4
dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMpOgorICAgICAgICAoSlND
OjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFwUHJvdG9GdW5jS2V5cyk6
CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6CisgICAgICAgICogcnVudGlt
ZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpjYWxsUmV0dXJuVW5kZWZp
bmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAgICAoSlNDOjpudW1iZXJQ
cm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNp
b24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChK
U0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6bnVtYmVy
UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90eXBlT2YpOgorICAg
ICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6Om9iamVjdENv
bnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3Rv
ckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90
b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmpzU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJBcnJheSk6CisgICAgICAg
IChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Qcm94eUNv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJsZVByb3h5KToKKyAgICAg
ICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJyb3IpOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6OmNhbGxQcm94eSk6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpwZXJm
b3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5Q29uc3RydWN0KToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgorICAgICAgICAoSlNDOjpQ
cm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OnJlZmxl
Y3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RFbnVt
ZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToKKyAgICAgICAgKEpTQzo6
cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RJ
c0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0T3duS2V5cyk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0U2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3JlYXRlKToKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNvbGxlY3RNYXRjaGVz
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAgICAgICAoSlNDOjpSZWdF
eHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0RmFzdCk6CisgICAgICAg
IChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNDb21waWxlKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVySWdu
b3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lKToKKyAg
ICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckZs
YWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UpOgorICAgICAgICAo
SlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAqIHJ1bnRpbWUvUmVqZWN0
Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVudGltZS9TZXRDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50
aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNldCk6CisgICAgICAgIChK
U0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY0VudHJp
ZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHA6CisgICAgICAg
IChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAgICAgICAgKEpTQzo6U3Bh
cnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OnB1dCk6
CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmlu
Z3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyk6Cisg
ICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OnJlcGxhY2UpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJD
b2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhP
Zik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vi
c3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2Up
OgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAgICAgICAoSlNDOjpzdHJp
bmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0JsaW5rKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jSXRhbGljcyk6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1cCk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQW5j
aG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6CisgICAgICAgIChKU0M6
OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0l0
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNo
ZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25DaGVja2VyOjp0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAg
ICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JLZXlGb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9s
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNWYWx1ZU9m
KToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6On5U
aHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24pOgor
ICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNrKToKKyAgICAgICAgKEpT
Qzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAgICAgICAgKiBydW50aW1l
L1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93U2NvcGU6OnZtKToKKyAg
ICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6VGhyb3dT
Y29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6OlRocm93U2NvcGUpOgor
ICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6
OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGVMb2NhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9uOjpUaHJvd1Njb3BlTG9j
YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNRW50
cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZtKToKKyAgICAgICAgKiBy
dW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrTWFw
KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9X
ZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgorICAg
ICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFrU2V0KToKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGltZS9XZWFrU2V0UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgorICAgICAgICAoSlNDOjpw
cm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdG9TdHJpbmdOYW1lIGZvciBQcm94aWVz
IGFuZCBhZGQgc3VwcG9ydCBmb3Igbm9ybWFsIGluc3RhbmNlcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04MTQsNiArODE0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N5bWJvbE9iamVjdC5jcHAK
ICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxl
LmNwcAorICAgIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHAKICAgICBydW50aW1lL1RlbXBsYXRlUmVn
aXN0cnkuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCiAgICAgcnVudGltZS9U
eXBlTG9jYXRpb25DYWNoZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY1LDEyICszNjUsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAg
ICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxDdXN0b21HZXR0ZXIq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdCkK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBib29sIHNob3Vs
ZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFuKGV4ZWMpOwogICAgICAg
ICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxMDApKTsKICAgICB9CiB9
OwpAQCAtNDcwLDkgKzQ3MywxMiBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIFJ1
bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkpOwogICAgIH0KIApAQCAt
MTIzMiwxMSArMTIzOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
Q3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVFbGVtZW50
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOwogICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJvb3QqPihleGVjLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIikpKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCByb290KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiIpKSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHJvb3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvbkdldEVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTQxNiwyMCArMTQyNSwy
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVmVyCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3Jp
cHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNj
cmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBv
cGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQg
bm90IG9wZW4gZmlsZS4iKSkpKTsKIAotICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
R2xvYmFsT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoZXhlYy0+dm0oKSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKKyAgICBHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsK
IAogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4ZWMtPnZtKCksIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMi
KSwgYXJyYXkpOworICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKICAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoOwpAQCAtMTQzOCw3
ICsxNDUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgogICAg
IHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBz
Y29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDQ3LDIzICsxNDU5LDI2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2Jh
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkp
OwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+
YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CisgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBtYWtlU291cmNlKHNvdXJjZSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKIAogICAg
IGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgc2NvcGUudGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbik7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIApAQCAt
MTQ3MiwyNCArMTQ4NywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBW
ZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lz
dGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIAogICAg
IE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NTb3VyY2Uoc2Ny
aXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYg
KGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2Fk
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBzb3Vy
Y2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTQ5OCwzMCArMTUxOSwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhj
ZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4
Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVj
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBp
ZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmls
ZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3Ry
aW5nRnJvbVVURihzY3JpcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAo
IWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxl
LiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTUzMyw3ICsxNTYwLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBp
ZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBz
eW50YXhFeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3Rv
cFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE2MzgsMTIgKzE2NjUsMTUgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVub3VnaCBhcmd1bWVudHMi
KSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyIpKSkpOwogICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nh
c3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYW4gYXJyYXkg
YnVmZmVyIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQg
YW4gYXJyYXkgYnVmZmVyIikpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBkdW1t
eUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2ZlcihkdW1teUNvbnRlbnRzKTsK
QEAgLTE4MTAsMjcgKzE4NDAsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvbklzMwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZE1vZHVs
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUg
PSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxv
Y2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgSlNJ
bnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZXhlYywgZmls
ZU5hbWUpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgZXJyb3I7Ci0gICAg
SlNGdW5jdGlvbiogZXJyb3JIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKGV4
ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFsmXShF
eGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBKU0Z1bmN0aW9uKiBlcnJvckhhbmRsZXIgPSBKU05hdGl2
ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwg
U3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgICAgICAgZXJyb3IgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9KTsKIAogICAgIHByb21pc2UtPnRoZW4oZXhlYywgbnVsbHB0ciwgZXJyb3JIYW5k
bGVyKTsKLSAgICBleGVjLT52bSgpLmRyYWluTWljcm90YXNrcygpOworICAgIHZtLmRyYWluTWlj
cm90YXNrcygpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMTg1OCw2
ICsxODkxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTE4NzAsNyArMTkwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25D
aGUKICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgdG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3Iu
bGluZSgpKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwganNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwgZXJyb3IubWVzc2FnZSgp
LCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0xOTA3LDEwICsxOTQzLDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TdGEKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT52bSgpLnNhbXBsaW5nUHJvZmlsZXIo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2FtcGxpbmcgcHJvZmls
ZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiKSkpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghdm0uc2Ft
cGxpbmdQcm9maWxlcigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNhbXBs
aW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIikpKSk7CiAKLSAgICBTdHJpbmcganNvblN0
cmluZyA9IGV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigp
OworICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9maWxlcigpLT5zdGFja1Ry
YWNlc0FzSlNPTigpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9IEpTVmFsdWU6OmVuY29k
ZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVj
LT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDQsNiArNDQsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RhdGlj
IEVuY29kZWRKU1ZhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBK
U09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU09i
amVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC02MSw3ICs2Myw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAgICAgICAgcmVzdWx0ID0g
anNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2FsbGJhY2soKShleGVjUmVm
LCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLmRhdGEo
KSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAK
ICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgaWYgKCFyZXN1bHQp
CkBAIC03Myw2ICs3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJh
Y2sKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBB
UElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmNhbGxlZSgpOwogICAgIEpT
Q29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Rv
clJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTkyLDEyICs5NiwxMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrCiAgICAgICAgICAgICByZXN1bHQgPSBjYWxs
YmFjayhjdHgsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgp
LCAmZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVj
LCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyByZXN1bHQgbXVzdCBiZSBh
IHZhbGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhy
ZXN1bHQpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTEzMyw2ICsxMzMsOSBAQCBTdHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpjbGFzc05hCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVm
KGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAg
LTE1OSw3ICsxNjIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJv
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkoY3R4LCB0aGlzUmVmLCBw
cm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
UmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMCw2ICsyMDMsOSBAQCBib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
ZW50PgogSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1bHRWYWx1ZShjb25z
dCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUgaGludCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAg
SlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYg
PSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTIxMCw3ICsyMTYsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNvbnZlcnRUb1R5cGUoY3R4
LCB0aGlzUmVmLCBqc0hpbnQsICZleGNlcHRpb24pOwogICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9K
UyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZXN1bHQpCkBA
IC0yMjQsNiArMjMwLDkgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1
bAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAg
ICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7CkBAIC0yNDIsNyArMjUx
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFt
ZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2Vw
dGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhjZXB0aW9uKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQpAQCAtMjU5LDcgKzI2
OCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIGVu
dHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMjczLDcgKzI4Miw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJlbnQ6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJv
cGVydHkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0
IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0yODUsNiArMjk0LDkgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVu
dD46OnB1dChKU0NlbAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVm
KGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAg
LTMwMyw3ICszMTUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRl
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4LCB0aGlzUmVmLCBwcm9w
ZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzIwLDcgKzMzMiw3IEBAIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQo
KSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVj
LCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRp
b24pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
ICAgIH0KQEAgLTM0Miw2ICszNTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
cHV0QnlJbmRlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFj
a09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAg
ICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNS
ZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTM1OSw3ICszNzQsNyBAQCBib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhj
ZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CkBAIC00MDgsNiArNDIzLDkgQEAgQ29uc3RydWN0VHlwZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1Zh
bHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmNhbGxl
ZSgpOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmpl
Y3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7CkBAIC00MjYsNyArNDQ0
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3RydWN0b3IoZXhlY1JlZiwgY29uc3RydWN0
b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNDM4LDYgKzQ1Niw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PjoKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlND
YWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4ob2Jq
ZWN0KTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTQ1Miw3ICs0NzMsNyBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gaGFzSW5zdGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFsdWVSZWYsICZleGNlcHRp
b24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMo
ZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAgICAgfQpAQCAtNDc1LDYgKzQ5Niw5IEBAIENhbGxUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0Q2EKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVj
dFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU09iamVjdFJl
ZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCku
dG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC00OTMsNyArNTE3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRoaXNP
YmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwor
ICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNTcwLDYgKzU5NCw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojppbmhlcml0cygKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3RS
ZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAogICAgIGlmIChTdHJpbmdJbXBsKiBuYW1l
ID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CkBAIC01ODQsNyArNjExLDcgQEAgSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyksIHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0
eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBl
eGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTYwMSw2ICs2MjgsOSBAQCBK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNG
dW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJh
Y2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAg
ICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9wZXJ0eS4KQEAgLTYxMyw3ICs2
NDMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAg
ICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxlKiBzdGF0aWNGdW5jdGlv
bnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAgICAgICAgICAgICAgICBp
ZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChuYW1l
KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxi
YWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpc09iai0+
Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBvLCBlbnRyeS0+YXR0
cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG8pOwpAQCAtNjIzLDEyICs2NTIsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQgd2l0aCBO
VUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5IGRlZmluZWQgd2l0aCBO
VUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFj
a0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmpl
Y3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgCiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwpAQCAtNjQ2LDcgKzY3OCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVjKSwgdGhpc1JlZiwgcHJvcGVydHlOYW1l
UmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodmFsdWUpCkBAIC02NTUs
NyArNjg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0
IGRvZXNuJ3QgZXhpc3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRo
YXQgZG9lc24ndCBleGlzdC4iKSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMCw5ICsxMDAsMTEgQEAgaW5saW5lIFR5cGVkQXJyYXlUeXBlIHRvVHlw
ZWRBcnJheVR5cGUoSgogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVR5cGVkQXJyYXkoRXhlY1N0
YXRlKiBleGVjLCBKU1R5cGVkQXJyYXlUeXBlIHR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBzd2l0Y2ggKHR5cGUpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjA5Niw4ICsyMDk2LDEwIEBACiAJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZD
QSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi87IH07
CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlCMTVGMDRBOTUwMERG
MzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKIAkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUyRTZBN0IxRDZFQTYy
QzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2NvcGUu
Y3BwICovOyB9OwogCQlGRTMxOEZERjFDQUM5ODI3MDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJ
bnRlcm5hbEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBF
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNj
cmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OworCQlGRTM0MjIxMjFENkI4MUMzMDAz
MkJFODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNTFB
RERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xs
YXJWTS5jcHAgKi87IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVF
MjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU3MUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90
eXBlLmNwcCAqLzsgfTsKQEAgLTIxMjQsNiArMjEyNiw3IEBACiAJCUZFNTA2ODY3MUFFMjVFMjgw
MDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVy
cmVkU291cmNlRHVtcC5jcHAgKi87IH07CiAJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgKi87IH07
CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkzMkE2MTgzQzVBMjYwMEEx
RUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQgLyogVGhyb3dTY29wZUxv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2OEM2MzcxQjkwREUw
NDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1h
Y3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFNjhDNjM4MUI5MERFMEIwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxl
clByaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAg
Ki87IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFwVmVyaWZpZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3QkE2MEQxQTFB
N0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBAIC00Mzk4LDggKzQ0MDEs
MTAgQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludENMb29wLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGggPSBsbGludC9MTEludENM
b29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkU2QTdBMUQ2RUE1RkUwMDYw
Rjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMxOEZE
RDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVy
bmFsRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzMThGREUx
Q0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0MjIxMTFENkI4MThDMDAz
MkJFODggLyogVGhyb3dTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aHJvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUxMUFEREI3
QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk1Qcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNiw2ICs0NDMxLDcgQEAKIAkJ
RkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1QTI2MDBBMUVDQ0MgLyog
Vk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZN
RW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNTkzMkE2MTgz
QzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
NjAyOUQ4MUQ2RTFFMzMwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2Vt
YmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2
OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBW
ZXJpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVmVy
aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEyOSw2ICs2MTM1LDkg
QEAKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5o
ICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuY3Bw
ICovLAogCQkJCTBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0UnVubmVyVXRpbHMuaCAq
LywKKwkJCQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi8sCisJ
CQkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLywKKwkJCQlGRTYw
MjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0aW9uLmggKi8sCiAJCQkJMEY1
NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVlLmggKi8sCiAJCQkJMEYy
QjY2RDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9ycy5oICovLAogCQkJCTBG
MkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCkBA
IC03NjM1LDYgKzc2NDQsNyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5j
dGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThD
QTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJ
bmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLApAQCAtNzY3Niw2ICs3Njg2LDcgQEAK
IAkJCQkwRkUwNTAxQTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0FyZ3VtZW50c0lubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkMwMUMxMTA0MUEwMDM5MEZERCAvKiBKSVRSaWdo
dFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDhFQkUyNDFDRThGMzU4MDA0
NTMxNDYgLyogSW50bE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFNjAyOUQ5
MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRTA1MDFCMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTc3LDYgKzkx
ODgsNyBAQAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xv
d1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEwMDEzQzg4
RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUyRTZBN0IxRDZF
QTYyQzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYx
QjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDggKzEzOCwxMCBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoRXhl
Y1N0YXRlKiBlCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0
ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgbGVu
Z3RoIGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwg
c2l6ZSkpOwpAQCAtNzI1LDEyICs3MjcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25SZQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBiYXNlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CiAgICAgCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlm
ICghaW5wdXQpCkBAIC03NjksMTIgKzc3MiwxMyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWdFeHBUZXN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2UgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKIAogICAgIGlmICghYmFzZS5pbmhlcml0cyhSZWdF
eHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtOTMzLDkgKzkzNywxMCBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5V2l0CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpCi0gICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90
IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKSk7CisgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8Y2hhcio+KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91
Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKIAogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJy
YXk6OmNyZWF0ZSgqdm0sIGFycmF5U3RydWN0dXJlLCBzaXplKTsKICAgICByZXN1bHQtPmJ1dHRl
cmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYmFja2luZyBzdG9yZSBpcyBpbiB0by1zcGFjZS4K
QEAgLTEzODgsOSArMTM5MywxMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTWFr
ZVJvcGUyCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZWZ0LT5sZW5ndGgo
KSwgcmlnaHQtPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTQwMSw5ICsxNDA3LDEwIEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTMKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc3VtT3ZlcmZs
b3dzPGludDMyX3Q+KGEtPmxlbmd0aCgpLCBiLT5sZW5ndGgoKSwgYy0+bGVuZ3RoKCkpKSB7Ci0g
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0xNDE0LDYgKzE0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Ry
Q2F0MihFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNTdHJpbmcqIHN0cjEgPSBKU1ZhbHVlOjpkZWNvZGUoYSkudG9T
dHJpbmcoZXhlYyk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7IC8vIEltcG9zc2libGUs
IHNpbmNlIHdlIG11c3QgaGF2ZSBiZWVuIGdpdmVuIHByaW1pdGl2ZXMuCkBAIC0xNDIxLDcgKzE0
MjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3RyQ2F0MihFCiAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KHN0
cjEtPmxlbmd0aCgpLCBzdHIyLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MzIsNiArMTQ0MCw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1N0
cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKICAgICBBU1NF
UlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBoYXZlIGJl
ZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0NDEsNyArMTQ1MCw3IEBAIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsK
IAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVuZ3RoKCksIHN0cjItPmxl
bmd0aCgpLCBzdHIzLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1NDUsNyArMTU1NCw4IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKLSAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZU9mVmFyYXJncyhF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3Qg
Zmlyc3RWYXJBcmdPZmZzZXQpCkBAIC0xNzMyLDEzICsxNzQyLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZv
dW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5k
KSB7CiAgICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8oZ2V0UHV0SW5mb0JpdHMpOwog
ICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91
bmQpCi0gICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9
CiAKQEAgLTE3NDYsNyArMTc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2UKICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBwcm92ZSB3
ZSBuZWVkIGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNoZWNrIG9uIHRoZSBzbG93
IHBhdGguCiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywg
aWRlbnQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBqc1REWlZhbHVlKCkpIHsKLSAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTc2
MCw2ICsxNzcxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIGltcGwpOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0
cyk7CkBAIC0xNzcxLDEzICsxNzgzLDEzIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXREeW5hbWljVmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBpZGVudCwgc2xvdCk7CiAg
ICAgICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBqc1REWlZhbHVlKCkpIHsK
LSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJy
b3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91
bmQgJiYgIWhhc1Byb3BlcnR5KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OSArOTUsMTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoRQogCiBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVl
ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVz
dCBiZSBhIHN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKICAgICBTdHJp
bmcgcHJvZ3JhbSA9IHNjcmlwdFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMDcsNyArMTEwLDcgQEAgSlNWYWx1ZSBK
U0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaQogICAgIEpTT2JqZWN0KiBzY29wZUV4dGVu
c2lvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gSlNDOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjLCBtYWtlU291cmNlKHByb2dy
YW0pLCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NywxMjAg
Kzc3LDE1NiBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlOjpmaW5pCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVB
dHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0
ZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0b3JOYW1lKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vh
a01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFs
dWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha01hcFNpemUoZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRI
b3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0lu
amVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT53ZWFrTWFwRW50cmllcyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbldlYWtTZXRT
aXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtTZXRTaXplKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFBy
b3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBK
U0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3Rl
ZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+d2Vha1NldEVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25JdGVyYXRvckVudHJp
ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0b3JFbnRyaWVzKGV4ZWMp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oZXhlYykpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3Rl
ZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRI
b3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1
YnR5cGUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFpbHMoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGV4ZWMpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0
aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmpl
Y3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDkgKzc3LDEyIEBAIEpT
SmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAogSlNWYWx1ZSBKU0phdmFT
Y3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3Ry
aW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lv
biBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBzY3Jp
cHQgPSBzY3JpcHRWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtODksNyArOTIsNyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlw
dENhbGxGcmFtZTo6ZXZhbHVhdGVXCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uID0gZXhl
Yy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsKCku
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0
aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzYsMTEwICs3NiwxNDMgQEAgdm9pZCBKU0phdmFTY3JpcHRDYWxsRnJh
bWVQcm90b3R5cGU6OmZpbgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2Ny
aXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25zKGV4ZWMpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1
dGVDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jYWxsZXIoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZVNvdXJjZUlEKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJh
bWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c291
cmNlSUQoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNj
cmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlw
dENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5saW5lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0ph
dmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2
YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5jb2x1bW4oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZShFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNh
c3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uTmFtZShleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU2Nv
cGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlQ2hhaW4oZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENh
bGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT50aGlzT2JqZWN0KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoZXhlYykpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRlcigpKQogICAgICAgICAg
ICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlvbi0+c2NvcGUoKS0+Z2xv
YmFsT2JqZWN0KCkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFZNJiB2bSA9IG1fZW50cnlTY29w
ZS52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbk5vbklubGlu
ZSgpKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPnZtKCkuaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50cy5yZXNpemUoYXJndW1l
bnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJl
cGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsICZt
X3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCArIDEsIGZ1bmN0aW9uLT5z
Y29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAg
ICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsKICAgICAgICAgfQogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTItMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCwg
MjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0xMjcsNiArMTI3LDkgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9u
TmFtZShWTSYgdm0pIAogCiBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0xMzQsMTAgKzEzNywxMCBAQCBKU1Zh
bHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFwcm9ncmFtLmlzU3RyaW5n
KCkpCiAgICAgICAgIHJldHVybiBwcm9ncmFtOwogCi0gICAgVG9wQ2FsbEZyYW1lU2V0dGVyIHRv
cENhbGxGcmFtZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZSk7CisgICAgVG9wQ2FsbEZyYW1l
U2V0dGVyIHRvcENhbGxGcmFtZSh2bSwgY2FsbEZyYW1lKTsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYg
KCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAgY2FsbEZyYW1lLT52bSgp
LnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlRXZhbEVycm9yKGNhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIH0KICAgICBTdHJpbmcgcHJvZ3JhbVNvdXJjZSA9IGFzU3RyaW5n
KHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUpOwpAQCAtMTgxLDcgKzE4NCw3IEBAIEpTVmFsdWUg
ZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ly8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxkIG5vdCBoYXZlIHRocm93
biBleGNlcHRpb25zLgotICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24o
KSk7CisgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgICAgIGV2YWwgPSBj
YWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVy
Q29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgcHJvZ3JhbVNv
dXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKQEAgLTE5MCwxNyArMTkzLDIwIEBAIEpTVmFsdWUg
ZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGNhbGxlckZyYW1lLT50aGlzVmFsdWUoKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjYWxsRnJhbWUtPnZtKCkuaW50ZXJwcmV0ZXI7CisgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gdm0uaW50ZXJwcmV0ZXI7CiAgICAgcmV0dXJuIGludGVycHJldGVyLT5leGVjdXRl
KGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNoYWluKTsKIH0KIAogdW5z
aWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVu
dHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFt
ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cy5pc0NlbGwoKSkpIHsKICAgICAgICAgaWYgKGFyZ3Vt
ZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IAotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVh
dGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFtZSwgYXJndW1lbnRz
KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0ZUludmFs
aWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBhcmd1bWVudHMpKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAtMjE1LDcgKzIyMSw3IEBAIHVuc2lnbmVk
IHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICAgICAgY2FsbEZyYW1lLT52
bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0
ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIAogICAgIGRlZmF1bHQ6CkBAIC0yMzcsMjEgKzI0MywyNSBAQCB1bnNpZ25lZCBzaXplT2ZW
YXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiAKIHVuc2lnbmVkIHNpemVGcmFtZUZvckZvcndhcmRB
cmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgdW5zaWduZWQgbnVtVXNlZFN0
YWNrU2xvdHMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxlZUZyYW1lRm9yVmFyYXJncyhjYWxsRnJhbWUs
IG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmVu
c3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkpCi0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0K
IAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVk0m
IHZtLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQz
Ml90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVPZlZhcmFyZ3MoY2FsbEZy
YW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAKICAgICBDYWxsRnJhbWUq
IGNhbGxlZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0
YWNrU2xvdHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBtYXhBcmd1
bWVudHMgfHwgIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVy
cygpKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKKyAg
ICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTgyMiwxNSArODMyLDE2IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKIHsKICAgICBKU1Njb3BlKiBzY29wZSA9IHRo
aXNPYmotPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAgIFZNJiB2bSA9ICpzY29w
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VSVCghdGhyb3dTY29wZS5l
eGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgaWYg
KHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBj
aGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUs
IHRocm93U2NvcGUpKTsKIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoZSAicHJvZ3JhbSIgaXMg
YWN0dWFsbHkganVzdCBhIEpTT04gb2JqZWN0LiBJZiBzbywKICAgICAvLyB3ZSdsbCBoYW5kbGUg
dGhlIEpTT04gb2JqZWN0IGhlcmUuIEVsc2UsIHdlJ2xsIGhhbmRsZSByZWFsIEpTIGNvZGUKQEAg
LTg3MSwyMiArODgyLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4
ZWMKICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBKU09OUFBhdGhbaV0ubV9wYXRoRW50
cnlOYW1lLCBzbG90KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsRnJh
bWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNh
bGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Nj
b3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ld
Lm1fcGF0aEVudHJ5TmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFp
bGVkSlNPTlA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIEpTT05QUGF0aFtpXS5t
X3BhdGhFbnRyeU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChjYWxsRnJhbWUsIEpTT05Q
UGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlTG9va3VwOiB7CiAgICAgICAgICAg
ICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChjYWxsRnJhbWUsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU09OUFBhdGhbaV0ubV9wYXRoSW5kZXgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAg
IGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTg5OSwyOSArOTEwLDI5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgICAgIHN3aXRjaCAoSlNPTlBQYXRoLmxhc3QoKS5t
X3R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlQ2FsbDogewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBiYXNlT2JqZWN0LmdldChjYWxsRnJhbWUs
IEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29w
ZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAg
ICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNy
ZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGNhbGxGcmFtZSwgZnVuY3Rpb24pKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikpOwogICAgICAgICAgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpzb25Bcmc7CiAgICAgICAgICAgICAgICAganNvbkFy
Zy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBqc1VuZGVmaW5lZCgpOiBiYXNlT2JqZWN0OwogICAg
ICAgICAgICAgICAgIEpTT05QVmFsdWUgPSBKU0M6OmNhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGpzb25BcmcpOwotICAgICAgICAgICAgICAg
IGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlmICh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlRG90OiB7CiAgICAgICAgICAgICAgICAgYmFzZU9iamVj
dC5wdXQoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEVudHJ5TmFtZSwgSlNPTlBW
YWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBhdGhFbnRyeVR5cGVMb29r
dXA6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dEJ5SW5kZXgoY2FsbEZyYW1lLCBK
U09OUFBhdGgubGFzdCgpLm1fcGF0aEluZGV4LCBKU09OUFZhbHVlLCBzbG90LmlzU3RyaWN0TW9k
ZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC05NDEsMTggKzk1MiwyMCBAQCBmYWlsZWRKU09OUDoKIAogICAgIC8vIENv
bXBpbGUgc291cmNlIHRvIGJ5dGVjb2RlIGlmIG5lY2Vzc2FyeToKICAgICBpZiAoSlNPYmplY3Qq
IGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXModm0sIGNhbGxGcmFt
ZSwgc2NvcGUpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKSk7CiAK
ICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2RlQmxv
Y2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51bGxw
dHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jaykpCi0gICAgICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCBlcnJvcikpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBD
b2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEFTU0VSVCghdGhyb3dTY29wZS5l
eGNlcHRpb24oKSB8fCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGpzRHluYW1pY0Nhc3Q8RXhj
ZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBlcnJv
cikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBD
b2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVy
bWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgaWYgKHNj
b3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2Nv
cGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKQEAgLTk3MSw2ICs5ODQsOCBAQCBmYWls
ZWRKU09OUDoKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxs
RGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
ewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2FsbEZyYW1lLT5oYWRFeGNl
cHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgaWYgKHZt
LmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtOTkzLDEzICsxMDA4LDE0IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3Bl
KHZtLCBnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNl
U29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgaWYgKGlzSlND
YWxsKSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICAgICAgSlNPYmplY3Qq
IGNvbXBpbGVFcnJvciA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwganNDYXN0PEpTRnVuY3Rp
b24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICAg
ICAgQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVy
cm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBj
b21waWxlRXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAg
ICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDA3
LDcgKzEwMjMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAg
ICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJp
Z2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5h
dGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAg
IFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQo
bmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgp
KTsKQEAgLTEwMTUsMTEgKzEwMzEsMTIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKICAgICAgICAgLy8gRXhlY3V0
ZSB0aGUgY29kZToKLSAgICAgICAgaWYgKGlzSlNDYWxsKQorICAgICAgICBpZiAoaXNKU0NhbGwp
IHsKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZwcm90b0NhbGxGcmFtZSk7
Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVlOjpkZWNvZGUodm1FbnRy
eVRvTmF0aXZlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTAzMCwxMiArMTA0NywxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxs
RnJhCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RU
eXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBB
U1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xs
ZWN0b3JCdXN5KCkpOwogICAgIC8vIFdlIHRocm93IGluIHRoaXMgY2FzZSBiZWNhdXNlIHdlIGhh
dmUgdG8gcmV0dXJuIHNvbWV0aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQogICAgIC8vIGFscmVhZHkg
aW4gYW4gaW52YWxpZCBzdGF0ZS4KICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5KCkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFt
ZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChj
b25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9
IG51bGxwdHI7CkBAIC0xMDU0LDEzICsxMDczLDEzIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3Qp
IHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVjdCogY29t
cGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVG
b3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPihjYWxsRnJhbWUsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY29uc3RydWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVjdCwgbmV3Q29kZUJsb2Nr
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJh
bWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKIAogICAg
ICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hv
dWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDY4LDcgKzEwODcsNyBAQCBKU09iamVj
dCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAgIG5ld0NvZGVCbG9jayA9
IDA7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxG
cmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3Rv
Q2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBjb25zdHJ1
Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsKQEAgLTEwOTUsNiArMTEx
NCw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIENhbGxGcmFt
ZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxsKEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUHJvdG9DYWxs
RnJhbWUqIHByb3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1ZSogYXJncykKIHsKICAg
ICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CiAgICAgCiAgICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtMTEwNCw3ICsxMTI0LDcgQEAgQ2FsbEZyYW1l
Q2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgZnVuY3Rpb24sIHNjb3Bl
LCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
Y2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgZXJyb3IpOworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAg
cmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICB9CiAgICAgbmV3Q29kZUJsb2NrLT5tX3No
b3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTEyMCw3ICsxMTQwLDggQEAgQ2FsbEZy
YW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKSAKIHsKICAgICBWTSYgdm0gPSAqY2xv
c3VyZS52bTsKLSAgICAKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwogICAgIGlmICh2bS5p
c0NvbGxlY3RvckJ1c3koKSkKQEAgLTExMjksNyArMTE1MCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0
ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBTdGFja1N0YXRzOjpDaGVja1BvaW50IHN0YWNr
Q2hlY2tQb2ludDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRp
b24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ2Fs
bCgpLT5leGVjdXRlKCZ2bSwgY2xvc3VyZS5wcm90b0NhbGxGcmFtZSk7CkBAIC0xMTQwLDcgKzEx
NjEsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFtZUNsCiBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3BlKQogewogICAgIFZNJiB2
bSA9ICpzY29wZS0+dm0oKTsKLSAgICAKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9PSAmY2FsbEZyYW1lLT52
bSgpKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICBBU1NFUlQoIXZtLmlzQ29s
bGVjdG9yQnVzeSgpKTsKQEAgLTExNTAsNyArMTE3Miw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBz
Y29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1
cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKSk7ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAg
ICB1bnNpZ25lZCBudW1WYXJpYWJsZXMgPSBldmFsLT5udW1WYXJpYWJsZXMoKTsKICAgICBpbnQg
bnVtRnVuY3Rpb25zID0gZXZhbC0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xzKCk7CkBAIC0xMTgxLDcg
KzEyMDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb248RXZhbEV4ZWN1dGFibGU+KGNhbGxGcmFt
ZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVF
cnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKICAgICAgICAgY29kZUJsb2Nr
ID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKICAgICB9CiAKQEAgLTEx
OTIsNyArMTIxNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEK
ICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT52YXJpYWJs
ZShpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9u
bWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAg
ICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xv
dChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBp
biBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICInIikpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGlu
IGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTEyMDAsNyArMTIyMiw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNh
bGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VTdHJpbmcoIkNh
bid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmco
ZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBtYWtl
U3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAn
IiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpAQCAtMTIyOSw3ICsxMjUxLDcgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5z
aG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUp
OwogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IDEpOyAvLyAxIHBh
cmFtZXRlciBmb3IgJ3RoaXMnLgogCkBAIC0xMjQ1LDYgKzEyNjcsNyBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
KE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VSVCgh
dm0uZXhjZXB0aW9uKCkpOwpAQCAtMTI1NSwxOSArMTI3OCwxOSBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2
bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRv
UmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9j
ayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KGNhbGxG
cmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBp
bGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKICAgICAgICAgY29kZUJs
b2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKICAg
ICB9CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxG
cmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIGlmIChzY29wZS0+c3RydWN0dXJl
KCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5mbGF0dGVuRGlj
dGlvbmFyeU9iamVjdCh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogewogICAgIC8vIFdlIHBh
c3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxsZnJhbWUgaGFzbid0IGJl
ZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgVk1FbnRyeUZyYW1lKiB2bUVu
dHJ5RnJhbWUgPSB2bS0+dG9wVk1FbnRyeUZyYW1lOwogICAgIENhbGxGcmFtZSogY2FsbGVyRnJh
bWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwpAQCAtOTgsNDMgKzk5LDQ4IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKICAgICB9CiAKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwg
Y2FsbGVyRnJhbWUpOwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsK
KyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwgc2NvcGUpOwogfQogCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93
RGl2aWRlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBWTUVu
dHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZy
YW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFt
ZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKCp2bSk7
Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJvcihjYWxsZXJG
cmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9uIG92ZXJmbG93
LiIpKSk7CisgICAgdGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJv
cihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRpdmlzaW9u
IG92ZXJmbG93LiIpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd091
dE9mQm91bmRzQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisK
ICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFt
ZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZt
RW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVhdGVFcnJv
cihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKSkpOwor
ICAgIHRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBzY29wZSwgY3JlYXRlRXJyb3IoY2FsbGVy
RnJhbWUsIEFTQ0lJTGl0ZXJhbCgiT3V0LW9mLWJvdW5kcyBhY2Nlc3MuIikpKTsKIH0KICNlbmRp
ZgogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2soRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3Vu
dCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDYWxs
KTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVudHJ5RnJhbWUq
IHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwogICAgICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwg
Y2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFt
ZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTE0MywxMyArMTQ5LDE0
IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHkKIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSgqdm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25T
bG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgKnZtLCBDb2RlRm9yQ29uc3RydWN0KTsKICAg
ICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVudHJ5RnJhbWUqIHZtRW50
cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbGVy
RnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwogICAgICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwgY2FsbGVy
RnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTI1NCw5ICsyNjEsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAgIAogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OwotICAgIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAg
ICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9y
KGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAgICAgCkBAIC0yODMsMTEgKzI5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIHN0dWJJbmZvLT50
b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJv
cihleGVjLCBiYXNlKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBAIC03OTQsNiArODAzLDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAog
ICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKIApAQCAtODE5LDcgKzgyOSw3IEBAIHN0
YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAgICAgfQogICAgIAog
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpOwotICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMs
IGNhbGxlZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90
QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCiAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xv
d1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC04NDYsNyArODU2LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgIH0KICAgICAK
ICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKTsKLSAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9y
KGV4ZWMsIGNhbGxlZSkpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVO
b3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KAogICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1Bh
dGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAogICAgICAgICByZWludGVy
cHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg1Niw2ICs4NjYsOCBAQCBTbG93
UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKICAg
ICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0luZm8tPnNwZWNpYWxpemF0
aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwog
ICAgIApAQCAtODY1LDYgKzg3Nyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGkKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNoZSB0aGVzZSBraW5kcyBv
ZiBjYWxscy4gVGhleSBjYW4gYmUgY29tbW9uIGFuZCBjdXJyZW50bHkgdGhleSBhcmUKICAgICAg
ICAgLy8gZXhwZW5zaXZlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ0NDU4CisgICAgICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgICAg
ICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVlQXNWYWx1ZSwgY2FsbExp
bmtJbmZvKTsKICAgICB9CiAKQEAgLTg5Miw3ICs5MDUsNyBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CiAKICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5j
b25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7
Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2Fs
bGVlKSk7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAg
IHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC05MDAsOCArOTEzLDkgQEAgU2xvd1BhdGhS
ZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogCiAgICAgICAgIENvZGVCbG9jayoqIGNv
ZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAg
SlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9u
PEZ1bmN0aW9uRXhlY3V0YWJsZT4oZXhlY0NhbGxlZSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNv
ZGVCbG9ja1Nsb3QpOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBy
ZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CiAgICAgICAgIGlmIChlcnJvcikg
ewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cisg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAg
ICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAgICAgIHZtLT5nZXRDVElT
dHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
S2VlcFRoZUZyYW1lKSk7CkBAIC05MjcsNiArOTQxLDggQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSB2aXJ0dWFsRm9yV2l0aAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlvbktpbmQoKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIApAQCAtOTQ3LDcgKzk2Myw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAgICAgIGlmICghaXNDYWxs
KGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0
cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywg
ZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5n
ZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTU2LDcgKzk3Miw3IEBAIGlubGluZSBTbG93
UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAgIENvZGVCbG9jayoqIGNv
ZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxvY2soKTsKICAgICAgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1
dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGV4ZWNDYWxsZWUsIGZ1bmN0aW9uLCBzY29wZSwga2lu
ZCwgKmNvZGVCbG9ja1Nsb3QpOwogICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRD
VElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTY0LDcgKzk4MCw3IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSkgewotICAgICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVj
dG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5j
dGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAg
ICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtMTEzOSw5ICsxMTU1
LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmUKICAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUmVnRXhwKiBy
ZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwogICAgIGlmICghcmVnZXhw
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgcmVnZXhwLT5lcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnZXhwLT5lcnJv
ck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KIApAQCAtMTE1Niw5ICsxMTc0LDEwIEBAIFVudXNlZFB0ciBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkhhbmRsZVcKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJp
Z2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
JnZtKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNjcsMTMgKzExODYsMTUgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGljRQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgZXJyb3JNZXNzYWdlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChlcnJvck1lc3NhZ2VWYWx1ZS5pc1N0cmluZygpKTsKICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gYXNTdHJpbmcoZXJyb3JNZXNzYWdlVmFsdWUpLT52YWx1ZShleGVj
KTsKICAgICBpZiAocmVmZXJlbmNlRXJyb3JGbGFnKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IGVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
ZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9y
TWVzc2FnZSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3Rh
dGUqIGV4ZWMsIGludDMyX3QgZGVidWdIb29rSUQpCkBAIC0xODcxLDEzICsxODkyLDE0IEBAIHNp
emVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQKIHsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVj
dCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7
CiAgICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
aiwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCkpOwogICAgIGlmICghY291bGRE
ZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9
CiAKQEAgLTE4OTAsNiArMTkxMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmEKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7CiAgICAgSlNWYWx1ZSBrZXkgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEtleSk7CkBAIC0xOTA5LDcgKzE5MzIsNyBAQCBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25EZWxldGVCeVZhCiAgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+
bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBwcm9wZXJ0eSk7
CiAgICAgfQogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKQEAgLTIwMjYsNiArMjA0OSw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIHBjID0g
Ynl0ZWNvZGVQQzsKIApAQCAtMjAzOSw3ICsyMDY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBp
ZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAg
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
dGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtMjA0OCw3
ICsyMDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAg
ICAgICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3ZlIHdlIG5lZWQgYSBURFog
Y2hlY2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNsb3cgcGF0aC4KICAgICAg
ICAgICAgIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOwogICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBqc1REWlZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC0yMDY1LDYgKzIwOTAsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
VG9TY29wZShFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnN0cnVjdGlvbiogcGMgPSBieXRlY29kZVBDOwog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKQEAgLTIwOTIs
MjAgKzIxMTksMjAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRvU2NvcGUoRQog
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAgICAgaWYgKHNs
b3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7Cisg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJv
cihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBp
ZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJv
cGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywg
aWRlbnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHNjb3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQcm9wZXJ0eVNsb3Q6OlVu
a25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVjLCBpZGVu
dCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChleGVjLT52bSgpLmV4Y2VwdGlvbigpKQor
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29tbW9uU2xv
d1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZXhlYywgY29kZUJsb2NrLCBwYywgc2Nv
cGUsIGdldFB1dEluZm8sIHNsb3QsIGlkZW50KTsKQEAgLTIxMTUsOSArMjE0MiwxMCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIEpTVmFsdWUg
ZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEV4Y2VwdGlvblZhbHVlKTsK
LSAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFsdWUpOworICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb25WYWx1ZSk7CiAKICAgICAvLyBSZXN1bHRz
IHN0b3JlZCBvdXQtb2YtYmFuZCBpbiB2bS50YXJnZXRNYWNoaW5lUENGb3JUaHJvdyAmIHZtLmNh
bGxGcmFtZUZvckNhdGNoCiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCkgXAogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7ICAgICAgXAotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKQorICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsgXAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pCiAKICNp
Zm5kZWYgTkRFQlVHCiAjZGVmaW5lIExMSU5UX1NFVF9QQ19GT1JfU1RVQlMoKSBkbyB7IFwKQEAg
LTkyLDE0ICs5MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICNkZWZp
bmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCAwKQogCiAjZGVmaW5lIExM
SU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGV4
Y2VwdGlvblRvVGhyb3cpOyAgICAgICBcCiAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIExMSU5UX0VORF9J
TVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoZXhl
YywgIkxMSW50U2xvd1BhdGhzIiwgcGMpOyAgICBcCi0gICAgICAgIGlmIChVTkxJS0VMWSh2bS5l
eGNlcHRpb24oKSkpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkpKSB7ICAgICAgICAgXAogICAgICAgICAgICAgcGMgPSByZXR1
cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTUyLDcgKzE1Myw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCiAjZGVmaW5lIExMSU5UX0NB
TExfVEhST1coZXhlYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKF9fY3RfZXhlYywg
ZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRocm93RXhjZXB0
aW9uKF9fY3RfZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICBcCiAg
ICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoMCwgY2FsbFRvVGhyb3coX19jdF9leGVjKSk7ICAg
ICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAgLTE2MCw3ICsxNjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAgICAgRXhlY1N0YXRlKiBf
X2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjQ2FsbGVlID0gKGV4ZWNDYWxsZWUpOyAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICAgICAgZG9FeGNlcHRpb25GdXp6aW5nSWZFbmFibGVkKF9fY2Nl
X2V4ZWMsICJMTEludFNsb3dQYXRocy9jYWxsIiwgbnVsbHB0cik7IFwKLSAgICAgICAgaWYgKFVO
TElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoMCwg
Y2FsbFRvVGhyb3coX19jY2VfZXhlY0NhbGxlZSkpOyAgICAgIFwKICAgICB9IHdoaWxlIChmYWxz
ZSkKIApAQCAtNDY2LDYgKzQ2Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgVk1FbnRyeUZyYW1lKiB2bUVudHJ5RnJhbWUgPSB2bS50b3BWTUVudHJ5RnJhbWU7CiAgICAg
Q2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7
CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkgewpAQCAtNDgyLDkgKzQ4NSw5IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIGRhdGFMb2dGKCJOdW0gY2FsbGVlIHJlZ2lzdGVy
cyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlTG9jYWxzKTsKICAgICBk
YXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMp
OwogCi0gICAgZGF0YUxvZ0YoIkN1cnJlbnQgT1Mgc3RhY2sgZW5kIGlzIGF0ICVwLlxuIiwgZXhl
Yy0+dm0oKS5zb2Z0U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigiQ3VycmVudCBPUyBzdGFj
ayBlbmQgaXMgYXQgJXAuXG4iLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsKICNpZiAhRU5BQkxFKEpJ
VCkKLSAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5kIGlzIGF0ICVwLlxuIiwg
ZXhlYy0+dm0oKS5jbG9vcFN0YWNrTGltaXQoKSk7CisgICAgZGF0YUxvZ0YoIkN1cnJlbnQgQyBM
b29wIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIsIHZtLmNsb29wU3RhY2tMaW1pdCgpKTsKICNlbmRp
ZgogCiAjZW5kaWYKQEAgLTUwMiw3ICs1MDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFj
a19jaGVjaykKICNlbmRpZgogCiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwgdGhyb3dTY29wZSk7CiAgICAgcGMgPSByZXR1
cm5Ub1Rocm93KGNhbGxlckZyYW1lKTsKICAgICBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKTsK
IH0KQEAgLTc4NCwxMCArNzg3LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9k
ZWxfYnlfaWQKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7CiB9CiAK
LWlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIEpTVmFsdWUgc3Vic2NyaXB0KQorc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRC
eVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3Vic2NyaXB0KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmlu
ZygpKSkgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBTdHJ1Y3R1cmUm
IHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAg
IGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CiAgICAg
ICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5n
ID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKSkgewpA
QCAtODA2LDEwICs4MTAsMTAgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBl
eGVjLAogICAgIH0KIAogICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGV4ZWMp
OwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1dG8gcHJvcGVydHkgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7CiB9CkBAIC04
MTcsNyArODIxLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLAog
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlW
YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKHZt
LCBleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCkBAIC04
MjcsNiArODMxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YQog
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CiAgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CiAgICAgCiAgICAgaWYgKExJS0VMWShz
dWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5h
c1VJbnQzMigpOwpAQCAtODM1LDE2ICs4NDAsMTYgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YQogICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlj
a2x5KGkpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KHZtLCBpLCB2
YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQotICAgICAgICBiYXNlVmFsdWUucHV0
QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUsIGlzU3RyaWN0
TW9kZSk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAogICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBpc1N0cmljdE1vZGUpOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKICAgICBMTElOVF9FTkQoKTsKIH0KQEAgLTExODYsNiArMTE5MSw3IEBAIHN0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAKICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlY0NhbGxlZS0+Y2xlYXJSZXR1
cm5QQygpOwpAQCAtMTIzOCwxOCArMTI0NCwyMCBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBl
IGhhbmRsZUhvc3RDYWxsCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSAwKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZy
YW1lKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAg
ICAgZGF0YUxvZ0YoIlBlcmZvcm1pbmcgY2FsbCB3aXRoIHJlY29yZGVkIFBDID0gJXBcbiIsIGV4
ZWMtPmN1cnJlbnRWUEMoKSk7CiAjZW5kaWYKICAgICAKICAgICBKU0NlbGwqIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKLSAgICBpZiAoIWNhbGxl
ZUFzRnVuY3Rpb25DZWxsKQorICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpIHsKKyAgICAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChl
eGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7Ci0gICAgCisgICAgfQogICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNl
bGwpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpOwotICAg
IFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9
IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQ
dHI7CkBAIC0xMzM1LDEyICsxMzQzLDE0IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZ2Vu
ZXJpY0NhbGwoRXgKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKQogewogICAg
IExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAg
IHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0KQogewogICAgIExMSU5UX0JFR0lOX05P
X1NFVF9QQygpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIHJldHVybiBnZW5lcmlj
Q2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKQEAgLTE0OTgsNiArMTUwOCw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykKIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogewogICAgIExMSU5UX0JFR0lOX05P
X1NFVF9QQygpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBnZW5lcmljVW53
aW5kKCZ2bSwgZXhlYyk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0KQEAgLTE1MDUsNyArMTUx
Niw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXgKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwotCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+
aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgIEpTT2JqZWN0KiBzY29wZSA9IGpzQ2Fz
dDxKU09iamVjdCo+KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CiAgICAgR2V0UHV0SW5mbyBnZXRQ
dXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CkBAIC0xNTE2LDcgKzE1MjYsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRfUkVUVVJOKHNjb3BlLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90
JiBzbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgICAgICAg
aWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90Rm91bmQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5k
ZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICAgICAgfQogCkBAIC0xNTI1LDcgKzE1MzUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgICAgICAgICAvLyBXaGVuIHdlIGNhbid0IHN0YXRpY2Fs
bHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJmb3JtIHRoZSBjaGVjayBv
biB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVj
LCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFsdWUoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
RFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoZXhlYywgdm0s
IHBjLCBzY29wZSwgc2xvdCwgaWRlbnQpOwpAQCAtMTU4Miw5ICsxNTkyLDkgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2Zp
bGVyKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoISF2bS5leGNl
cHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoISF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsK
IAotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odm0uZXhjZXB0aW9uKCkp
KQorICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24odGhyb3dTY29wZS5leGNl
cHRpb24oKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwogICAgIExMSU5UX1JFVFVSTl9UV08ocGMs
IDApOwogfQpAQCAtMTYxOSw5ICsxNjI5LDExIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG8KIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUp
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgaWYgKCFleGVjKQogICAgICAg
ICBleGVjID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAw
Ny0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmln
aHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTcz
LDE4ICs3MywyMCBAQCB2b2lkIEFycmF5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmso
RXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBuZXdUYXJnZXQp
CitKU1ZhbHVlIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBpZiAoIWxlbmd0aC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXlO
ZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCAmbGVuZ3RoLCAxLCBu
ZXdUYXJnZXQpOwogICAgIAogICAgIHVpbnQzMl90IG4gPSBsZW5ndGgudG9VSW50MzIoZXhlYyk7
CiAgICAgaWYgKG4gIT0gbGVuZ3RoLnRvTnVtYmVyKGV4ZWMpKQotICAgICAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdl
ci4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5
QXJyYXkoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdUYXJnZXQpOwogfQogCi1z
dGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkg
UG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
Ny0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKIH07CiAKLUpT
T2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUg
cHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKK0pTVmFsdWUgY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1
aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFsdWUoKSk7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJh
eUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCkBAIC02OCw2ICs2OSw5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHIKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLWlzYXJyYXkKIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWFyZ3Vt
ZW50VmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MSw3ICs4
NSw3IEBAIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1YKIAogICAgICAg
ICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihhcmd1bWVudCk7CiAg
ICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNBcnJheSBjYW5ub3QgYmUgY2FsbGVkIG9u
IGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNBcnJheSBjYW5ub3QgYmUg
Y2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGFyZ3VtZW50ID0gcHJveHktPnRhcmdl
dCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNiArMjY1LDkg
QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbgogdGVtcGxhdGU8SlNB
cnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lkIHNoaWZ0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRlciwgdW5zaWduZWQgY3Vy
cmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5zaWduZWQgbGVuZ3RoKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudENvdW50ID4gcmVzdWx0Q291bnQp
OwogICAgIHVuc2lnbmVkIGNvdW50ID0gY3VycmVudENvdW50IC0gcmVzdWx0Q291bnQ7CiAKQEAg
LTI4NiwxNCArMjg5LDE0IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGgKICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8pKSB7
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsgayA+IGxlbmd0aCAtIGNv
dW50OyAtLWspIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtMzAyLDYgKzMwNSw5IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
dGgKIHRlbXBsYXRlPEpTQXJyYXk6OlNoaWZ0Q291bnRNb2RlIHNoaWZ0Q291bnRNb2RlPgogdm9p
ZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhl
YWRlciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5zaWdu
ZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0Q291
bnQgPiBjdXJyZW50Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gcmVzdWx0Q291bnQgLSBj
dXJyZW50Q291bnQ7CiAKQEAgLTMxMCw3ICszMTYsNyBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogCiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0IG92ZXJmbG93LgogICAg
IGlmIChjb3VudCA+IChVSU5UX01BWCAtIGxlbmd0aCkpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjcsOCArMzMzLDggQEAgdm9pZCB1
bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIAogICAgICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHRo
aXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKLSAgICAgICAg
fSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtMzYxLDcgKzM2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgY3VzdG9tSm9pbkNhc2UgPSB0cnVlOwogCiAgICAg
aWYgKFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5jbGFzc05hbWUodGhp
c09iamVjdCksICJdIikpOwogCiAgICAgLy8gNC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGlu
ZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFz
IHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVudHMgbGlzdC4KICAgICBpZiAoIWlz
SlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlwZTo6SG9zdCB8fCBjYWxs
RGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1bmNKb2luKQpAQCAtNjc0LDYgKzY4
MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKIAogICAgIGlmIChpc0pTQXJyYXkodGhpc1Zh
bHVlKSkKQEAgLTY5NCw4ICs3MDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GCiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAx
KTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICBpZiAoIXRo
aXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KICAg
ICAgICAgcHV0TGVuZ3RoKGV4ZWMsIHRoaXNPYmosIGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKQEAg
LTc0MCwxMSArNzQ5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0YKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JldmVyc2Uo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGdldExlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKICAgICBpZiAodm0uZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC04MTIsNyArODIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAg
ICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9w
ZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgbG93ZXIpKSB7CiAgICAgICAgICAgICBpZiAo
IXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRl
bGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CiAgICAgICAgIH0KIApAQCAtODIyLDcgKzgzMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHVw
cGVyKSkgewogICAgICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
OTAyLDYgKzkxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YK
ICAgICAvLyAxNS40LjQuMTIKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmog
PSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhl
Yyk7CiAgICAgaWYgKCF0aGlzT2JqKQpAQCAtOTY2LDcgKzk3OCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGRlbGV0ZUNvdW50KTsKICAgICAgICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVsZXRlQ291bnQ7ICsraykg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmos
IGsgKyBiZWdpbik7CkBAIC0xMTIzLDYgKzExMzUsOCBAQCBzdGF0aWMgYm9vbCBtb3ZlRWxlbWVu
dHMoRXhlY1N0YXRlKiBleGVjCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBlbmRP
bmUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGZpcnN0LCBKU1ZhbHVlIHNlY29u
ZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBB
U1NFUlQoIWlzSlNBcnJheShzZWNvbmQpKTsKICAgICBBU1NFUlQoIXNob3VsZFVzZVNsb3dQdXQo
Zmlyc3QtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgQnV0dGVyZmx5KiBmaXJzdEJ1dHRlcmZseSA9
IGZpcnN0LT5idXR0ZXJmbHkoKTsKQEAgLTExMzUsNyArMTE0OSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoRXgKICAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVy
ZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJy
YXk6OmNyZWF0ZSh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5U2l6ZSArIDEpOwogICAg
IGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAoIXJlc3VsdC0+YXBwZW5k
TWVtY3B5KGV4ZWMsIHZtLCAwLCBmaXJzdCkpIHsKICAgICAgICAgaWYgKCFtb3ZlRWxlbWVudHMo
ZXhlYywgdm0sIHJlc3VsdCwgMCwgZmlyc3QsIGZpcnN0QXJyYXlTaXplKSkgewpAQCAtMTE1NCw2
ICsxMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUAogewog
ICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAKQEAgLTExOTcsNyArMTIxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b1AKICAgICBTdHJ1Y3R1cmUqIHJlc3VsdFN0cnVjdHVyZSA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkqIHJlc3VsdCA9IEpTQXJyYXk6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIHJlc3VsdFN0cnVjdHVyZSwgZmlyc3RBcnJheVNpemUg
KyBzZWNvbmRBcnJheVNpemUpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAK
ICAgICBpZiAodHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgZG91YmxlKiBidWZm
ZXIgPSByZXN1bHQtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDExLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY4
LDYgKzY4LDcgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9vbGVhbihmYWxzZSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmlu
ZygpKTsKQEAgLTc2LDcgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29s
ZWFuUHJvdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5zbWFsbFN0cmluZ3Mu
dHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEJvb2xlYW5PYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBpZiAoYXNC
b29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFs
c2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5zbWFsbFN0cmluZ3MuZmFs
c2VTdHJpbmcoKSk7CkBAIC04NywxMiArODgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBib29sZWFuUHJvdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Q
cm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNCb29sZWFuKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQm9vbGVhbk9iamVjdCh0aGlz
VmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw3ICs5MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBFTkRf
SU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMpCiAKICNkZWZpbmUgVEhST1coZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgIFwKKyAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgIFwKICAg
ICAgICAgUkVUVVJOX1RPX1RIUk9XKGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE0MCwxMyArMTQxLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBSRVRV
Uk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQogCi0jZGVmaW5lIENBTExfVEhST1coZXhlYywg
cGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENB
TExfRU5EX0lNUEwoY3RFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RFeGVjKSk7ICAgICAgICAg
ICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KICNkZWZpbmUgQ0FMTF9DSEVDS19FWENFUFRJ
T04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRXhl
Y1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMs
OCArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdAogCiBp
bmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwgSlNWYWx1
ZSBiYXNlVmFsKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghYmFzZVZhbC5pc09iamVjdCgpKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZElu
UGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbCkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NSw3ICs4Nyw3IEBAIGlubGlu
ZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAgICAgcmV0dXJuIGJhc2VP
YmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOwogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHByb3BOYW1l
LnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisg
ICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
NyArMzgsOSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCisgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGVycm9yKTsKICNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORwogICAg
IGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCB2bS0+ZXhjZXB0aW9uKCksICIuXG4iKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3Ry
dWN0RGF0YS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMCArMzcsMTMgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBjaGFy
KiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0
RGF0YShjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7CiAgICAgaWYgKGNvbnN0cnVj
dFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIAogICAgIHJldHVybiBjb25zdHJ1Y3QoZXhlYywg
Y29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MsIGNv
bnN0cnVjdG9yT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNC0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28u
IEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMjAsOSArMzIwLDEwIEBAIHN0YXRp
YyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXQKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIGZvcm1hdGVEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBEYXRlVGltZUZvcm1hdCBm
b3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAKQEAgLTUyMiwxMyArNTIz
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZt
KCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBh
c0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0Rh
dGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIERhdGUiKSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsKIAogICAgIGNvbnN0IEdy
ZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3Jp
YW5EYXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQpAQCAtNTY4
LDkgKzU3MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRl
cm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwpAQCAtNTc4LDkgKzU4MSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0cmluZyhFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0o
KSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRl
SW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRM
b2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIo
KSwgTG9jYWxlRGF0ZSkpOwpAQCAtNTg4LDkgKzU5MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHRo
aXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlVGltZSkpOwpA
QCAtNTk4LDEzICs2MDMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb1ByaW1p
dGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0
aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1By
aW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CiAKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJz
dCBhcmd1bWVudC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIGEgZmlyc3Qg
YXJndW1lbnQuIik7CiAKICAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlwZSA9IHRvUHJlZmVycmVk
UHJpbWl0aXZlVHlwZShleGVjLCBoaW50VmFsdWUpOwpAQCAtNjE5LDE4ICs2MjUsMjAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC02NDIsOSArNjUwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NTYsOSArNjY1
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9udGgoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUlu
c3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NzAsOSArNjgwLDEwIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7
IAogCkBAIC02ODQsOSArNjk1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY5OCw5ICs3MTAsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0
YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzEyLDkgKzcyNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTcyNiw5ICs3NDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXko
RXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9i
aiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NDAsOSArNzU1LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogCkBAIC03NTQsOSArNzcwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3Rh
bmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03
NjgsOSArNzg1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWludXRlcyhF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
ZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2Jq
ID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc4Miw5ICs4MDAsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5j
ZSh0aGlzVmFsdWUpOyAKIApAQCAtNzk2LDkgKzgxNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUlu
c3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0
ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBA
IC04MTAsOSArODMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDU2Vj
b25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTgyNCw5ICs4NDUsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZt
KCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0
ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5p
bnRlcm5hbE51bWJlcigpOwpAQCAtODQwLDkgKzg2MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CkBA
IC04NTYsOSArODc5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGltZXpv
bmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0
aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC04NzAsOSArODk0
LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg4NCw5ICs5MDksMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3
VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLCBXVEY6
OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAgICBkb3VibGUgbWlsbGkg
PSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTkyMyw5ICs5NDksMTAgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVtQXJn
c1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewpAQCAtMTAzNSw5ICsxMDYyLDEwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwpAQCAtMTA3OCw5ICsxMTA2LDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKQEAgLTEwOTQsNiArMTEyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0
aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCkBAIC0xMTEyLDEzICsxMTQyLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnUKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOwogCiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEs
IG9iamVjdCwgZXhlYy0+ZW1wdHlMaXN0KCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgaWYgKHJl
c3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVl
IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSIpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4
LDM0ICsxOTgsMzQgQEAgYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iagog
ICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNPYmplY3QqIHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitKU09iamVjdCogdGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93
U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCiB7Ci0gICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JO
YW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CisgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJjYWxsaW5nICIsIGNvbnN0
cnVjdG9yTmFtZSwgIiBjb25zdHJ1Y3RvciB3aXRob3V0IG5ldyBpcyBpbnZhbGlkIikpOwogfQog
Ci1KU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRo
cm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAg
cmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVF
cnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5nKGVycm9yTWVz
c2FnZSkpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nKGVy
cm9yTWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVy
cm9yIikpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3ludGF4
RXJyb3IoZXhlYywgbWVzc2FnZSkpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQogCiBKU09iamVjdCog
Y3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2Nv
cGUuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogCkBAIC03MSwyMSArNzIsMjEgQEAgSlNPYmpl
Y3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iagogLy8gTWV0aG9kcyB0byB0aHJvdyBF
cnJvcnMuCiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUgYW4gdGhyb3cgYW4gZXhj
ZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVj
U3RhdGUqLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIEFTQ0lJTGl0ZXJhbCBlcnJvck1l
c3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwotaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBz
dGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHN0YXRlLT52bSgpLnRo
cm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2Up
KTsgfQorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0
IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBBU0NJSUxp
dGVyYWwgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0
YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKTsKK2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4g
dGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRlLCBlcnJv
ck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMg
YW4gRW5jb2RlZEpTVmFsdWUuCi1pbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvbik7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcikpOyB9Ci1pbmxpbmUgRW5jb2RlZEpT
VmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0
aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2Fn
ZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVz
c2FnZSkpOyB9Ci1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJv
cihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSB2b2lkIHRocm93Vk1FcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsgfQoraW5saW5lIEVuY29kZWRK
U1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBK
U1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGVycm9yKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpIHsgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOyB9CitpbmxpbmUgRW5jb2RlZEpT
VmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CitpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNj
b3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQoraW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIFRocm93U2Nv
cGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihzdGF0ZSwgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CiAK
IGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKIHByaXZhdGU6CkBAIC0xMDksNyArMTEwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc3RhdGlj
X2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21l
c3NhZ2UpOworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5j
YWxsZWUoKSktPm1fbWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwogICAgIH0KIApAQCAtMTIxLDcgKzEyNCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzdGF0aWNfY2Fz
dDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2Fn
ZSk7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxl
ZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDEy
ICs2NywxNSBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgCiAvLyBF
Q01BLTI2MiA1LjEsIDE1LjExLjQuNAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJv
clByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IC8vIDEuIExldCBPIGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8pIGlzIG5vdCBPYmplY3Qs
IHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTT2JqZWN0KiB0aGlzT2Jq
ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKIAogICAgIC8vIEd1YXJkIGFnYWluc3QgcmVjdXJzaW9u
IQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6
ei5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkZ1enouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNyArMzgsMTggQEAgdW5zaWdu
ZWQgbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCkgewogLy8gQ2FsbCB0aGlzIG9ubHkgaWYg
eW91IGtub3cgdGhhdCBleGNlcHRpb24gZnV6emluZyBpcyBlbmFibGVkLgogdm9pZCBkb0V4Y2Vw
dGlvbkZ1enppbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiB3aGVyZSwgdm9pZCogcmV0
dXJuUEMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUV4Y2VwdGlvbkZ1
enooKSk7CiAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoZXhlYy0+dm0oKS5oZWFwKTsK
KyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgCiAgICAgc19udW1i
ZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsKICAgICAKICAgICB1bnNpZ25lZCBmaXJlVGFyZ2V0
ID0gT3B0aW9uczo6ZmlyZUV4Y2VwdGlvbkZ1enpBdCgpOwogICAgIGlmIChmaXJlVGFyZ2V0ID09
IHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKSB7CiAgICAgICAgIHByaW50ZigiSlNDIEVY
Q0VQVElPTiBGVVpaOiBUaHJvd2luZyBmdXp6IGV4Y2VwdGlvbiB3aXRoIGNhbGwgZnJhbWUgJXAs
IHNlZW4gaW4gJXMgYW5kIHJldHVybiBhZGRyZXNzICVwLlxuIiwgZXhlYywgd2hlcmUsIHJldHVy
blBDKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbigKLSAgICAgICAgICAgIGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0aW9uIEZ1enoiKSkpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg5LDIzICsyODksMjMgQEAg
SlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIHJldHVybiBjcmVh
dGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLiIpOwogfQogCi1KU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKK0pTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBU
aHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYykpOwogfQog
Ci1KU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNP
YmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBFcnJvckhhbmRsaW5n
U2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogfQogCi1K
U09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKK0pTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKLSAgICByZXR1cm4gdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0p
KTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNs
dWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJU
aHJvd1Njb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Miw5ICs1Myw5IEBAIEpTT2Jq
ZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3QKIEpTT2JqZWN0KiBjcmVhdGVFcnJv
ckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwog
SlNTdHJpbmcqIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlKTsK
IAotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVj
U3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihFeGVjU3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1p
bmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKik7CitKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVj
U3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKIAog
CiBjbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsNyBAQCBDb2Rl
QmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIEpTT2Jq
ZWN0KiYgZXhjZXB0aW9uKQogewogICAgIFZNKiB2bSA9IHNjb3BlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIEFTU0VSVCh2bS0+
aGVhcC5pc0RlZmVycmVkKCkpOwogICAgIEFTU0VSVChzdGFydENvbHVtbigpICE9IFVJTlRfTUFY
KTsKQEAgLTMxOSw4ICszMjAsOCBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0Nv
ZGVCbG9jCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0
dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCiAgICAgICAgIGxhc3RMaW5lKCksIHN0YXJ0
Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykgewot
ICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCi0gICAgICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKKyAgICAgICAgZXhjZXB0aW9uID0gdGhyb3dFeGNlcHRp
b24oCisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgdGhyb3dTY29wZSwK
ICAgICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBleGVjdXRhYmxl
LT5tX3NvdXJjZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC00MjksMjAg
KzQzMCwyMyBAQCBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6OnNfaW5mbyA9CiAKIEV2
YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0LCBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQs
IEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHZhcmlhYmxlc1VuZGVyVERaKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAo
IWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBFdmFsRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEV2YWxFeGVjdXRh
YmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywgc291cmNlLCBpc0luU3Ry
aWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBl
dmFsQ29udGV4dFR5cGUpOwotICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZt
KCkpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKIAogICAgIFVubGlua2Vk
RXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9iamVjdC0+Y3JlYXRlRXZh
bENvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlLCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgaWYg
KCF1bmxpbmtlZEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGV4ZWN1dGFibGUt
Pm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldChleGVjLT52bSgpLCBleGVjdXRhYmxlLCB1bmxp
bmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2VkRXZhbENvZGVCbG9jay5z
ZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGV4ZWN1
dGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC03Niw4ICs3NiwxMSBA
QCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0CiAvLyBFQ01BIDE1LjMu
MiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1bmN0aW9uQ29uc3RydWN0
aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAg
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJv
cihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4
ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICByZXR1
cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soZXhlYywgZ2xvYmFs
T2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5ld1RhcmdldCk7CiB9CiAKQEAgLTg2LDYgKzg5LDkgQEAg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQogICAgIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAogICAgIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVOdW1iZXIsIEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpTVmFsdWUgbmV3VGFy
Z2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gSG93IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMg
aXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJp
bmcgcHJvZ3JhbTsKQEAgLTExNiwxNCArMTIyLDE0IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEUKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gRnVu
Y3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5hbWUsICpleGVjLCBzb3Vy
Y2UsIGV4Y2VwdGlvbiwgb3ZlcnJpZGVMaW5lTnVtYmVyKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7
CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCiAgICAgU3RydWN0dXJlKiBz
dWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0
dXJlKGV4ZWMsIG5ld1RhcmdldCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBmdW5jdGlvbiwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2Nv
cGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rp
b24gQ29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODMsNiArODMsOCBAQCBDYWxsVHlwZSBGdW5jdGlvblByb3RvdHlwZTo6Z2V0Q2FsbERh
dGEoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTRnVu
Y3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CkBAIC0xMTIsMTkgKzExNCwyMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmxpbmVUeXBlRmxh
Z3MoKSAmIFR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSkgewogICAgICAgICAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
KyAgICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEob2Jq
ZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byogY2xhc3NJbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJm
dW5jdGlvbiAiLCBjbGFzc0luZm8tPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVd
XG59IikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogfQogCiAvLyAxNS4zLjQuNSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAodGhpc0Fy
ZyBbLCBhcmcxIFssIGFyZzIsIC4uLl1dKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblByb3RvRnVuY0JpbmQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CiAKICAgICAvLyBMZXQgVGFyZ2V0IGJlIHRoZSB0aGlzIHZhbHVlLgpAQCAtMTM0LDEx
ICsxMzgsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
dGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIC8vIFByaW1pdGl2ZSB2YWx1ZXMgYXJl
IG5vdCBjYWxsYWJsZS4KICAgICBBU1NFUlQodGFyZ2V0LmlzT2JqZWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAKICAgICAvLyBMZXQgQSBiZSBhIG5ldyAocG9zc2libHkgZW1wdHkpIGludGVybmFs
IGxpc3Qgb2YgYWxsIG9mIHRoZSBhcmd1bWVudCB2YWx1ZXMgcHJvdmlkZWQgYWZ0ZXIgdGhpc0Fy
ZyAoYXJnMSwgYXJnMiBldGMpLCBpbiBvcmRlci4KICAgICBzaXplX3QgbnVtQm91bmRBcmdzID0g
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSA/IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDEgOiAw
OwpAQCAtMTQ2LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Qcm8KICAgICBpZiAobnVtQm91bmRBcmdzKSB7CiAgICAgICAgIGJvdW5kQXJncyA9IEpTQXJy
YXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCBu
dW1Cb3VuZEFyZ3MpOwogICAgICAgICBpZiAoIWJvdW5kQXJncykKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJvdW5k
QXJnczsgKytpKQogICAgICAgICAgICAgYm91bmRBcmdzLT5pbml0aWFsaXplSW5kZXgodm0sIGks
IGV4ZWMtPmFyZ3VtZW50KGkgKyAxKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDctMjAwOSwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODcsMTEgKzg3LDE0IEBAIEpTVmFsdWUgY2FsbEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogYm9vbCBjYWxsU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwgSlNWYWx1ZSB2YWx1ZSwg
RUNNQU1vZGUgZWNtYU1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBHZXR0ZXJTZXR0ZXIqIGdl
dHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0ZXJTZXR0ZXIpOwogCiAg
ICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpIHsKICAgICAgICAgaWYgKGVj
bWFNb2RlID09IFN0cmljdE1vZGUpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwMSw3ICsxMDQsNyBAQCBi
b29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlCiAgICAgYXJncy5hcHBlbmQo
dmFsdWUpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUodm0p
LT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNldHRlciwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDExICszNjcsMTQgQEAgdm9pZCBJbnRs
Q29sbGF0b3I6OmNyZWF0ZUNvbGxhdG9yKEV4ZWNTdAogCiBKU1ZhbHVlIEludGxDb2xsYXRvcjo6
Y29tcGFyZVN0cmluZ3MoRXhlY1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmlldyB4LCBTdHJpbmdWaWV3
IHkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMC4zLjQgQ29tcGFyZVN0cmluZ3MgYWJzdHJh
Y3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2NvbGxhdG9yKSB7CiAgICAg
ICAgIGNyZWF0ZUNvbGxhdG9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFtX2NvbGxhdG9yKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIp
KSk7CiAgICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC0z
NzksNyArMzgyLDcgQEAgSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdzKEV4ZQog
ICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JZID0gY3JlYXRlSXRlcmF0b3IoeSk7CiAgICAgYXV0
byByZXN1bHQgPSB1Y29sX3N0cmNvbGxJdGVyKG1fY29sbGF0b3IuZ2V0KCksICZpdGVyYXRvclgs
ICZpdGVyYXRvclksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKICAgICBy
ZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTYgKzEwNiwxOCBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEwLjMuMyBJbnRsLkNvbGxhdG9yLnByb3Rv
dHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRo
aXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFt
aWNDYXN0PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xs
YXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRv
ciIpKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5i
b3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlz
IHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kQ29tcGFyZSkgewotICAgICAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvbGxh
dG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQt
aW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBU
aGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCkBAIC0xMzQsMTAgKzEzNiwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xsYXRvCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0
aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEwLjMuNSBJ
bnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQog
ICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+
KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2ZWRPcHRpb25z
KCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MjAsNiArNDIwLDkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNldEZvcm1h
dHNGcm9tUAogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9yaWdpbmFsT3B0
aW9ucykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTIuMS4xIEluaXRpYWxpemVEYXRlVGltZUZv
cm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gSWYgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFsaXplZEludGxPYmplY3RdXSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IGRhdGVUaW1l
Rm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4KQEAgLTQ0MCw3ICs0NDMs
NiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbG9jYWxlT3B0OwogCiAgICAgLy8gOC4gTGV0IG1hdGNoZXIgYmUg
R2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIsIMKrImxvb2t1cCIs
ICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAg
IFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihleGVjLCBvcHRpb25zLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBmaXQiIH0s
ICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwi
IiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZBYnJ1cHQobWF0Y2hlcikuCiAgICAg
aWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODcsNyArNDg5LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgICAgICAvLyBkLiBMZXQgdHogYmUgQ2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKHR6KS4KICAgICAgICAgdHogPSBjYW5vbmljYWxpemVUaW1l
Wm9uZU5hbWUob3JpZ2luYWxUeik7CiAgICAgICAgIGlmICh0ei5pc051bGwoKSkgewotICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKCZleGVjLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCB0aW1l
IHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoJmV4ZWMsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCB0aW1lIHpv
bmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNjQ3LDcgKzY0OSw3IEBAIHZvaWQgSW50bERh
dGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9yKiBnZW5lcmF0b3IgPSB1
ZGF0cGdfb3BlbihkYXRhTG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0dXMpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlM
aXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0
aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02
NjMsNyArNjY1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAog
ICAgIH0KICAgICB1ZGF0cGdfY2xvc2UoZ2VuZXJhdG9yKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
VGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjc0LDcgKzY3Niw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBTdHJpbmdW
aWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBtX2RhdGVGb3JtYXQgPSBzdGQ6OnVu
aXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4odWRhdF9vcGVuKFVEQVRf
UEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCB0aW1lWm9uZVZp
ZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgcGF0dGVy
bi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmZXhl
YywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImZhaWxl
ZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04ODMsNiArODg1LDkgQEAgSlNPYmplY3QqIEludGxEYXRlVGltZUZvcm1hdDo6cmVz
b2x2ZWRPcAogCiBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KEV4ZWNTdGF0ZSYg
ZXhlYywgZG91YmxlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMi4zLjQgRm9ybWF0
RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2lu
aXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQpIHsKICAgICAgICAgaW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KGV4ZWMsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwpAQCAtODkxLDcgKzg5Niw3
IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1MKIAogICAgIC8vIDEu
IElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJvdyBhIFJhbmdlRXJyb3IgZXhj
ZXB0aW9uLgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1JhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGF0ZSB2YWx1ZSBpcyBub3QgZmlu
aXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdCgpIikpOworICAgICAgICByZXR1cm4gdGhyb3dS
YW5nZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJkYXRlIHZhbHVlIGlzIG5vdCBm
aW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiKSk7CiAKICAgICAvLyBEZWxlZ2F0ZSBy
ZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwpAQCAtOTAzLDcgKzkwOCw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXQoRXhlY1MKICAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwg
cmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAgICB9CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImZh
aWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSIpKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmZXhl
YywgU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCkpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldh
Z29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMCw2ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAo
RUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBEYXRlVGltZUZvcm1hdCBv
YmplY3QuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5bmFtaWNDYXN0PEludGxE
YXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CkBAIC0xMTcsMjMgKzEyMSwyMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAgICAgLy8gRklYTUU6
IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNh
bGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZHRmKQotICAgICAgICBkdGYgPSBqc0R5bmFtaWND
YXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0
YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFs
dWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVU
aW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAog
ICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKCFkdGYpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1l
Rm9ybWF0IikpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJv
dW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBz
bG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5lZCwKICAgICBpZiAo
IWJvdW5kRm9ybWF0KSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkgd2FzIDAgaW4gRUNNQS00
MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIEpT
QXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwogICAgICAgICBpZiAoIWJvdW5kQXJncykKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRl
KSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlF
cnJvcihzdGF0ZSwgc2NvcGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5j
dGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNC
b3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmplY3QsIHRhcmdldE9iamVj
dCwgZHRmLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOwpAQCAtMTQ4LDE2
ICsxNTEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
KCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQqIGRhdGVUaW1lRm9ybWF0
ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkp
OwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdp
dGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZGF0ZVRpbWVGb3Jt
YXQpCi0gICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVG
b3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkp
OworICAgICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9y
bWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAogICAgIGlm
ICghZGF0ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0Iikp
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVk
T3B0aW9ucygqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5X
YWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
U3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTU5LDYgKzE2MCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6
aW5pdGlhbGl6ZU51bWJlckYKIHsKICAgICAvLyAxMS4xLjEgSW5pdGlhbGl6ZU51bWJlckZvcm1h
dCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00MDIgMi4wKQogICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCiAgICAgLy8gMS4gSWYgbnVtYmVyRm9ybWF0IGhhcyBhbiBbW2luaXRpYWxpemVkSW50
bE9iamVjdF1dIGludGVybmFsIHNsb3Qgd2l0aCB2YWx1ZSB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IG51bWJlckZvcm1hdC5bW2luaXRpYWxpemVkSW50
bE9iamVjdF1dIHRvIHRydWUuCkBAIC0xODYsNyArMTg4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9y
bWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsK
IAogICAgIC8vIDguIExldCBtYXRjaGVyIGJlIEdldE9wdGlvbihvcHRpb25zLCAibG9jYWxlTWF0
Y2hlciIsICJzdHJpbmciLCDCqyJsb29rdXAiLCAiYmVzdCBmaXQiwrssICJiZXN0IGZpdCIpLgot
ICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihzdGF0ZSwgb3B0aW9ucywgc3Rh
dGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBm
aXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0
IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgU3RyaW5nIG1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0
aW9uKHN0YXRlLCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJs
b29rdXAiLCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9v
a3VwXCIgb3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZB
YnJ1cHQobWF0Y2hlcikuCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzAsNyArMjMyLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFs
aXplTnVtYmVyRgogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gYS4g
SWYgdGhlIHJlc3VsdCBvZiBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoYyksIGlzIGZhbHNlLCB0
aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmIChjdXJyZW5jeS5s
ZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlB
bHBoYT4oKSkgewotICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IGlzIG5vdCBh
IHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiKSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
Y3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSIpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzksNyArMjQxLDcgQEAgdm9pZCBJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkgewogICAgICAgICAvLyAyMi4gSWYgcyBpcyAiY3VycmVuY3kiIGFuZCBj
IGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAo
Y3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBtdXN0IGJlIGEgc3RyaW5nIikpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBtdXN0
IGJlIGEgc3RyaW5nIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQy
MywxMSArNDI1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlTnVtYmVyRm9ybWEK
IAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXROdW1iZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgZG91YmxlIG51bWJlcikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDExLjMuNCBGb3JtYXRO
dW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX251bWJl
ckZvcm1hdCkgewogICAgICAgICBjcmVhdGVOdW1iZXJGb3JtYXQoc3RhdGUpOwogICAgICAgICBp
ZiAoIW1fbnVtYmVyRm9ybWF0KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVk
IHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CiAgICAgfQogCiAgICAgLy8gTWFwIG5lZ2F0aXZl
IHplcm8gdG8gcG9zaXRpdmUgemVyby4KQEAgLTQ0Myw3ICs0NDgsNyBAQCBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFCiAgICAgICAgIHVudW1fZm9ybWF0RG91YmxlKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBudW1iZXIsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgbnVsbHB0
ciwgJnN0YXR1cyk7CiAgICAgfQogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3Rh
dGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIikpKTsKIAogICAgIHJl
dHVybiBqc1N0cmluZygmc3RhdGUsIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVy
Rm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
KEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhpcyBOdW1iZXJGb3JtYXQgb2Jq
ZWN0LgogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTEwNywyMiArMTEwLDIxIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckYKICAgICAvLyBGSVhNRTogV29ya2Fy
b3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBs
eSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzNjc5CiAgICAgaWYgKCFuZikKLSAgICAgICAgbmYgPSBqc0R5bmFtaWNDYXN0PEludGxO
dW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5h
bWUoKSkpOworICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0
YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW5mKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJ
SUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1i
ZXJGb3JtYXQiKSkpOwogICAgIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBu
Zi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAyLiBJZiBuZi5bW2JvdW5kRm9ybWF0XV0gaXMgdW5k
ZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsKLSAgICAgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZi0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9u
IG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9m
IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRP
YmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRl
cmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXROdW1iZXIsIE5vSW50cmlu
c2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7CiAgICAgICAgIGlmICgh
Ym91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSkpOwogCiAgICAgICAgIC8vIGMuIExl
dCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KICAgICAgICAg
Ym91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9i
amVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJSUxpdGVyYWwoImZvcm1h
dCIpKTsKQEAgLTEzNywxNiArMTM5LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bE51bWJlckYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsTnVtYmVyRm9ybWF0KiBudW1i
ZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1Zh
bHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmls
aXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghbnVtYmVy
Rm9ybWF0KQotICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJG
b3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0ZS0+dm0oKS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkp
OworICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
PihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFu
dW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29s
dmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDkgQEAgYm9vbCBpbnRs
Qm9vbGVhbk9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLAogCiBTdHJpbmcgaW50bFN0cmluZ09wdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNoYXIq
IG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjaykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8v
IDkuMi45IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGUsIHZhbHVlcywgZmFsbGJh
Y2spCiAgICAgLy8gRm9yIHR5cGU9InN0cmluZyIuCiAKQEAgLTE5NSw3ICsxOTgsNyBAQCBTdHJp
bmcgaW50bFN0cmluZ09wdGlvbihFeGVjU3RhdGUmIHN0YXRlCiAgICAgICAgIC8vIGQuIElmIHZh
bHVlcyBpcyBub3QgdW5kZWZpbmVkLCB0aGVuCiAgICAgICAgIC8vIGkuIElmIHZhbHVlcyBkb2Vz
IG5vdCBjb250YWluIGFuIGVsZW1lbnQgZXF1YWwgdG8gdmFsdWUsIHRocm93IGEgUmFuZ2VFcnJv
ciBleGNlcHRpb24uCiAgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpICYmIHN0ZDo6ZmluZCh2YWx1
ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCBzdHJpbmdWYWx1ZSkgPT0gdmFsdWVzLmVuZCgpKSB7
Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFu
Z2VFcnJvcigmc3RhdGUsIG5vdEZvdW5kKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgbm90Rm91bmQpKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMjA5LDYgKzIxMiw5IEBAIFN0cmlu
ZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKIAogdW5zaWduZWQgaW50bE51bWJl
ck9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwgdW5zaWduZWQgZmFs
bGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyA5LjIuOSBHZXROdW1iZXJPcHRpb24gKG9w
dGlvbnMsIHByb3BlcnR5LCBtaW5pbXVtLCBtYXhpbXVtLCBmYWxsYmFjaykgKEVDTUEtNDAyIDIu
MCkKICAgICAvLyAxLiBMZXQgb3B0cyBiZSBUb09iamVjdChvcHRpb25zKS4KICAgICBKU09iamVj
dCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoJnN0YXRlKTsKQEAgLTIzMyw3ICsyMzksNyBAQCB1
bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgLy8gMS4gSWYgdmFsdWUgaXMgTmFOIG9yIGxlc3MgdGhhbiBtaW5pbXVt
IG9yIGdyZWF0ZXIgdGhhbiBtYXhpbXVtLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhjZXB0aW9uLgog
ICAgICAgICBpZiAoIShkb3VibGVWYWx1ZSA+PSBtaW5pbXVtICYmIGRvdWJsZVZhbHVlIDw9IG1h
eGltdW0pKSB7Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
Y3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91
dCBvZiByYW5nZSIpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCAqcHJvcGVydHkucHVibGljTmFtZSgpICsgIiBpcyBv
dXQgb2YgcmFuZ2UiKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCkBAIC01
MjQsNiArNTMwLDggQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChFeAog
ewogICAgIC8vIDkuMi4xIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QgKGxvY2FsZXMpCiAgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUuY2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHNlZW47CiAKQEAgLTU4Nyw3ICs1
OTUsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiAKICAgICAg
ICAgICAgIC8vIGlpaS4gSWYgVHlwZShrVmFsdWUpIGlzIG5vdCBTdHJpbmcgb3IgT2JqZWN0LCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgICAgICBpZiAoIWtWYWx1ZS5pc1N0
cmluZygpICYmICFrVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmlu
ZyBvciBvYmplY3QiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvciBvYmpl
Y3QiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAgICAgICAg
ICAgICB9CiAKQEAgLTYwMiw3ICs2MTAsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVM
b2NhbGVMaXN0KEV4CiAgICAgICAgICAgICAvLyB2aWkuIExldCBjYW5vbmljYWxpemVkVGFnIGJl
IENhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZykuCiAgICAgICAgICAgICBTdHJpbmcgY2Fub25p
Y2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZy0+dmFsdWUoJnN0YXRlKSk7
CiAgICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwoKSkgewotICAgICAgICAg
ICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQoImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAlcyIsIHRhZy0+
dmFsdWUoJnN0YXRlKS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBTdHJpbmc6OmZv
cm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1ZSgmc3RhdGUpLnV0Zjgo
KS5kYXRhKCkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAg
ICAgICAgICAgICB9CiAKQEAgLTg3MCw2ICs4NzgsOSBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiByZXNvbHZlTG9jYWxlKEV4CiAKIHN0YXRpYyBKU0FycmF5KiBsb29rdXBTdXBwb3J0ZWRMb2Nh
bGVzKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9j
YWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyA5LjIuNiBMb29rdXBTdXBwb3J0ZWRMb2NhbGVzIChhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzKQogCiAgICAgLy8gMS4gTGV0IHJMb2NhbGVzIGJlIENyZWF0
ZUFycmF5RnJvbUxpc3QocmVxdWVzdGVkTG9jYWxlcykuCkBAIC04NzksMTEgKzg5MCwxMCBAQCBz
dGF0aWMgSlNBcnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhFCiAgICAgc2l6ZV90IGxlbiA9
IHJlcXVlc3RlZExvY2FsZXMuc2l6ZSgpOwogCiAgICAgLy8gMy4gTGV0IHN1YnNldCBiZSBhbiBl
bXB0eSBMaXN0LgotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBKU0Fy
cmF5KiBzdWJzZXQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZz
dGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDE0ICszNywxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogSlNWYWx1ZSBpdGVyYXRvck5leHQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGl0ZXJhdG9yLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpTVmFsdWUgbmV4dEZ1bmN0
aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bmV4dCk7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIG5leHRGdW5jdGlvbiA9IGl0ZXJhdG9yLmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgQ2FsbERhdGEgbmV4dEZ1
bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgbmV4dEZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShuZXh0RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAobmV4
dEZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5leHRGdW5jdGlvbkFyZ3VtZW50czsK
ICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTUzLDcgKzU3LDcgQEAgSlNWYWx1ZSBpdGVy
YXRvck5leHQoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBv
YmplY3QuIikpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTg5LDE4ICs5MywyMSBAQCBK
U1ZhbHVlIGl0ZXJhdG9yU3RlcChFeGVjU3RhdGUqIGV4ZWMsIEpTCiAKIHZvaWQgaXRlcmF0b3JD
bG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3IpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAg
ICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KLSAgICBKU1ZhbHVlIHJldHVybkZ1
bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+cmV0
dXJuS2V5d29yZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9IGl0ZXJhdG9yLmdldChl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXR1cm5GdW5jdGlvbi5p
c1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTA4LDkgKzExNSw5IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmEKICAgICBDYWxsVHlwZSByZXR1cm5GdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEocmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChyZXR1
cm5GdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAgICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9u
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTExOCw3ICsxMjUsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhCiAgICAgSlNWYWx1ZSBpbm5lclJlc3VsdCA9IGNhbGwoZXhlYywgcmV0dXJuRnVu
Y3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUsIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEsIGl0
ZXJhdG9yLCByZXR1cm5GdW5jdGlvbkFyZ3VtZW50cyk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEyNiw3ICsxMzMsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaW5uZXJSZXN1
bHQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJl
c3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiB9CkBAIC0xNDcsMTQgKzE1NCwxOCBAQCBTdHJ1Y3R1cmUqIGNyZWF0ZUl0ZXJhdG9yUmVz
dWx0T2JqZWN0U3RyCiAKIEpTT2JqZWN0KiBjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIGJvb2wgZG9uZSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiByZXN1bHRPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPml0ZXJhdG9yUmVzdWx0T2Jq
ZWN0U3RydWN0dXJlKCkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMtPnZtKCks
IGRvbmVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFuKGRvbmUpKTsKLSAgICByZXN1bHRPYmplY3Qt
PnB1dERpcmVjdChleGVjLT52bSgpLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CisgICAg
cmVzdWx0T2JqZWN0LT5wdXREaXJlY3Qodm0sIGRvbmVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFu
KGRvbmUpKTsKKyAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdCh2bSwgdmFsdWVQcm9wZXJ0eU9m
ZnNldCwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHRPYmplY3Q7CiB9CiAKIEpTVmFsdWUgaXRl
cmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHN0YXRlLCBKU1ZhbHVlIGl0ZXJhYmxlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAKICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVuY3Rpb24gPSBpdGVyYWJs
ZS5nZXQoc3RhdGUsIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAg
IGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBA
IC0xNjIsNyArMTczLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0ZSog
cwogICAgIENhbGxEYXRhIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBp
dGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpdGVyYXRvckZ1bmN0aW9uLCBp
dGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgIH0KIApAQCAtMTcyLDcgKzE4Myw3IEBAIEpTVmFsdWUgaXRlcmF0b3JGb3JJ
dGVyYWJsZShFeGVjU3RhdGUqIHMKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKIAogICAgIGlm
ICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDEzLCAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNy0yMDA5LCAyMDEyLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChwbWtAcG9z
dC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55
cG9wLmNvbSkKICAqCkBAIC03NSw2ICs3NSw5IEBAIHZvaWQgSlNBcnJheTo6c2V0TGVuZ3RoV3Jp
dGFibGUoRXhlY1N0YXQKIC8vIERlZmluZWQgaW4gRVM1LjEgMTUuNC41LjEKIGJvb2wgSlNBcnJh
eTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0FycmF5
KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAogICAgIC8vIDMuIElmIFAgaXMg
Imxlbmd0aCIsIHRoZW4KQEAgLTEwNiw3ICsxMDksNyBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbiA9IGRlc2NyaXB0b3Iu
dmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgLy8gZC4gSWYgbmV3TGVuIGlzIG5vdCBl
cXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0pLCB0aHJvdyBhIFJhbmdlRXJyb3IgZXhj
ZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRlc2NyaXB0b3IudmFsdWUoKS50b051bWJl
cihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgi
KSkpOworICAgICAgICAgICAgSlNDOjp0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xOTEsNiArMTk0LDkg
QEAgYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplYwogLy8gRUNNQSAxNS40
LjUuMQogYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNBcnJheSo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChz
bG90LCB0aGlzT2JqZWN0KSkpCkBAIC0xOTksNyArMjA1LDcgQEAgYm9vbCBKU0FycmF5OjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSB2YWx1
ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZhbHVlLnRvTnVtYmVyKGV4ZWMpICE9IHN0
YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
SW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBuZXdMZW5ndGgsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwpAQCAtMzkzLDYgKzM5OSw4IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVu
Z3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjphcHBlbmRNZW1jcHkoRXhlY1N0
YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIEpTQzo6SlNBcnJheSogb3Ro
ZXJBcnJheSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoIWNhbkZhc3RDb3B5KHZtLCBvdGhlckFycmF5KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC00MTgsNyArNDI2LDcgQEAgYm9vbCBKU0FycmF5OjphcHBlbmRNZW1jcHkoRXhl
Y1N0YXRlKiBleAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgbmV3TGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUKGNvcHlUeXBlID09IGluZGV4aW5nVHlwZSgp
KTsKQEAgLTQzMyw2ICs0NDEsOSBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3Rh
dGUqIGV4CiAKIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgbmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
QnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgpAQCAtNDQxLDkgKzQ1Miw5IEBA
IGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgaWYgKG5l
d0xlbmd0aCA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAgICAgICAgICByZXR1cm4g
c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBuZXdMZW5n
dGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZShl
eGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCBuZXdM
ZW5ndGgpOworICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKHZtLCBuZXdMZW5ndGgpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lk
ZWQ6CkBAIC00NTcsMTEgKzQ2OCwxMSBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3Rh
dGUqIGV4ZWMsCiAgICAgICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IobmV3
TGVuZ3RoLCBjb3VudEVsZW1lbnRzKCkpKSkgewogICAgICAgICAgICAgcmV0dXJuIHNldExlbmd0
aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywgbmV3TGVuZ3RoLCB0aHJv
d0V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2UoZXhlYy0+dm0o
KSkpOworICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChuZXdMZW5ndGggPiBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpKSB7Ci0g
ICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAg
aWYgKCFlbnN1cmVMZW5ndGgodm0sIG5ld0xlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDcwLDcg
KzQ4MSw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoVG9DbGVhciA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkgLSBu
ZXdMZW5ndGg7CiAgICAgICAgIHVuc2lnbmVkIGNvc3RUb0FsbG9jYXRlTmV3QnV0dGVyZmx5ID0g
NjQ7IC8vIGEgaGV1cmlzdGljLgogICAgICAgICBpZiAobGVuZ3RoVG9DbGVhciA+IG5ld0xlbmd0
aCAmJiBsZW5ndGhUb0NsZWFyID4gY29zdFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkpIHsKLSAgICAg
ICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJmbHkoZXhlYy0+dm0oKSwgbmV3TGVuZ3Ro
KTsKKyAgICAgICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJmbHkodm0sIG5ld0xlbmd0
aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC00OTcsNiArNTA4
LDkgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogCiBKU1ZhbHVl
IEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0
ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIAogICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKQEAgLTU0OCw3ICs1NjIsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBv
cChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxl
bmd0aCgpOwogICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAgICAgaWYgKCFpc0xlbmd0
aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKQEAgLTU4
MCw3ICs1OTQsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIC8vIENhbGwgdGhlIFtbRGVsZXRlXV0gaW50
ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMgaW5keCBhbmQgdHJ1ZS4KICAgICBpZiAo
IWRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzLCBleGVjLCBpbmRleCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KICAgICAvLyBDYWxsIHRoZSBbW1B1dF1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggYXJndW1lbnRzICJsZW5ndGgiLCBpbmR4LCBhbmQgdHJ1ZS4KQEAgLTU5NCwyMyArNjA4
LDI2IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIC8vICAtIHB1c2hp
bmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQg
dGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lk
ZWQoZXhlYy0+dm0oKSwgMCk7CisgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQodm0sIDAp
OwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlX
aXRoVW5kZWNpZGVkOiB7Ci0gICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShleGVjLT52
bSgpLCB2YWx1ZSk7CisgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZSh2bSwgdmFsdWUp
OwogICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjogewogICAgICAgICBpZiAoIXZhbHVlLmlz
SW50MzIoKSkgewotICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUoZXhlYy0+dm0oKSwg
dmFsdWUpOworICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUodm0sIHZhbHVlKTsKICAg
ICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC02MjQsOSArNjQxLDkgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FS
UkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJ
bmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhv
ZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsK
ICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtNjM4LDE1ICs2NTUsMTUgQEAgdm9pZCBKU0FycmF5OjpwdXNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBidXR0ZXJm
bHktPnB1YmxpY0xlbmd0aCgpOwogICAgICAgICBBU1NFUlQobGVuZ3RoIDw9IGJ1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAobGVuZ3RoIDwgYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSkgewotICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbbGVuZ3RoXS5z
ZXQoZXhlYy0+dm0oKSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250
aWd1b3VzKClbbGVuZ3RoXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgIGJ1dHRl
cmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FSUkFZX0lOREVY
KSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
LCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAg
ICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIApAQCAtNjU2LDEzICs2NzMsMTMgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYQogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZTogewogICAg
ICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIGNvbnZlcnREb3VibGVU
b0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CisgICAgICAgICAgICBjb252ZXJ0RG91YmxlVG9Db250
aWd1b3VzKHZtKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlID0gdmFsdWUu
YXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlQXNEb3VibGUgIT0gdmFsdWVBc0RvdWJsZSkg
ewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVjLT52bSgpKTsKKyAg
ICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAgICAgICAgICAgcHVz
aChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY3Niw5
ICs2OTMsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsK
LSAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4
ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5w
dXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAg
aWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJ
bnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC03MDMsNyArNzIwLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYQogICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNoIHdpdGhpbiB2ZWN0b3IsIGFsd2F5
cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yLgogICAgICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKICAgICAgICAgaWYgKGxlbmd0aCA8IHN0b3Jh
Z2UtPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltsZW5n
dGhdLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBzdG9yYWdlLT5t
X3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgc3RvcmFn
ZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAgICAgKytzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzExLDEwICs3MjgsMTAgQEAg
dm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogCiAgICAgICAgIC8vIFB1
c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5ndGggKDJeMzEtMSkgc3RvcmVzIHRoZSBw
cm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgogICAgICAgICBpZiAoc3RvcmFnZS0+
bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
ZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIC8vIFBl
ciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4KICAgICAgICAgICAg
IGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
SW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTk2Myw2ICs5ODAsOSBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdU
CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHVuc2hpZnQgY2FuIGJlIGhhbmRsZWQsIGZhbHNlIHRv
IGZhbGxiYWNrLiAgICAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50LCBB
cnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHN0YXJ0SW5kZXgg
PD0gbGVuZ3RoKTsKQEAgLTk4MSwxMyArMTAwMSwxMyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRD
b3VudFdpdGhBcnJheVN0b3JhCiAgICAgICAgIHN0b3JhZ2UgPSBuZXdCdXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpOwogICAgICAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyAtPSBjb3VudDsKICAgICAg
ICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCArIGNvdW50KTsKLSAgICAg
ICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKGV4ZWMtPnZtKCksIG5ld0J1
dHRlcmZseSk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVyZSh2
bSwgbmV3QnV0dGVyZmx5KTsKICAgICB9IGVsc2UgaWYgKCFtb3ZlRnJvbnQgJiYgdmVjdG9yTGVu
Z3RoIC0gbGVuZ3RoID49IGNvdW50KQogICAgICAgICBzdG9yYWdlID0gc3RvcmFnZS0+YnV0dGVy
Zmx5KCktPmFycmF5U3RvcmFnZSgpOwotICAgIGVsc2UgaWYgKHVuc2hpZnRDb3VudFNsb3dDYXNl
KGV4ZWMtPnZtKCksIG1vdmVGcm9udCwgY291bnQpKQorICAgIGVsc2UgaWYgKHVuc2hpZnRDb3Vu
dFNsb3dDYXNlKHZtLCBtb3ZlRnJvbnQsIGNvdW50KSkKICAgICAgICAgc3RvcmFnZSA9IGFycmF5
U3RvcmFnZSgpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTAwNyw2ICsxMDI3LDkgQEAgYm9vbCBKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCBjb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewpAQCAtMTAyMiwxMCArMTA0NSwxMCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdp
dGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVudGlyZSBh
cnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAgICAgICAv
LyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRMZW5ndGgg
LSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAgICAgICAgICByZXR1
cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwg
ZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAgIHJldHVybiB1bnNo
aWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVB
cnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKGV4
ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAgICAgdGhyb3dPdXRPZk1l
bW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgb2xkTGVuZ3Ro
ICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJ1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTAzNSw3ICsxMDU4LDcgQEAgYm9vbCBKU0Fy
cmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYg
PSBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWSghdikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0
b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52
bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3Jh
Z2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFy
dEluZGV4OykgewpAQCAtMTA1OCwxMCArMTA4MSwxMCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRD
b3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdhbGsgdGhlIGVu
dGlyZSBhcnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBkbyBzbwogICAg
ICAgICAvLyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAgIGlmIChvbGRM
ZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0gICAgICAgICAg
ICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydEluZGV4LCBj
b3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAgICAgIHJldHVy
biB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBl
bnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICghZW5zdXJlTGVu
Z3RoKGV4ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aCh2bSwgb2xk
TGVuZ3RoICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTA3MSw3ICsxMDk0LDcgQEAgYm9v
bCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAgICAgICBkb3Vi
bGUgdiA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHYgIT0gdikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFn
ZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2
bSkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVuZ3RoOyBp
LS0gPiBzdGFydEluZGV4OykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw5IEBAIFN0cnVjdHVyZSog
SlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpjcmUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9CiAg
ICAgICAgIGpzQ2FzdDxKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
CiAgICAgCkBAIC05NiwxOSArOTksMjEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29ucwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShsZW5ndGgsIDEpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBT
dHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRl
U3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGNvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
Ci0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKGV4ZWMt
PnZtKCksIGFycmF5QnVmZmVyU3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgIEpTQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgYXJyYXlCdWZmZXJT
dHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihl
eGVjLCAiQXJyYXlCdWZmZXIiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNCArMzcsMTcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUo
KSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVj
ZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBv
ZiBzbGljZSBtdXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CiAgICAgCiAgICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKICAgICAKICAgICBp
bnQzMl90IGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02MCwxMSArNjMsMTEgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYQogICAgIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
bmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdpbiwgZW5kKTsKICAgICBp
ZiAoIW5ld0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKTsK
ICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOwog
ICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIldlYWtHQ01hcElubGluZXMuaCIKIAog
I2VuZGlmIC8vIEpTQ0lubGluZXNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgs
IDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTk0LDYgKzk0LDggQEAgT3B0aW9uYWw8ZG91YmxlPiBKU1ZhbHVlOjp0b051
bWJlckZyb21QcgogCiBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKICAgICBpZiAoaXNJbnQzMigpIHx8IGlzRG91
YmxlKCkpCkBAIC0xMDIsOCArMTA0LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnRvT2JqZWN0U2xv
d0Nhc2UoRXhlYwogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVhbkZyb21JbW1lZGlhdGVC
b29sZWFuKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKIAogICAgIEFTU0VSVChpc1Vu
ZGVmaW5lZE9yTnVsbCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVj
LCAqdGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xMjQsNiArMTI1LDkgQEAg
SlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShFeGVjU3RhdAogCiBKU09iamVjdCogSlNW
YWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYgKGlzU3RyaW5nKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5zdHJpbmdQcm90
b3R5cGUoKTsKQEAgLTEzNyw4ICsxNDEsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6
ZVByb3RvdHlwZShFCiAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmJvb2xlYW5Qcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsK
LSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC0xNDYsNiArMTQ5LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6
OnN5bnRoZXNpemVQcm90b3R5cGUoRQogYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChPcHRpb25hbDx1
aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHJldHVy
biBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUoKSwgdmFsdWUsIHNsb3Qu
aXNTdHJpY3RNb2RlKCkpOwpAQCAtMTYwLDcgKzE2NCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+Z2V0UHJv
dG90eXBlRGlyZWN0KCk7CiAgICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTcyLDcgKzE3Niw3IEBA
IGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgaWYgKG9m
ZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJl
YWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApAQCAtMTk2LDEyICsyMDAs
MTUgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgIH0KICAg
ICAKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoKnRoaXMsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZlKGV4
ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwpA
QCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4
ZWMKICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBpZiAoc2hvdWxkVGhyb3cp
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMzM4LDEzICszNDUsMTUgQEAgYm9vbCBKU1ZhbHVlOjppc1ZhbGlkQ2FsbGVlKCkKIAogSlNT
dHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjLCBib29sIHJl
dHVybkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8g
ZXJyb3JWYWx1ZSA9IFsmXSAoKSAtPiBKU1N0cmluZyogewogICAgICAgICBpZiAocmV0dXJuRW1w
dHlTdHJpbmdPbkVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH07CiAgICAgCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOwogICAgIGlmIChpc0ludDMyKCkpIHsK
ICAgICAgICAgYXV0byBpbnRlZ2VyID0gYXNJbnQzMigpOwpAQCAtMzYzLDcgKzM3Miw3IEBAIEpT
U3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWMKICAgICBpZiAoaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJpbmcoKTsK
ICAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVy
dCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJuIGVycm9yVmFsdWUoKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC02MzMsOCArNjMzLDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvUHJpbWl0aXZlKEV4
ZWMKIAogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmltaXRpdmVU
eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghdmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByaW1pdGl2ZSBoaW50
IGlzIG5vdCBhIHN0cmluZy4iKSk7CiAgICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiAgICAg
fQogCkBAIC02NDksNyArNjUyLDcgQEAgaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9Q
cmVmZXJyZQogICAgIGlmIChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJzdHJpbmciKSkKICAgICAg
ICAgcmV0dXJuIFByZWZlclN0cmluZzsKIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2ggb25lIG9mICdkZWZhdWx0
JywgJ251bWJlcicsICdzdHJpbmcnLiIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2Yg
J2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIikpOwogICAgIHJldHVybiBOb1ByZWZlcmVu
Y2U7CiB9CiAKQEAgLTEwMzEsOSArMTAzNCwxMiBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6
cHVyZVRvQm9vbGVhbigpCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjpyZXF1aXJlT2Jq
ZWN0Q29lcmNpYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMs
ICp0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFuT2Jq
ZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDE2ICs0NywxOCBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3
OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBpZiAoIUFycmF5QnVmZmVyVmll
dzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoLCBz
aXplb2YodWludDhfdCkpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIi
KSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6
dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXplb2YodWludDhfdCkpKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIENvbnN0
cnVjdGlvbkNvbnRleHQgY29udGV4dCgKICAgICAgICAgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVP
ZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsKICAgICBB
U1NFUlQoY29udGV4dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEyMiwxMiArMTIyLDE1IEBAIFN0cnVjdHVyZSogSlNEYXRhVmlld1Byb3RvdHlw
ZTo6Y3JlYXRlU3QKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBFbmNvZGVkSlNWYWx1ZSBn
ZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcq
IGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghZGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBE
YXRhVmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRh
VmlldyIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0
IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDMsNyArMTQ2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8
IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91
dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3Vu
ZHMgYWNjZXNzIikpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFTaXplID0gc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE2NywxMiArMTcwLDE1IEBA
IEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5bmFtaWNDYXN0PEpT
RGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBv
ZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBE
YXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAgIAogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9m
ZnNldCBhbmQgdmFsdWUpIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IHR3byBhcmd1bWVudCAodGhlIGJ5
dGVPZmZzZXQgYW5kIHZhbHVlKSIpKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtMTk4LDcgKzIwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNldERh
dGEoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2Yg
Ym91bmRzIGFjY2VzcyIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPdXQgb2YgYm91bmRzIGFj
Y2VzcyIpKSk7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yMjAsMjcgKzIyNiwzNiBA
QCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVyKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZl
ciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZm
ZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmlldy0+anNCdWZmZXIoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFt
aWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBl
LmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlw
ZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+bGVuZ3RoKCkpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNl
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0RhdGFWaWV3KiB2aWV3
ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGFWaWV3
LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3Qi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJEYXRhVmll
dy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0
Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmJ5dGVPZmZz
ZXQoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGV4ZWMtPmNhbGxlZSgp
KSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVlKCkpKTsKIH0KIAogY29u
c3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Z1bmN0aW9uKSB9OwpAQCAtMzIxLDYgKzMy
Myw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oRXgKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAg
ICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24oZXhlYywgdGhpc09iaik7
CkBAIC0zMzUsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0
dGVyKAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxs
ZXIpOwogICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSB8fCAhZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYWxsZXIpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxsZXIgdXNlZCB0byByZXRy
aWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2Vk
IHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQogCiBib29sIEpTRnVuY3Rpb246Omdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTQyMyw2ICs0Mjgs
OSBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiAKIGJvb2wgSlNG
dW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwg
dGhpc09iamVjdCkpKQpAQCAtNDM3LDI1ICs0NDUsMjggQEAgYm9vbCBKU0Z1bmN0aW9uOjpwdXQo
SlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBi
ZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAg
ICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5j
dGlvbiIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2Ug
YSBbW1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlTbG90
IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAg
ICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IGRvbnRDYWNoZSk7CiAgICAgfQogICAgIGlmICh0aGlzT2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVy
KSkgewogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgcHJvcGVydHkgdG8gYmUgcmVp
ZmllZCwgaWYgdGhpcyBpcyBub3QgYWxyZWFkeSB0aGUgY2FzZSEKICAgICAgICAgYm9vbCBva2F5
ID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
QVNTRVJUX1VOVVNFRChva2F5LCBva2F5KTsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
ICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jYWxsZXIpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRlZChleGVjLCBwcm9wZXJ0
eU5hbWUpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCkBAIC00ODAsNiAr
NDkxLDkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIAogCiBib29s
IEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsK
ICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkgewogICAgICAg
ICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7
CkBAIC00OTAsNyArNTA0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iagogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1
Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcg
dGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1J
bnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
ICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICBpZiAodGhpc09i
amVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNs
ZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAg
ICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKQEAgLTUyMCwyNyArNTM0LDI3IEBAIGJv
b2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICAgCiAgICAgaWYgKGRl
c2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxl
KCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1cmFi
bGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmVu
dW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3Io
KSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vz
c01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5p
c21FcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlw
dG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAg
ICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB3cml0YWJsZSBh
dHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIGlmICghdmFsdWVDaGVjaykgewogICAgICAgICBpZiAodGhyb3dF
eGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdfaAogCiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5jbHVkZSAiVG9OYXRpdmVG
cm9tVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNjgsMTIgKzE2OSwxNSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgYm9vbCBzZXRJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUganNWYWx1ZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICB0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4o
ZXhlYywganNWYWx1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoaXNOZXV0ZXJlZCgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgwLDExIEBAIFN0cnVjdHVyZSog
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHIKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3RnJvbUl0
ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgaXRl
cmF0b3IpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC5J
dGVyYXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdC4i
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90IHJldHVy
biBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgc3RvcmFnZTsKICAg
ICB3aGlsZSAodHJ1ZSkgewpAQCAtMTE4LDggKzEyMSwxMCBAQCBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMo
RXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5jb2RlZEpTVmFsdWUgZmly
c3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNpZ25lZD4gbGVuZ3RoT3B0
KQogewotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShmaXJzdEFyZ3Vt
ZW50KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShmaXJzdEFyZ3VtZW50KTsKIAogICAgIGlmIChKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGZpcnN0VmFsdWUpKSB7CiAgICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0ganNCdWZmZXItPmltcGwoKTsKQEAgLTEyOSw3ICsx
MzQsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgICAg
ICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBpZiAoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAlIFZpZXdDbGFzczo6ZWxl
bWVudFNpemUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihleGVjLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5n
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zm
c2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiKTsKICAgICAgICAgICAg
IGxlbmd0aCA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgLyBWaWV3Q2xhc3M6OmVs
ZW1lbnRTaXplOwogCiAgICAgICAgIH0KQEAgLTEzOSw3ICsxNDQsNyBAQCBpbmxpbmUgSlNPYmpl
Y3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0
aE9wdCk7CiAgICAgCiAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09
IFR5cGVEYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXhwZWN0ZWQgQXJyYXlCdWZmZXIgZm9yIHRoZSBmaXJzdCBhcmd1bWVudC4iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiIpKTsKICAgICAK
ICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdlIGFsbG93IGNvbnN0cnVjdGlv
biB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXkuIFRoaXMgY3JlYXRlcyBhIGNv
cHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc5LDcgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICAgICAgICAgICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShpdGVyYXRvckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZv
ciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxl
ZC4iKSk7CiAKICAgICAgICAgICAgICAgICAgICAgQXJnTGlzdCBhcmd1bWVudHM7CiAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGV4ZWMsIGl0ZXJhdG9yRnVuYywg
Y2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ3VtZW50cyk7CkBAIC0yMDYsMTUgKzIxMSwx
NSBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgaWYgKGZp
cnN0VmFsdWUuaXNJbnQzMigpKQogICAgICAgICBsZW5ndGggPSBmaXJzdFZhbHVlLmFzSW50MzIo
KTsKICAgICBlbHNlIGlmICghZmlyc3RWYWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBh
cmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOwogICAgIGVsc2Ug
ewogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KGZpcnN0VmFsdWUuYXNOdW1iZXIo
KSk7CiAgICAgICAgIGlmIChsZW5ndGggIT0gZmlyc3RWYWx1ZS5hc051bWJlcigpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBh
cnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBu
b3QgYWxsb3dlZCkiKSk7CiAgICAgfQogCiAgICAgaWYgKGxlbmd0aCA8IDApCi0gICAgICAgIHJl
dHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIlJlcXVlc3Rl
ZCBsZW5ndGggaXMgbmVnYXRpdmUiKTsKICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBsZW5ndGgpOwogfQogCkBAIC0yMjQsNiArMjI5LDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSW50ZXJuYWxG
dW5jdGlvbiogZnVuY3Rpb24gPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgp
LT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlKTsK
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNs
YXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBwYXJlbnRTdHJ1Y3R1cmUpOwpA
QCAtMjM0LDcgKzI0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
R2UKIAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRB
cnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVx
dWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkRhdGFWaWV3IGNvbnN0cnVj
dG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSk7CiAKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIDApKTsK
ICAgICB9CkBAIC0yNjgsNyArMjc2LDkgQEAgQ29uc3RydWN0VHlwZSBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIFZpZXdDbGFzczo6aW5mbygpLT5j
bGFzc05hbWUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
Vmlld0NsYXNzPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNSArNDgsMTcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBsZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgQ29uc3RydWN0
aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PihleGVjLT52bSgpLmhlYXApKQotICAgICAgICBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldyhleGVjLT52bSgpLCBjb250ZXh0KTsKLSAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisgICAgICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02NCwxNyArNjYsMTkgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0aWFsaXplZCgKICAg
ICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAotICAgICAg
ICBleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpLAorICAgICAgICB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBB
ZGFwdG9yOjpUeXBlKSwKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dDo6RG9udEluaXRpYWxp
emUpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
cmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXcodm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTgzLDIyICs4NywyNCBAQCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBzaXplX3Qgc2l6ZSA9
IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAoIUFycmF5QnVmZmVyVmll
dzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUp
KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGgg
b3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5
dGVPZmZzZXQsIHNpemUpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSk7
CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dChleGVjLT52bSgpLCBz
dHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICBDb25zdHJ1Y3Rpb25D
b250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVz
dWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXco
dm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTEyOCwxMCArMTM0LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFk
YXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp2YWxpZGF0ZVJh
bmdlKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGNhbkFjY2Vzc1JhbmdlUXVpY2tseShvZmZzZXQs
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgY29uc2lzdGlu
ZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5kcyIpKTsKKyAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgY29uc2lz
dGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5kcyIpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTI5MCw4ICsyOTgsMTAgQEAgQXJyYXlCdWZmZXIqIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYQogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRK
U1ZhbHVlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlw
ZWRBcnJheVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIG9iamVjdCwg
UHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVF9VTlVTRUQob2JqZWN0LCBq
c0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihKU1ZhbHVlOjpkZWNvZGUob2JqZWN0KSkt
PmlzTmV1dGVyZWQoKSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5
cGVGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw5
IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIGlubGluZSBK
U0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBleGVtcGxhciwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIGNvbnN0IEZ1bmN0b3Im
IGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgY29uc3Ry
dWN0b3IgPSBleGVtcGxhci0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3Rvcik7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTU0LDcgKzU3LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVz
Q29uc3RydQogICAgIGlmIChjb25zdHJ1Y3Rvci5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1
cm4gZGVmYXVsdENvbnN0cnVjdG9yKCk7CiAgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiY29uc3RydWN0
b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91bGQg
bm90IGJlIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzMs
MTEgKzc2LDExIEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnUKICAg
ICAgICAgaWYgKCF2aWV3LT5pc05ldXRlcmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gdmlldzsK
IAotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZp
ZXciKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgic3Bl
Y2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtOTYsNDMgKzk5LDQ1IEBAIGlubGluZSB1bnNpZ25l
ZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb20KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gMjIuMi4zLjIyCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFz
cyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4
cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMt
PmFyZ3VtZW50Q291bnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsK
IAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49
IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW50ZWdlcihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKG9mZnNl
dE51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZXhlYywg
Ik9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAgIGlmIChVTkxJS0VMWShv
ZmZzZXROdW1iZXIgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihl
eGVjLCBzY29wZSwgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CiAgICAgICAgIG9m
ZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbihvZmZzZXROdW1iZXIsIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPmlz
TmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgaWYgKFVOTElLRUxZ
KHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIEpTT2JqZWN0KiBzb3VyY2VBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmpl
Y3QqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYgKCFzb3VyY2VBcnJheSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGaXJz
dCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgIGlmIChVTkxJS0VMWSghc291
cmNlQXJyYXkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIGlmIChpc1R5cGVkVmlldyhzb3VyY2VBcnJheS0+Y2xh
c3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKICAgICAgICAgSlNBcnJheUJ1ZmZl
clZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJh
eSk7Ci0gICAgICAgIGlmIChzb3VyY2VWaWV3LT5pc05ldXRlcmVkKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNvdXJjZVZpZXctPmlzTmV1
dGVyZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAg
ICAgbGVuZ3RoID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oc291cmNlQXJyYXkpLT5sZW5n
dGgoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gc291cmNlQXJyYXktPmdldChleGVj
LCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50MzIoZXhlYyk7CisgICAg
ICAgIGxlbmd0aCA9IHNvdXJjZUFycmF5LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKS50b1VJbnQzMihleGVjKTsKIAotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdGhpc09iamVjdC0+c2V0KGV4ZWMsIG9m
ZnNldCwgc291cmNlQXJyYXksIDAsIGxlbmd0aCwgQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CkBA
IC0xNDAsMTMgKzE0NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNU
eXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7Cisv
LyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy41Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAg
ICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogICAgIGxvbmcgdG8gPSBhcmd1
bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxlbmd0aCk7CkBAIC0xNjUs
NyArMTcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAg
IGxvbmcgY291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0bywgZnJvbSksIGZpbmFs
IC0gZnJvbSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAg
ICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50
eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUoYXJyYXkgKyB0bywgYXJyYXkgKyBmcm9tLCBjb3Vu
dCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXplKTsKQEAgLTE3NCwxMiArMTgxLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisvLyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBA
IC0xOTMsNyArMjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdD
bGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAg
ICBhdXRvIHRhcmdldE9wdGlvbiA9IFZpZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVl
V2l0aG91dENvZXJjaW9uKHZhbHVlVG9GaW5kKTsKQEAgLTIxOSwxNiArMjI4LDE4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihWTSYg
dm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjEz
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0
LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBl
Y3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBh
cmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgp
OwogCkBAIC0yMzgsNyArMjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVs
ZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgYXV0byB0
YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhvdXRD
b2VyY2lvbih2YWx1ZVRvRmluZCk7CkBAIC0yNTYsMTEgKzI2NywxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdD
bGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4oVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpz
Q2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIDIyLjIuMy4xNAogICAgIGF1dG8gam9pbldp
dGhTZXBhcmF0b3IgPSBbJl0gKFN0cmluZ1ZpZXcgc2VwYXJhdG9yKSAtPiBFbmNvZGVkSlNWYWx1
ZSB7CkBAIC0yODksMjEgKzMwMywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5
cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgIHJldHVybiBq
b2luV2l0aFNlcGFyYXRvcihzZXBhcmF0b3JTdHJpbmctPnZpZXcoZXhlYykuZ2V0KCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDIyLjIuMy4xNgotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgaWYg
KCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMzI2LDcgKzM0Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIGF1dG8gdGFyZ2V0T3B0aW9uID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRp
dmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24odmFsdWVUb0ZpbmQpOwogICAgIGlmICghdGFyZ2V0
T3B0aW9uKQpAQCAtMzQ1LDcgKzM2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
dWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoVk0mLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzU0LDcgKzM3MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1
bmNMZW5ndGgoVk0mLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjE3CiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKQEAgLTM2Myw3ICszNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0
ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoVk0mLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjIKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzcyLDcgKzM4OCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAy
Mi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihl
eGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zODEsMTIgKzM5NywxNSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy4yMQogICAgIFZpZXdD
bGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1l
IFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3Io
KTsKICAgICBzdGQ6OnJldmVyc2UoYXJyYXksIGFycmF5ICsgdGhpc09iamVjdC0+bGVuZ3RoKCkp
OwpAQCAtMzk1LDEyICs0MTQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU29ydChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gMjIuMi4zLjI1CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAodGhpc09iamVj
dC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0
eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdGhpc09iamVjdC0+c29ydCgpOwogCkBAIC00
MDgsMTUgKzQzMCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBl
eGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNTbGljZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgLy8gMjIuMi4zLjI2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKIAogICAg
IFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVy
cm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHVu
c2lnbmVkIHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtNDI4LDcgKzQ1
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAg
cmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgLy8gQ2xhbXAgZW5kIHRvIGJlZ2luLgogICAgIGVuZCA9IHN0ZDo6
bWF4KGJlZ2luLCBlbmQpOwpAQCAtNDQ4LDcgKzQ3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGUKIAogICAgIEFTU0VSVCghcmVzdWx0LT5pc05ldXRlcmVkKCkp
OwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBXZSBy
ZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgc3RvcmUg
aWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBudWxscHRycwogICAgIGlm
ICghbGVuZ3RoKQpAQCAtNDkyLDE1ICs1MTYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5j
U3ViYXJyYXlDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKFZNJnZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy4yMwot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0
PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBHZXQgdGhlIGxlbmd0aCBoZXJl
OyBsYXRlciBhc3NlcnQgdGhhdCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFuZ2UuCiAgICAgdW5zaWdu
ZWQgdGhpc0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwpAQCAtNTUyLDcgKzU3OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJzcGVjaWVz
IGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Iik7CisgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0
dXJuIGEgVHlwZWRBcnJheSBWaWV3Iik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDIs
MTkgKzEyMDIsMjIgQEAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdAog
CiBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVFdmFsQ29kZUJs
b2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCiB7CisgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpT
dHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAgICBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlID0gaGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERl
YnVnZ2VyT2ZmOwogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBleGVjdXRh
YmxlLT5leGVjdXRhYmxlSW5mbygpLmV2YWxDb250ZXh0VHlwZSgpOwogICAgIAotICAgIFVubGlu
a2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgpLmNvZGVDYWNoZSgpLT5n
ZXRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSgpLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5z
b3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgZGVi
dWdnZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWik7Cisg
ICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtLmNvZGVDYWNo
ZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAorICAgICAgICB2bSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJs
ZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUs
IGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFop
OwogCiAgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBh
cnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxp
bmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBl
eGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEyMjMsMTYgKzEyMjYsMTkgQEAg
VW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6YwogCiBVbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgPyBEZWJ1
Z2dlck9uIDogRGVidWdnZXJPZmY7Ci0gICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1D
b2RlQmxvY2soCi0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIGVycm9yKTsK
KyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0g
dm0uY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCisgICAgICAgIHZtLCBl
eGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwgZGVidWdnZXJNb2RlLCBlcnJvcik7CiAKICAgICBpZiAoaGFzRGVidWdnZXIoKSkK
ICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwgZXhlY3V0YWJsZS0+
c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwogCiAg
ICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1l
LCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CisgICAg
ICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50b0Vycm9yT2JqZWN0KHRo
aXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAw
MiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQ
ZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDksIDIwMTIsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBD
YW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqCkBAIC03NiwxMSArNzYsMTQgQEAgc3RhdGljIEJpdG1h
cDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoYwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEJpdG1h
cDwyNTY+JiBkb05vdEVzY2FwZSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTguMi42LjEuMSBSdW50aW1l
IFNlbWFudGljczogRW5jb2RlICggc3RyaW5nLCB1bmVzY2FwZWRTZXQgKQogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVuY29kZQogCi0gICAgYXV0byB0aHJvd0V4
Y2VwdGlvbiA9IFtleGVjXSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIGNvbnRh
aW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOworICAgIGF1dG8gdGhyb3dFeGNl
cHRpb24gPSBbJnNjb3BlLCBleGVjXSB7CisgICAgICAgIHJldHVybiBKU0M6OnRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN0cmlu
ZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikpKTsKICAgICB9OwogCiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMTYzLDYgKzE2Niw5IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KIEFMV0FZU19JTkxJTkUKIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBj
b25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJpY3QpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBpbnQgayA9IDA7CiAgICAg
VUNoYXIgdSA9IDA7CkBAIC0yMDMsNyArMjA5LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4
ZWNTdGF0ZSogZXhlYywgYwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJMZW4g
PT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVycm9yIikpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgY2Fz
ZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUgInVuZXNjYXBlIiBmdW5j
dGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwgaXQncyBnb29kIHRvIHN1cHBvcnQg
dGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAg
ICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBwWzFdID09ICd1JwpAQCAtNjQwLDEz
ICs2NDYsMTYgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KFN0cmluZ1ZpZXcgcykKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHggPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh4KTsK
IAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywg
Z2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVj
dC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTg0NSwxMiArODU0LDE2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1UKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KICAgICAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVl
QW5kQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCAiJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFj
Y2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxl
cicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOwogfQogCiBjbGFzcyBHbG9i
YWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIHsKQEAgLTg4Nyw4ICs5MDAsMTEgQEAgcHJpdmF0ZToK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUHJvdG9HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpKTsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpKTsKIAogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAKQEAgLTk0NCw4ICs5NjAsMTEg
QEAgYm9vbCBjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChFeGVjUwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNv
bnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
aWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZl
cnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogCkBAIC05NjIsNyArOTgxLDYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSAmJiAh
dmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgc2hvdWxkVGhyb3dJ
ZkNhbnRTZXQgPSB0cnVlOwogICAgIHRoaXNPYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywg
dmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExMCwxMSArMTEwLDE0IEBAIHZvaWQgSlNNb2R1bGVFbnZpcm9ubWVudDo6Z2V0
T3duTm9uSW5kZXgKIAogYm9vbCBKU01vZHVsZUVudmlyb25tZW50OjpwdXQoSlNDZWxsKiBjZWxs
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTW9kdWxl
RW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVFbnZpcm9ubWVudCo+KGNl
bGwpOwogICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1tdXRhYmxlLgogICAgIEpT
TW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlzT2JqZWN0LT5tb2R1bGVS
ZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHBy
b3BlcnR5TmFtZS51aWQoKSkpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5cGUgPT0gSlNNb2R1bGVS
ZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDkgQEAgdm9pZCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVy
dHktcAogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKQEAgLTEyOSw3ICsxMzIsNyBAQCBib29s
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAgICAgICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9u
bWVudCgpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZp
cm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Ci0gICAgICAg
IGJvb2wgZm91bmQgPSB0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5s
b2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHRhcmdldEVu
dmlyb25tZW50LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZp
cm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogCiAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTM3
LDcgKzE0MCw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3AKIAog
ICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGggVERaIHZhbHVlLCB0aHJvdyBh
IHJlZmVyZW5jZSBlcnJvci4KICAgICAgICAgaWYgKCF2YWx1ZSkgewotICAgICAgICAgICAgdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgIHRocm93
Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE2MiwxNiArMTY1LDIyIEBAIGJvb2wgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3AKIAogYm9vbCBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5h
bWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChz
aG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTkzLDE3ICsyMDIsMjMg
QEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAogCiBib29sIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHNo
b3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCiAgICAgaWYgKHNob3VsZFRocm93KQotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVm
aW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1
bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGEgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
Inx0aGlzfCBzaG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCIpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
KCksIG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4MSw2ICs2ODEsOSBAQCBzdGF0aWMgdm9pZCBnZXRFeHBvcnRlZE5hbWVzKEV4ZWNTdGF0ZSog
CiAKIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFt
ZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRtb2R1bGVuYW1l
c3BhY2UKICAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCiAgICAgICAgIHJldHVybiBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKQEAgLTY5NCwxMSArNjk3LDExIEBAIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDoKICAgICAgICAgY29uc3QgSlNNb2R1
bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CiAgICAgICAgIHN3aXRjaCAocmVz
b2x1dGlvbi50eXBlKSB7CiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6
Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikp
OworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygi
RXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcobmFtZS5nZXQoKSksICInIGlzIG5vdCBm
b3VuZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVj
LCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSBy
ZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAn
ZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpU
eXBlOjpBbWJpZ3VvdXM6CkBAIC03MTAsMjkgKzcxMywzMyBAQCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogSlNNb2R1bGVSZWNvcmQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX21vZHVsZU5h
bWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNw
YWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKKyAgICBtX21v
ZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05hbWVzKSk7CiAgICAgcmV0dXJu
IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0
ZShleGVjLCBzb3VyY2VDb2RlKCkpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewotICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAgICBtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiAgICAgaW5zdGFudGlhdGVE
ZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogCiAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRh
YmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPm1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFi
bGUoKTsKLSAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFs
dWUoKSwgdGhpcyk7Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTW9kdWxlRW52
aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6Y3JlYXRl
KHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CiAKICAgICAvLyBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFy
YXRpb25pbnN0YW50aWF0aW9uCiAgICAgLy8gc2VjdGlvbiAxNS4yLjEuMTYuNCBzdGVwIDkuCkBA
IC03NDUsMTUgKzc1MiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xh
cmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSByZXNvbHZlRXhwb3J0KGV4
ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOwogICAgICAgICAgICAgc3dpdGNoIChyZXNvbHV0
aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6
Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9y
dE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwg
IicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgotICAgICAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5k
aW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSksICInIGNh
bm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5n
KCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5
LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3Vv
dXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmlu
ZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50
cmllcy4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwg
bWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNh
bm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2
ZWQ6CkBAIC03NzksMTUgKzc4NiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0
ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1v
ZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAg
ICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6Ok5vdEZvdW5kOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9y
dEVudHJ5LmltcG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRp
bmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkp
LCAiJyBpcyBub3QgZm91bmQuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAg
dGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1l
ICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUg
cmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiSW1wb3J0
aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9ydE5hbWUuaW1wbCgp
KSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGlu
Z3MuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNv
bHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBi
ZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGlu
ZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmll
cy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OlJlc29sdmVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiAr
Mjk3LDggQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChKU1ZhbHVlIAogU3RyaW5n
aWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBKU09iamVjdCogaG9sZGVy
LCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1bmN0aW9uLgogICAgIHZhbHVl
ID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkK
QEAgLTM2OCw3ICszNzAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lm
aWVyCiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1dCB0aGUgaG9sZGVyIG9u
IHRoZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ob2xkZXJTdGFjay5z
aXplKCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tpXS5vYmplY3QoKSA9PSBv
YmplY3QpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFs
KCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
SlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iKSk7CiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAgICB9CiAgICAgfQpAQCAt
NTg5LDEwICs1OTEsMTMgQEAgZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRlVW5rbm93biwgQXJyYXlT
dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0U3RhcnRTdGF0ZSwgT2Jq
ZWN0U3RhcnRWaXNpdE1lbWJlciwgT2JqZWN0RW5kVmlzaXRNZW1iZXIgfTsKIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTYsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBwcm9wZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwgMTYsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiBpbmRleFN0YWNrOwotICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmpl
Y3RTdGFjayhtX2V4ZWMtPnZtKCkpOwotICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5
U3RhY2sobV9leGVjLT52bSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTT2JqZWN0LCAxNj4gb2JqZWN0
U3RhY2sodm0pOworICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFycmF5U3RhY2sodm0pOwog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBhcnJheUxlbmd0
aFN0YWNrOwogICAgIAogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTYsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBzdGF0ZVN0YWNrOwpAQCAtNjA3LDcgKzYxMiw3IEBAIE5FVkVSX0lOTElORSBKU1Zh
bHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5p
c09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KGFzT2JqZWN0KGlu
VmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoSlNBcnJheTo6aW5mbygpKSk7
CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6
ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMsIHNjb3BlKTsKIAogICAgICAgICAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShpblZhbHVlKTsKICAgICAgICAgICAgICAg
ICBhcnJheVN0YWNrLnB1c2goYXJyYXkpOwpAQCAtNjYzLDcgKzY2OCw3IEBAIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5W
YWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIWlzSlNBcnJheShhc09i
amVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5Ojpp
bmZvKCkpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlT
dGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYywgc2NvcGUpOwogCiAg
ICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFsdWUpOwogICAg
ICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKQEAgLTczNiwzMSArNzQxLDM0
IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICB9CiAgICAg
SlNPYmplY3QqIGZpbmFsSG9sZGVyID0gY29uc3RydWN0RW1wdHlPYmplY3QobV9leGVjKTsKICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaW5hbEhvbGRlcik7Ci0gICAgZmluYWxIb2xkZXItPm1l
dGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCBtX2V4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7CisgICAgZmluYWxIb2xk
ZXItPm1ldGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbXB0eUlkZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKICAgICByZXR1cm4gY2FsbFJl
dml2ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlTdHJpbmcobV9leGVjKSwgb3V0VmFsdWUpOwogfQog
CiAvLyBFQ01BLTI2MiB2NSAxNS4xMi4yCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
T05Qcm90b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04ucGFyc2UgcmVxdWlyZXMg
YXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5wYXJzZSBy
ZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpKTsKICAgICBKU1N0cmluZzo6U2FmZVZp
ZXcgc291cmNlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZp
ZXcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIEpTVmFsdWUgdW5maWx0ZXJlZDsKLSAg
ICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkpOworICAgIExvY2FsU2NvcGUgbG9jYWxTY29w
ZSh2bSk7CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAgICBMaXRlcmFsUGFyc2Vy
PExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJzOCgpLCBzb3VyY2UubGVu
Z3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0ganNvblBhcnNlci50cnlM
aXRlcmFsUGFyc2UoKTsKICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFyc2Vy
LmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVz
c2FnZSgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGl0ZXJhbFBhcnNlcjxVQ2hhcj4ganNv
blBhcnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVyczE2KCksIHNvdXJjZS5sZW5ndGgoKSwgU3Ry
aWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJz
ZSgpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JN
ZXNzYWdlKCkpKTsgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3Nh
Z2UoKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikK
QEAgLTc3MSwxOCArNzc5LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlBy
b3RvRnUKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2JqZWN0PihleGVjLT52bSgpLCBhc09iamVjdChmdW5j
dGlvbikpLCBjYWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2JqZWN0Pih2bSwgYXNPYmpl
Y3QoZnVuY3Rpb24pKSwgY2FsbFR5cGUsIGNhbGxEYXRhKS53YWxrKHVuZmlsdGVyZWQpKTsKIH0K
IAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gaW5wdXQgdG8gc3Ry
aW5naWZ5IikpKTsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkpOwotICAgIExvY2Fs
PFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
LSAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgx
KSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwgZXhlYy0+YXJndW1lbnQo
MikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGlucHV0IHRvIHN0cmluZ2lmeSIpKSk7CisgICAgTG9j
YWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKKyAgICBMb2NhbDxVbmtub3duPiB2YWx1ZSh2bSwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIExvY2FsPFVua25vd24+IHJlcGxhY2VyKHZt
LCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgTG9jYWw8VW5rbm93bj4gc3BhY2Uodm0sIGV4ZWMt
PmFyZ3VtZW50KDIpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lmaWVyKGV4ZWMsIHJl
cGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAv
KgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIwMTItMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIw
MDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0Lm9yZykKICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMTM1NCw2ICsxMzU0LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlRGly
ZWN0KFZNJiB2bQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJp
Y3RNb2RlKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGVEaXJlY3QoKSA9
PSBwcm90b3R5cGUpCkBAIC0xMzY1LDcgKzEzNjYsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90
b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewogICAgICAgICBp
ZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzNzQsNyArMTM3NSw3
IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWMKICAgICB3aGlsZSAo
bmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYg
KG5leHRQcm90b3R5cGUgPT0gdGhpcykgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93SWZD
YW50U2V0KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90b19fIHZhbHVlIikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChVTkxJ
S0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm90b3R5
cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCkBAIC0xNjE2LDI4ICsxNjE3LDMyIEBAIGVudW0g
Y2xhc3MgVHlwZUhpbnRNb2RlIHsgVGFrZXNIaW50LCBEb2UKIHRlbXBsYXRlPFR5cGVIaW50TW9k
ZSBtb2RlID0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQ+CiBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJlZmVycmVk
UHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgaWYgKHNj
b3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0aW9uKCk7CiAgICAg
aWYgKGZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkgJiYgbW9kZSA9PSBUeXBlSGludE1vZGU6OlRha2Vz
SGludCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7
CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKGNhbGxUeXBlID09IENhbGxUeXBl
OjpOb25lKSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICBy
ZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24o
KTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGNhbGxBcmdzOwogICAgIGlmIChtb2RlID09
IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KSB7CiAgICAgICAgIEpTU3RyaW5nKiBoaW50U3RyaW5n
ID0gbnVsbHB0cjsKICAgICAgICAgc3dpdGNoIChoaW50KSB7CiAgICAgICAgIGNhc2UgTm9QcmVm
ZXJlbmNlOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdz
LmRlZmF1bHRTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJpbmcgPSB2bS5zbWFsbFN0cmlu
Z3MuZGVmYXVsdFN0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJl
ZmVyTnVtYmVyOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJp
bmdzLm51bWJlclN0cmluZygpOworICAgICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3Ry
aW5ncy5udW1iZXJTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBy
ZWZlclN0cmluZzoKLSAgICAgICAgICAgIGhpbnRTdHJpbmcgPSBleGVjLT52bSgpLnNtYWxsU3Ry
aW5ncy5zdHJpbmdTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJpbmcgPSB2bS5zbWFsbFN0
cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYWxsQXJncy5hcHBlbmQoaGludFN0cmluZyk7CkBAIC0xNjQ1LDQwICsxNjUwLDQ3IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWkKIAogICAgIEpTVmFsdWUg
cmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjb25zdF9j
YXN0PEpTT2JqZWN0Kj4ob2JqZWN0KSwgY2FsbEFyZ3MpOwogICAgIEFTU0VSVCghcmVzdWx0Lmlz
R2V0dGVyU2V0dGVyKCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
cmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQg
PyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC50
b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiBtb2RlID09
IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1ZSgpIDogdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJpbWl0aXZlIHJldHVybmVk
IGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBFQ01BIDcuMS4xCiBK
U1ZhbHVlIEpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8g
TWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgZGVmYXVsdCB2YWx1ZSBtZXRob2RzIHRoZXJlIGFyZSBv
biBvYmplY3QncyBwcm90b3R5cGUgY2hhaW4gYXJlCiAgICAgLy8gYmVpbmcgd2F0Y2hlZC4KLSAg
ICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFsUHJvcGVydGllc0lmTmVj
ZXNzYXJ5Rm9yRW50aXJlQ2hhaW4oZXhlYy0+dm0oKSk7CisgICAgdGhpcy0+c3RydWN0dXJlKCkt
PnN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3BlcnRpZXNJZk5lY2Vzc2FyeUZvckVudGlyZUNoYWlu
KHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgaWYgKGhpbnQgPT0gUHJlZmVyU3RyaW5n
KSB7CiAgICAgICAgIHZhbHVlID0gY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oZXhlYywgdGhpcywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBoaW50KTsKKyAgICAgICAgQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9PSB2YWx1ZS5hc0NlbGwoKSk7
CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAg
dmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkpOwogICAgICAgICBpZiAo
dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
dmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkpOwogICAgICAgICBpZiAo
dmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIHZhbHVlID0gY2FsbFRv
UHJpbWl0aXZlRnVuY3Rpb24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nLCBoaW50KTsKKyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5l
eGNlcHRpb24oKSA9PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik5vIGRlZmF1bHQgdmFsdWUiKSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSk7CiB9CiAKIEpTVmFsdWUgSlNP
YmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKQEAgLTE3MjcsMTIgKzE3MzksMTQgQEAg
Y29uc3QgSGFzaFRhYmxlVmFsdWUqIEpTT2JqZWN0OjpmaW5kUHJvcAogYm9vbCBKU09iamVjdDo6
aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGhhc0lu
c3RhbmNlVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgCiAKICAgICBpZiAoIWhhc0luc3RhbmNl
VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0YW5jZVZhbHVlICE9IGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24oKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGhhc0luc3RhbmNlVmFsdWUsIGNhbGxEYXRhKTsKICAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICB2bS50
aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9y
aGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsKKyAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRl
ckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNzQ3LDcgKzE3NjEsNyBAQCBib29s
IEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAgICAgICAgIHJldHVybiBkZWZh
dWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkucHJvdG90eXBlKSk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpCiAg
ICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4
ZWMsIHZhbHVlKTsKLSAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZXhlYywgdGhpcykpOworICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVy
cm9yTm90RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MTc2MCwxNSArMTc3NCwxNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUq
IGV4CiAKIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcHJv
dG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90
eXBlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxp
ZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QodmFsdWUpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpTVmFsdWUgb2JqZWN0VmFs
dWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CkBAIC0yMjM4LDYgKzIyNTQsOSBA
QCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJbmRl
eGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGks
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlQoKGluZGV4aW5nVHlw
ZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwogICAgIEFTU0VSVCgh
aW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKIApAQCAtMjI0Nyw4ICsyMjY2LDYgQEAgYm9vbCBK
U09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIG9yIGVxdWFsIHRvIHRo
ZSB2ZWN0b3IgbGVuZ3RoLgogICAgIEFTU0VSVChpID49IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkpOwogICAgIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgCiAgICAgaWYgKGkgPiBN
QVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgKICAgICAgICAgfHwgKGkgPj0gTUlOX1NQQVJTRV9BUlJB
WV9JTkRFWCAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihpLCBjb3VudEVsZW1lbnRzPGluZGV4
aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQogICAgICAgICB8fCBpbmRleElzU3VmZmljaWVudGx5QmV5
b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpKSB7CkBA
IC0yMjYyLDcgKzIyNzksNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuCiAgICAgfQogCiAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIGkgKyAxKSkgewotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYnV0
dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CkBAIC0yMzAwLDYgKzIzMTcsNyBAQCB0ZW1wbGF0
ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kCiBib29sIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3csIEFycmF5U3RvcmFnZSog
c3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIGkgc2hvdWxkIGJlIGEgdmFsaWQgYXJy
YXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZlY3Rvci4KICAgICBBU1NF
UlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjMyNyw3ICsyMzQ1LDcgQEAgYm9vbCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywgb3IgY2FuJ3QgdXNlIGEg
dmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEgc3BhcnNlIG1hcCAmIGFk
ZCB0aGUgdmFsdWUuCi0gICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAoZXhlYy0+
dm0oKSk7CisgICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwogICAgICAg
ICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1ZSwgc2hvdWxkVGhyb3cp
OwogICAgIH0KIApAQCAtMjMzNyw3ICsyMzU1LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRl
eEJleW9uZFZlY3RvckxlbgogICAgICAgICAvLyBQcm9oaWJpdCBncm93aW5nIHRoZSBhcnJheSBp
ZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFwLT5sZW5ndGhJc1JlYWRP
bmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgICAgICBpZiAoc2hv
dWxkVGhyb3cpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBsZW5ndGggPSBp
ICsgMTsKQEAgLTIzNDcsNyArMjM2NSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW4KICAgICAvLyBXZSBhcmUgY3VycmVudGx5IHVzaW5nIGEgbWFwIC0gY2hlY2sg
d2hldGhlciB3ZSBzdGlsbCB3YW50IHRvIGJlIGRvaW5nIHNvLgogICAgIC8vIFdlIHdpbGwgY29u
dGludWUgIHRvIHVzZSBhIHNwYXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBpcyBzZXQsIGEgdmVjdG9y
IHdvdWxkIGJlIHRvbyBzcGFyc2UsIG9yIGlmIGFsbG9jYXRpb24gZmFpbHMuCiAgICAgdW5zaWdu
ZWQgbnVtVmFsdWVzSW5BcnJheSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgKyBtYXAt
PnNpemUoKTsKLSAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVuc2VFbm91Z2hGb3JW
ZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgo
ZXhlYy0+dm0oKSwgbGVuZ3RoKSkKKyAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlzRGVu
c2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVhc2VW
ZWN0b3JMZW5ndGgodm0sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAKICAgICAvLyBSZXJlYWQgbV9zdG9y
YWdlIGFmdGVyIGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9udW1WYWx1ZXNJblZlY3Rv
ci4KQEAgLTI5NDQsNiArMjk2Miw5IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdE1heUJlSW5k
ZXgoRXhlY1MKIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGJv
b2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGN1cnJl
bnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBJZiB3ZSBo
YXZlIGEgbmV3IHByb3BlcnR5IHdlIGNhbiBqdXN0IHB1dCBpdCBvbiBub3JtYWxseQogICAgIC8v
IFN0ZXAgMi4KICAgICBpZiAoIWlzQ3VycmVudERlZmluZWQpIHsKQEAgLTI5NTEsNyArMjk3Miw3
IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAgICAgLy8g
U3RlcCAyLmEKICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsKICAgICAgICAgICAgIGlmICh0
aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlz
IG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0eSBvbiBv
YmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmplY3QpCkBAIC0yOTc0LDEyICsyOTk1LDEy
IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAoIWN1
cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJh
YmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci5lbnVtZXJhYmxlKCkgIT0gY3VycmVudC5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9m
IHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVt
ZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTg4LDcgKzMwMDksNyBA
QCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgLy8gQSBnZW5l
cmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGFuIGV4
aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYg
b2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRp
bmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI5OTksMTQgKzMwMjAsMTQgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVy
dHlEZXNjcmlwdG9yKAogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAhPSBj
dXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmln
dXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9w
ZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5
Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJv
cGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMzAxNiwxMyArMzAzNywxMyBAQCBib29sIHZhbGlk
YXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGlmICghY3VycmVudC5jb25m
aWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVz
Y3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9u
KQotICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJp
YnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyZW50LndyaXRh
YmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYmICFzYW1l
VmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFu
Z2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTMwMzEsNyArMzA1Miw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIG9iamVj
dCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlk
aW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBAIC0zMDQxLDE3ICszMDYy
LDE3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVy
UHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50KCkgJiYgSlNWYWx1ZTo6c3RyaWN0
RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3JpcHRvci5zZXR0ZXIoKSkpKSB7CiAg
ICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVy
IG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0
ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigpKSkpIHsK
ICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0
ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50LmF0dHJp
YnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFVu
Y29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpOworICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoVW5jb25m
aWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDU5LDMzICszMDgwLDMzIEBA
IGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAvLyBTdGVwIDEw
LzExLgogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBKU1ZhbHVl
IGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKTsK
KyAgICBKU1ZhbHVlIGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEdldHRl
clNldHRlciogZ2V0dGVyU2V0dGVyOwogICAgIGJvb2wgZ2V0dGVyU2V0dGVyQ2hhbmdlZCA9IGZh
bHNlOwogICAgIGlmIChhY2Nlc3Nvci5pc0N1c3RvbUdldHRlclNldHRlcigpKSB7Ci0gICAgICAg
IGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGdldHRlclNldHRlciA9IEdldHRlclNldHRl
cjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBhdXRv
KiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVyU2V0dGVyKj4oYWNjZXNz
b3IpOwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5zZXR0ZXIoKSkKLSAgICAgICAg
ICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIo
ZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb246OlR5cGU6OlNldHRlcikpOworICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5z
ZXRTZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVy
U2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21H
ZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OlNldHRlcikp
OwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIoKSkKLSAgICAgICAgICAg
IGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhl
YywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVy
RnVuY3Rpb246OlR5cGU6OkdldHRlcikpOworICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRH
ZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0
dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0
ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OkdldHRlcikpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChhY2Nlc3Nvci5pc0dldHRlclNldHRlcigpKTsK
ICAgICAgICAgZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwogICAgIH0K
ICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0
dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoU2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7CisgICAgICAgIGdldHRl
clNldHRlciA9IGdldHRlclNldHRlci0+d2l0aFNldHRlcih2bSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBkZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKICAgICAgICAgZ2V0dGVyU2V0
dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNl
bnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhHZXR0ZXIo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yLmdldHRl
ck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoR2V0
dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2Jq
ZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAgICAg
aWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmICFnZXR0ZXJTZXR0ZXJD
aGFuZ2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2NyaXB0b3IuYXR0cmlidXRl
c092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9iamVjdC0+cHV0RGlyZWN0QWNjZXNz
b3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwgQWNjZXNzb3IpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMzIzMyw2ICszMjU0LDkgQEAgdm9pZCBKU09iamVjdDo6Z2V0
R2VuZXJpY1Byb3BlcnR5TmFtZXMoSgogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nZXRtZXRob2QKIEpTVmFsdWUgSlNPYmpl
Y3Q6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5
cGUmIGNhbGxUeXBlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIG1ldGhvZCA9IGdldChleGVj
LCBpZGVudCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKQEAgLTMyNDEsMTMgKzMyNjUsMTMgQEAgSlNWYWx1ZSBKU09iamVjdDo6
Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZQogICAgICAgICBpZiAobWV0aG9kLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIH0KIAogICAgIGNhbGxUeXBlID0gbWV0aG9kLmFzQ2VsbCgpLT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShtZXRob2QuYXNDZWxsKCksIGNhbGxEYXRhKTsKICAgICBpZiAoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBl
cnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlB1dERpcmVjdEluZGV4TW9kZS5o
IgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVUeXBlLmgi
Ci0KICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCkBAIC02NiwxMCArNjUsMTEgQEAgY2xhc3MgTWFya2VkQmxvY2s7CiBjbGFzcyBQ
cm9wZXJ0eURlc2NyaXB0b3I7CiBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKIGNsYXNzIFN0cnVj
dHVyZTsKK2NsYXNzIFRocm93U2NvcGU7CiBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEhhc2hU
YWJsZVZhbHVlOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3Io
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYpOwog
ZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogVW5jb25maWd1
cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yOwogCkBAIC0xNjY1LDM3ICsx
NjY1LDYgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVudGlmaWVyKAogICAgIHJl
dHVybiBuYW1lOwogfQogCi0vLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUgc3BlYy4gCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBmdW5jdGlvbiBzaG91bGQgaGF2ZSBhIHR5
cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sCi12b2lkIGNyZWF0ZUxpc3RG
cm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJheUxpa2VWYWx1ZSwgUnVu
dGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7Ci0gICAgSlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9
IGFycmF5TGlrZVZhbHVlLmdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCk7Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgZG91Ymxl
IGxlbmd0aEFzRG91YmxlID0gbGVuZ3RoUHJvcGVydHkudG9MZW5ndGgoZXhlYyk7Ci0gICAgaWYg
KHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQobGVu
Z3RoQXNEb3VibGUgPj0gMC4wICYmIGxlbmd0aEFzRG91YmxlID09IHN0ZDo6dHJ1bmMobGVuZ3Ro
QXNEb3VibGUpKTsKLSAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bGVuZ3RoQXNEb3VibGUpOwotICAgIGZvciAodWludDY0X3QgaW5kZXggPSAwOyBpbmRleCA8IGxl
bmd0aDsgaW5kZXgrKykgewotICAgICAgICBKU1ZhbHVlICBuZXh0ID0gYXJyYXlMaWtlVmFsdWUu
Z2V0KGV4ZWMsIGluZGV4KTsKLSAgICAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBydW50aW1lVHlwZUZvclZh
bHVlKG5leHQpOwotICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGV4aXRFYXJseSA9IGFkZEZ1bmN0
aW9uKG5leHQsIHR5cGUpOwotICAgICAgICBpZiAoZXhpdEVhcmx5KQotICAgICAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQogYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBib29sIGlzRXh0ZW5zaWJsZSwK
ICAgICBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgaXNDdXJyZW50
RGVmaW5lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJyZW50LCBib29sIHRocm93RXhj
ZXB0aW9uKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwz
OSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gU2VjdGlvbiA3LjMuMTcgb2YgdGhlIHNwZWMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBmdW5jdGlvbiBzaG91bGQg
aGF2ZSBhIHR5cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sCit2b2lkIGNy
ZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJheUxpa2VW
YWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKK3sKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAK
KyAgICBWZWN0b3I8SlNWYWx1ZT4gcmVzdWx0OworICAgIEpTVmFsdWUgbGVuZ3RoUHJvcGVydHkg
PSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKKyAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBkb3VibGUgbGVuZ3Ro
QXNEb3VibGUgPSBsZW5ndGhQcm9wZXJ0eS50b0xlbmd0aChleGVjKTsKKyAgICBpZiAodm0uZXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGhBc0Rv
dWJsZSA+PSAwLjAgJiYgbGVuZ3RoQXNEb3VibGUgPT0gc3RkOjp0cnVuYyhsZW5ndGhBc0RvdWJs
ZSkpOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhB
c0RvdWJsZSk7CisgICAgZm9yICh1aW50NjRfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBp
bmRleCsrKSB7CisgICAgICAgIEpTVmFsdWUgbmV4dCA9IGFycmF5TGlrZVZhbHVlLmdldChleGVj
LCBpbmRleCk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgCisgICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBydW50aW1lVHlwZUZvclZh
bHVlKG5leHQpOworICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBlc0ZpbHRlcikpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGV4aXRF
YXJseSA9IGFkZEZ1bmN0aW9uKG5leHQsIHR5cGUpOworICAgICAgICBpZiAoZXhpdEVhcmx5KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoVU5MSUtFTFkocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pKQpAQCAtNTUsMTAgKzg4
LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVyZm9ybUYKIC8vIEVDTUEg
OC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgQVNTRVJUKHZh
bHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUp
ID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3QpKSkK
ICAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlzT2JqZWN0LCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3RyaWN0TW9kZSgpKTsKQEAg
LTY5LDEwICsxMDQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJbmxpbmUo
SgogICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleC52YWx1
ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+
Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoZXhlYywgdm0sIHByb3BlcnR5TmFtZSkpIHsKLSAgICAg
ICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUlu
dGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgIEFTU0VS
VCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRT
dG9yZVRvKHZtLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXRE
aXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xv
dCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC05NiwxMiArOTYsMTMgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6YWRkT3duSW50
ZXJuYQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9t
aXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1RhcmdldCgpOwogICAgIGlmIChu
ZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3Qt
PnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MTE0LDcgKzExNSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMK
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb21pc2UoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3Rv
ckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiUHJvbWlzZSIpKTsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5u
b3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm9taXNlIikpOwog
fQogCiBDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw5ICsxNDMs
MTIgQEAgYm9vbCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpuZXh0KEV4ZWNTdAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3BlcnR5TmFtZUl0ZXJhdG9yRnVuY05leHQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
aXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqPihleGVjLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFBy
b3BlcnR5TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFByb3BlcnR5TmFtZUl0ZXJh
dG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBvYmplY3QiKSkpOwogCiAg
ICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0KGV4ZWMsIHJlc3VsdCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zODAsMTEgKzM4MCwxNCBA
QCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShVCiAKIHZvaWQgSlNSb3Bl
U3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBjbGVhckZpYmVycygpOwogICAgIEFTU0VSVChpc1JvcGUoKSk7CiAgICAgQVNTRVJU
KG1fdmFsdWUuaXNOdWxsKCkpOwogICAgIGlmIChleGVjKQotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiB9CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcxLDE3ICs3MSwxOSBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGJ1aWxkKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCFtX29rYXkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIGlm
IChtX2lzOEJpdCkgewogICAgICAgICAgICAgYnVmZmVyOC5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICAgICAgaWYgKCFidWZmZXI4LmRhdGEoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlcjE2
LnNocmlua1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0YSgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikpOwogICAgIH0KIApAQCAtMTI3LDkg
KzEyOSwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFsU3RyaW5nKEV4CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KIGlubGlu
ZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmdUeXBlJiBzdHJpbmcsIGNvbnN0IFN0cmluZ1R5cGVzJi4uLiBzdHJpbmdzKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIFN0cmluZyByZXN1bHQgPSBXVEY6OnRyeU1ha2VTdHJpbmcoc3RyaW5nLCBz
dHJpbmdzLi4uKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZ0pvaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmdKb2luZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
MSw2ICs4MSw5IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGpvaW5TdHJpbmdzKGNvbnN0IFYKIAog
aW5saW5lIHVuc2lnbmVkIEpTU3RyaW5nSm9pbmVyOjpqb2luZWRMZW5ndGgoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mU3RyaW5n
cyA9IG1fc3RyaW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1iZXJPZlN0cmluZ3MpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtOTEsNyArOTQsNyBAQCBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdKb2lu
ZXI6OmpvaW5lZExlCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAgICAgaWYgKHRvdGFsTGVuZ3Ro
LnNhZmVHZXQocmVzdWx0KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJmbG93KSB7Ci0gICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtOTksNiArMTAyLDkgQEAgaW5saW5lIHVuc2lnbmVkIEpTU3RyaW5nSm9p
bmVyOjpqb2luZWRMZQogCiBKU1ZhbHVlIEpTU3RyaW5nSm9pbmVyOjpqb2luKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlQobV9zdHJpbmdzLnNpemUoKSA8PSBt
X3N0cmluZ3MuY2FwYWNpdHkoKSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBqb2luZWRMZW5n
dGgoc3RhdGUpOwpAQCAtMTE1LDcgKzEyMSw3IEBAIEpTVmFsdWUgSlNTdHJpbmdKb2luZXI6Ompv
aW4oRXhlY1N0YXRlJiAKICAgICAgICAgcmVzdWx0ID0gam9pblN0cmluZ3M8VUNoYXI+KG1fc3Ry
aW5ncywgbV9zZXBhcmF0b3IsIGxlbmd0aCk7CiAKICAgICBpZiAocmVzdWx0LmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICByZXR1cm4g
anNTdHJpbmcoJnN0YXRlLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjAsMTYgKzYwLDIwIEBAIGlubGluZSBKU1N0cmluZ0pvaW5lcjo6SlNT
dHJpbmdKb2luZXIoRXgKICAgICA6IG1fc2VwYXJhdG9yKHNlcGFyYXRvcikKICAgICAsIG1faXNB
bGw4Qml0KG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJ
S0VMWSghbV9zdHJpbmdzLnRyeVJlc2VydmVDYXBhY2l0eShzdHJpbmdDb3VudCkpKQotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogfQogCiBpbmxpbmUgSlNTdHJpbmdKb2luZXI6OkpTU3Ry
aW5nSm9pbmVyKEV4ZWNTdGF0ZSYgc3RhdGUsIExDaGFyIHNlcGFyYXRvciwgdW5zaWduZWQgc3Ry
aW5nQ291bnQpCiAgICAgOiBtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRvcihzZXBhcmF0b3IpCiAg
ICAgLCBtX3NlcGFyYXRvciB7ICZtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRvciwgMSB9CiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2ZUNhcGFjaXR5
KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOwor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKFN0cmluZ1ZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZyYmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNTY29w
ZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2luY2x1ZGUgIlN5bWJvbFRh
YmxlLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIlZhcmlhYmxlV3JpdGVG
aXJlRGV0YWlsLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTY2LDYgKzE2Nyw3IEBAIHRlbXBs
YXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBzeW1ib2xUYWJsZVAKIGlubGluZSBib29sIHN5bWJvbFRh
YmxlUHV0KFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dS
ZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBib29sJiBwdXRSZXN1bHQp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBudWxscHRyOwogICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKQEAgLTE4Miw3ICsxODQsNyBAQCBpbmxp
bmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAgICAgIEFTU0VSVCghZmFz
dEVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgaWYgKGZhc3RFbnRyeS5pc1JlYWRPbmx5KCkgJiYg
IWlnbm9yZVJlYWRPbmx5RXJyb3JzKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3dSZWFk
T25seUVycm9yKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CiAgICAgICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0yMDAsOSArMjAyLDkgQEAgaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQ
dXQoU3ltYm9sVGFibGVPYgogICAgIC8vIHRoZSByaWdodCBmb3IgYmFycmllcnMgdG8gYmUgYWJs
ZSB0byB0cmlnZ2VyIEdDLiBBbmQgSSBkb24ndCB3YW50IHRvIGhvbGQgVk0KICAgICAvLyBsb2Nr
cyB3aGlsZSBHQydpbmcuCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0TW9kZSA9PSBTeW1ib2xUYWJs
ZVB1dE1vZGU6OkludmFsaWRhdGUpCi0gICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdh
dGNocG9pbnRTZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcs
IHNldCk7CisgICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQodm0s
IG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwogICAgIGVsc2UKLSAgICAg
ICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CisgICAgICAgIHN5bWJvbFRhYmxlUHV0VG91
Y2hXYXRjaHBvaW50U2V0KHZtLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywgc2V0
KTsKICAgICBwdXRSZXN1bHQgPSB0cnVlOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY2LDcgKzY2LDkgQEAgU3RydWN0dXJlKiBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3I6OgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBl
ZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQg
ZGlyZWN0bHkiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiJVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVk
IGRpcmVjdGx5IikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNiArMzksMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVm
aW5lIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihmdW5jdGlvbk5h
bWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgc3dpdGNoICh0aGlzVmFs
dWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4o
ZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4odm0sIGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50MzI6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFy
cmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFycmF5Pih2bSwgZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBU
eXBlVWludDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJh
eT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgY2FzZSBUeXBlRmxvYXQ2NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8
SlNGbG9hdDY0QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQzMjogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KGV4ZWMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBm
dW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50ODogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDg6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50
OEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OEFycmF5Pih2bSwgZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2Fz
ZSBUeXBlSW50MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQxNkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFy
cmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBUeXBlVWludDE2OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBlZEFycmF5OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03MiwxNCArNzIsMTYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5VgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIWFyZ3VtZW50LmlzQ2VsbCgpIHx8ICFpc1R5cGVkVmlldyhhcmd1bWVudC5hc0NlbGwo
KS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyIpKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
QXJyYXlCdWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1
dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZp
ZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyIpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09i
amVjdC0+bGVuZ3RoKCkpKTsKIH0KQEAgLTk0LDExMSArOTYsMTM5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBD
QUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0g
ICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJh
eSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik7
CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdh
cyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJ
bmNsdWRlcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3
IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZ
UEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0xhc3RJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFS
UkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2lu
KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVu
Y0J1ZmZlcik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19U
WVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxk
IGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FM
TF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1Jl
dmVyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVj
dCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5v
dCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZV
TkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAsMTYgQEAgdm9pZCBNYXBD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBl
RXJyb3IoZXhlYywgIk1hcCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNh
bGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBtYXBTdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdU
YXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtNzEsMTEgKzc2LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAg
ICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5j
dGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywg
aXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkg
ewogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcERhdGFJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw5IEBAIGlubGluZSB2b2lkIE1hcERhdGFJbXBsPEVudHJ5
LCBKU0l0ZXJhdG8KIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5LCB0eXBlbmFtZSBKU0l0ZXJhdG9y
PgogaW5saW5lIENoZWNrZWRCb29sZWFuIE1hcERhdGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG9yPjo6
ZW5zdXJlU3BhY2VGb3JBcHBlbmQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIG93bmVyKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKG1fY2FwYWNpdHkgPiBtX3NpemUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCkBAIC0yMTEsNyArMjE0LDcgQEAgaW5saW5lIENoZWNrZWRCb29sZWFuIE1hcERh
dGFJbXBsPEVudHJ5LAogICAgIHZvaWQqIG5ld1N0b3JhZ2UgPSBudWxscHRyOwogICAgIERlZmVy
R0MgZGVmZXIoKmV4ZWMtPmhlYXAoKSk7CiAgICAgaWYgKCFleGVjLT5oZWFwKCktPnRyeUFsbG9j
YXRlU3RvcmFnZShvd25lciwgcmVxdWlyZWRTaXplICogc2l6ZW9mKEVudHJ5KSwgJm5ld1N0b3Jh
Z2UpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0PEVudHJ5Kj4obmV3U3Rv
cmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTAsOSArNTAsMTIgQEAgdm9pZCBNYXBJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE1hcEl0ZXJhdG9yUHJvdG90eXBl
RnVuY05leHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1l
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU01hcEl0ZXJhdG9yKj4o
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNhbGwgTWFwSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLU1hcEl0ZXJhdG9yIG9i
amVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBNYXBJdGVyYXRvci5u
ZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAgIEpTVmFsdWUgcmVz
dWx0OwogICAgIGlmIChpdGVyYXRvci0+bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwxNiBAQCB2b2lkIE1hcFByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTTWFwKiBn
ZXRNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlKQogeworICAgIFZN
JiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRo
cm93Vk1FcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0
aGlzVmFsdWUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIGNyZWF0
ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIEpTTWFwKiBtYXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoIW1hcCkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmpl
Y3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbWFwOwpAQCAtMTU1LDI2ICsxNTgs
MzUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1ZhbHVlcyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBqc0R5bmFt
aWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2Jq
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVlIGl0ZXJhdG9yIGZvciBh
IG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU01hcEl0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVl
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVlIGl0ZXJh
dG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90b0Z1bmNFbnRyaWVzKENh
bGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU01hcCogdGhp
c09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAgZW50cnkg
aXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2Jq
LCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUg
YSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmos
IEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
cFByb3RvRnVuY0tleXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2Fs
bEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01hcCo+KGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNy
ZWF0ZSBhIE1hcCBrZXkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZt
KCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVj
dHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxs
RnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
dGhpc09iaiwgSXRlcmF0ZUtleSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByaXZhdGVGdW5jSXNNYXAoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVM
b2FkZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwOSw2ICsxMDksOCBAQCBNb2R1bGVM
b2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gZXhlYy0+
YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xMjcsNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQYXJzZXJDb21tZW50TW9k
ZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAg
ICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVjdChleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMs
IHNjb3BlLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
c291cmNlQ29kZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxs
U2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3MiwxMSBAQCBzdGF0
aWMgYm9vbCBjYWxsZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKGNhbGxlcklzU3RyaWN0KGV4ZWMpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
U2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEgZ2V0dGVyIikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNSArMzY0LDE4IEBAIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCAKIC8vIHRvIGFyZ3VtZW50LXBsdXMtb25l
IHNpZ25pZmljYW50IGZpZ3VyZXMpLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1i
ZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGRvdWJsZSB4OwogICAgIGlmICghdG9UaGlzTnVtYmVyKGV4ZWMtPnRoaXNWYWx1ZSgp
LCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIC8vIEdldCB0aGUgYXJn
dW1lbnQuIAogICAgIGludCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudDsKICAgICBib29sIGlzVW5k
ZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwg
ZGVjaW1hbFBsYWNlc0luRXhwb25lbnQsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9F
eHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVu
IDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIEluZmluaXR5LgogICAgIGlm
ICghc3RkOjppc2Zpbml0ZSh4KSkKQEAgLTM5NSwxNSArMzk4LDE4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIG1ldGhvZCB3aWxsIGluc3RlYWQgZmFsbGJh
Y2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51
bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVu
dC4gCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1VuZGVmaW5lZDsgLy8gVGhp
cyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAgIGlmICghZ2V0SW50ZWdl
ckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlcywgaXNVbmRlZmluZWQp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k
IDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJl
IGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUuNyBzdGF0ZXMgIklmIHgg
Pj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAvLyBUaGlzIGFsc28gY292
ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRoYXQgTmFOCkBAIC00Mjgs
MTUgKzQzNCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvCiAv
LyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBleHBvbmVudGlhbCByZXByZXNlbnRh
dGlvbi4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9QcmVj
aXNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAg
ICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IHNp
Z25pZmljYW50RmlndXJlczsKICAgICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50
ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAxLCAyMSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBpc1Vu
ZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDEgYW5kIDIxIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkg
YXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAogICAgIC8vIFRvIHByZWNp
c2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIFRvU3RyaW5nLgogICAg
IGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ4NSwyMiArNDk0LDIzIEBAIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgaW50ZWdlclZhbHUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBu
dW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBkb3VibGUgZG91YmxlVmFsdWU7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhp
c1ZhbHVlKCksIGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhleGVjKTsKICAgICBpZiAo
cmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXgg
YXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Iikp
KTsKIAogICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZG91
YmxlVmFsdWUpOwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUpCiAgICAgICAg
IHJldHVybiBpbnRlZ2VyVmFsdWVUb1N0cmluZyhleGVjLCByYWRpeCwgaW50ZWdlclZhbHVlKTsK
IAotICAgIGlmIChyYWRpeCA9PSAxMCkgewotICAgICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgdm0tPm51bWVyaWNT
dHJpbmdzLmFkZChkb3VibGVWYWx1ZSkpKTsKLSAgICB9CisgICAgaWYgKHJhZGl4ID09IDEwKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKCZ2bSwgdm0ubnVtZXJpY1N0
cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkpOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJs
ZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKSk7
CkBAIC01MTEsMTkgKzUyMSwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9M
b2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91Ymxl
IHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih4KS50b1N0cmluZyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBkb3VibGUgeDsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVyKHRoaXNWYWx1ZSwgeCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVl
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5n
Rm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBXVEY6Om1ha2VTdHJpbmcoInRoaXNOdW1i
ZXJWYWx1ZSBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIsIGpzQ2FzdDxKU1N0cmluZyo+KGpzVHlw
ZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIHRoaXNWYWx1ZSkpLT52YWx1ZShleGVjKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMyArMjE3LDE2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwogICAgIGlmICghcHJvdG9WYWx1ZS5pc09iamVjdCgpICYmICFwcm90b1ZhbHVl
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTIzMiw3ICsyMzUsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChl
eGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVl
KTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCA9IHRydWU7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3Rv
dHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIEFT
U0VSVF9VTlVTRUQoZGlkU2V0UHJvdG90eXBlLCB2bS5leGNlcHRpb24oKSB8fCBkaWRTZXRQcm90
b3R5cGUpOwpAQCAtMzQ0LDggKzM0NiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG93bkVudW1lcmFiCiBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIikpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0
eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNPYmplY3QoaW4pOwpAQCAt
MzkwLDcgKzM5NCw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUK
ICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0LCBjYWxsRGF0YSkgPT0g
Q2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0
IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtNDA1LDcgKzQwOSw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURl
c2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFzZXQuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2Fs
bERhdGEoc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVu
Y3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE3LDEyICs0
MjEsMTIgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChkZXNjLnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBw
cmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHku
ICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChkZXNjLndyaXRhYmxlUHJl
c2VudCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRl
ciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxlJyBwcmVzZW50IG9uIHByb3Bl
cnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00MzAsMTkgKzQzNCwyNSBAQCBib29sIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGll
cyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwotICAgIEpTT2JqZWN0KiBPID0g
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRl
ZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgSlNPYmplY3QqIG9iaiA9IGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEp
LnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBQcm9wZXJ0eURlc2Ny
aXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIXRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKSkKKyAgICBhdXRvIHN1Y2Nlc3MgPSB0b1Byb3Bl
cnR5RGVzY3JpcHRvcihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgZGVzY3JpcHRvcik7CisgICAg
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3Mp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIEFTU0VSVCgo
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFkZXNjcmlwdG9yLmlzQWNj
ZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsK
LSAgICBPLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkoTywgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKE8pOworICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eShv
YmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7CisgICAgc2NvcGUucmVs
ZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0KIAogc3RhdGljIEpT
VmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3Qs
IEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNDg1LDggKzQ5NSwxMSBAQCBzdGF0aWMgSlNWYWx1
ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0
aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2Fu
IG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2Jq
ID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIEpTT2JqZWN0KiBwcm9wcyA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICghcHJvcHMpCkBAIC00OTYs
MTYgKzUwOSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
T2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9i
amVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIikpOwogICAgIEpT
T2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCiAgICAgICAgID8gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQogICAgICAgICA6IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+bnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmlu
ZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlm
ICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdG9yIGxpc3QgbXVz
dCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdG9yIGxpc3QgbXVzdCBiZSBh
biBPYmplY3QuIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGll
cyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTI3LDYgKzEyNyw5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50
aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3QoZXhlYyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0LDcgKzEzNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBKU1ZhbHVlIGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YShnZXQsIGNhbGxE
YXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBn
ZXR0ZXIgdXNhZ2UiKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtMTQ2LDEzICsxNDksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90bwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwogCiAgICAgYm9vbCBz
aG91bGRUaHJvdyA9IHRydWU7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVu
Y0RlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RN
b2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNjAsNyArMTY2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIEpTVmFs
dWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
aWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFsaWQgc2V0
dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKTsKIAogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNzIsNyArMTc4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJh
YmxlKHRydWUpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7Ci0gICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMjY5LDYgKzI3NSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKS50
b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZS5pc1VuZGVm
aW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0cmluZygpIDogdm0uc21h
bGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CkBAIC0zMDMsNyArMzExLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgU3RyaW5nIG5ld1N0cmluZyA9IFdURjo6dHJ5TWFrZVN0cmluZygi
W29iamVjdCAiLCBXVEZNb3ZlKHRhZyksICJdIik7CiAgICAgICAgIGlmICghbmV3U3RyaW5nKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgICAg
IGF1dG8gcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgbmV3U3RyaW5nKTsKICAgICAg
ICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVj
LCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LTIwMDksIDIwMTMtMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDAsNiAr
NDAsNyBAQCBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lCiBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogczEsIEpT
U3RyaW5nKiBzMikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoMSA9IHMxLT5s
ZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aDEpCkBAIC00OCw3ICs0OSw3IEBAIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICBpZiAoIWxlbmd0aDIpCiAgICAgICAg
IHJldHVybiBzMTsKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlbmd0aDEsIGxlbmd0
aDIpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVy
biBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIHMyKTsKIH0KQEAgLTU2LDEzICs1NywxNCBA
QCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiBBTFdBWVNfSU5MSU5F
IEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHUxLCBjb25z
dCBTdHJpbmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBp
bnQzMl90IGxlbmd0aDEgPSB1MS5sZW5ndGgoKTsKICAgICBpbnQzMl90IGxlbmd0aDIgPSB1Mi5s
ZW5ndGgoKTsKICAgICBpbnQzMl90IGxlbmd0aDMgPSB1My5sZW5ndGgoKTsKICAgICAKICAgICBp
ZiAobGVuZ3RoMSA8IDAgfHwgbGVuZ3RoMiA8IDAgfHwgbGVuZ3RoMyA8IDApCi0gICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIGlmICghbGVuZ3RoMSkKICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5nKHZt
LCB1MykpOwpAQCAtNzIsNyArNzQsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmco
RXhlY1N0YXRlCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBqc1N0cmluZyh2bSwgdTEp
LCBqc1N0cmluZyh2bSwgdTIpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4obGVu
Z3RoMSwgbGVuZ3RoMiwgbGVuZ3RoMykpCi0gICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKGV4ZWMtPnZtKCksIGpz
U3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5nKHZtLCB1MykpOwogfQpA
QCAtODAsMTIgKzgyLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3RlckFycmF5KEV4ZWNT
dGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNvdW50KQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CiAgICAgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRlciByb3BlQnVpbGRlcigqdm0pOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgSlNW
YWx1ZSB2ID0gc3RyaW5nc1stc3RhdGljX2Nhc3Q8aW50PihpKV0uanNWYWx1ZSgpOwogICAgICAg
ICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3RyaW5nKGV4ZWMpKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAKICAgICByZXR1cm4g
cm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpAQCAtOTQsMTMgKzk3LDE0IEBAIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3QKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmlu
Z0Zyb21Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSgqdm0pOwogICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIgcm9wZUJ1aWxkZXIoKnZt
KTsKICAgICByb3BlQnVpbGRlci5hcHBlbmQodGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpKTsKIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkg
ewogICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudChpKTsKICAgICAgICAgaWYgKCFy
b3BlQnVpbGRlci5hcHBlbmQodi50b1N0cmluZyhleGVjKSkpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJvcGVCdWls
ZGVyLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsOCArNTYsOSBAQCBQcm94eUNvbnN0cnVjdG9yOjpQcm94eUNvbnN0cnVjdG9yKFZNJiB2
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1ha2VSZXZvY2FibGVQcm94
eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkucmV2
b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQg
YW5kIHRoZSBoYW5kbGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVk
IHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiKSk7CiAKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKQEAgLTgxLDcg
KzgyLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFrZQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9y
VGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVj
dGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiKSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkucmV2b2NhYmxlIGNhbm5vdCBiZSBjb25zdHJ1
Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIikpOwogfQogCiB2b2lkIFByb3h5Q29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKQEAgLTk0LDggKzk2LDkgQEAgdm9pZCBQcm94eUNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgaWYgKGV4ZWMtPm5ld1Rh
cmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5v
dCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgb2YgUHJveHkgY29uc3RydWN0IHNob3Vs
ZCBub3QgYmUgdW5kZWZpbmVkIikpOwogCiAgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwogICAgIEpT
VmFsdWUgdGFyZ2V0ID0gYXJncy5hdCgwKTsKQEAgLTExMSw3ICsxMTQsOCBAQCBDb25zdHJ1Y3RU
eXBlIFByb3h5Q29uc3RydWN0b3I6OmdldENvbnN0CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlw
ZUVycm9yKGV4ZWMsICJQcm94eSIpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJQcm94
eSIpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJK
U09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
QEAgLTc5LDE5ICs4MCwyMCBAQCBTdHJ1Y3R1cmUqIFByb3h5T2JqZWN0OjpzdHJ1Y3R1cmVGb3JU
YXJnCiAKIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2Jq
ZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3QqIHRhcmdldEFzUHJveHkgPSBqc0R5bmFt
aWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewogICAgICAgICBpZiAodGFyZ2V0QXNQcm94
eS0+aGFuZGxlcigpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2Jq
ZWN0LCB0aGUgb3RoZXIgUHJveHkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZCIpKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklmIGEg
UHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIgUHJveHkg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAnaGFuZGxlcicgc2hv
dWxkIGJlIGFuIE9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4gT2JqZWN0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTYsOCArMTE4LDkgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHNfcHJveHlBbHJlYWR5UmV2b2tlZAogc3RhdGljIEpTVmFsdWUgcGVyZm9ybVBy
b3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5T2JqZWN0LCBKU1ZhbHVl
IHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAt
MTM1LDcgKzEzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHlPYmplY3QtPmhhbmRsZXIoKTsKICAg
ICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKQEAgLTE1OSwxMCArMTYyLDEwIEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94
eUdldChFeGVjU3RhdGUKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoZGVzY3JpcHRv
ci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgIWRl
c2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFzYW1lVmFsdWUoZXhlYywg
ZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldCcg
cmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IHNo
b3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvcGVydHkiKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFu
ZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0
YXJnZXQncyBwcm9wZXJ0eSIpKTsKICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNj
ZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3Jp
cHRvci5nZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXRyYXBSZXN1
bHQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9u
LWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBi
ZSB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2Yg
YSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBnZXR0ZXIgc2hv
dWxkIGJlIHVuZGVmaW5lZCIpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg1LDggKzE4OCw5
IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXQoRXhlY1N0YXRlKiAKIGJvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewot
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAgLTIwMCw3ICsyMDQs
NyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVl
LmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIyMSw3ICsy
MjUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVmaW5lZCgpICYmICF0
cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBjYWxsIHNo
b3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJyZXN1bHQgb2YgJ2dldE93blBy
b3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFuIE9iamVjdCBvciB1bmRl
ZmluZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIzNCw3ICsyMzgs
NyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAgICAgICAgIGlm
ICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFi
bGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IldoZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBpcyB1bmRlZmlu
ZWQgdGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9m
ICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3Qg
YmUgY29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3Qgd29yayBpZiAndGFyZ2V0JyBpcyBhbm90
aGVyIFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0ZW5zaWJsZSBpbXBsZW1lbnRlZCBpbiBhIHdh
eSB0aGF0IGZpdHMgdy8gUHJveHlzLgpAQCAtMjQ2LDcgKzI1MCw3IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21lIHVw
IHdpdGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUgaG93IHRvIGJlY2F1c2UK
ICAgICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBhbGwgZmllbGRzIFtbQ29u
ZmlndXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyByZXR1cm5z
IHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxkIGJlIGV4dGVuc2libGUi
KSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJucyB1bmRlZmluZWQsIHRo
ZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxlIikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTI2NCwxMyArMjY4LDEzIEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICBib29sIHZhbGlkID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5h
bWUsIGlzRXh0ZW5zaWJsZSwKICAgICAgICAgdHJhcFJlc3VsdEFzRGVzY3JpcHRvciwgaXNUYXJn
ZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkLCB0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3IsIHRo
cm93RXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbGlkKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiKSk7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVzdWx0
IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgZmFpbHMgdGhlIElzQ29tcGF0aWJsZVBy
b3BlcnR5RGVzY3JpcHRvciB0ZXN0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAg
ICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkIHx8IHRhcmdldFByb3Bl
cnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24n
dCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBv
d24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9l
c24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJs
ZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTEsOCArMjk1LDkgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybUludGVybmFsTWV0aG9kRwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQo
KTsKQEAgLTMwNyw3ICszMTIsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVy
dHkoRXhlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAg
ICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQ
cm9wZXJ0eShFeGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGlzUHJv
cGVydHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNv
bmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZp
Z3VyYWJsZSBwcm9wZXJ0aWVzIikpOworICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUn
IGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUg
PSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBp
ZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9u
LWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHki
KSk7CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9uLWV4dGVuc2li
bGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHkiKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0z
NTYsOCArMzYxLDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUK
IAogYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29tbW9uKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewot
ICAgIGlmIChVTkxJS0VMWSghZXhlYy0+dm0oKS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlm
IChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgeworICAgICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwpAQCAtMzk0LDggKzQwMSw5IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmMKIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURlZmF1bHRQdXRGdW5jdGlv
biBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZt
LmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDA0LDcgKzQxMiw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAgIEpTVmFsdWUgaGFuZGxl
clZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkp
IHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFs
cmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM2LDExICs0NDQsMTEgQEAg
Ym9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIAogICAgIGlmICh0YXJnZXQt
PmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3Ip
KSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAhZGVzY3Jp
cHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHB1dFZhbHVlKSkg
ewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQ
cm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFi
bGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ugb3IgYmUg
dGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5k
bGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVy
dHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUg
dmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNB
Y2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNj
cmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9u
IGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNo
b3VsZCByZXR1cm4gZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBu
b24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxk
IHJldHVybiBmYWxzZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ4NiwxNCArNDk0LDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Q
cm94eUNhbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VM
WSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQog
ICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CiAgICAg
aWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3Qq
IGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwpAQCAtNTM1LDE0ICs1NDQsMTUgQEAgQ2FsbFR5cGUgUHJveHlPYmplY3Q6Omdl
dENhbGxEYXRhKEpTQ2VsbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVy
Zm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIH0KICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94eS0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTU2OSw3ICs1NzksNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICgh
cmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidzICdjb25zdHJ1Y3QnIG1l
dGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVy
J3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC01OTAsOCArNjAwLDkgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbgogYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybURlbGV0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIERl
ZmF1bHREZWxldGVGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdERlbGV0ZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NjAwLDcgKzYxMSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXQK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmICho
YW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtNjMxLDcgKzY0Miw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0
YXQKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAgICBpZiAodGFyZ2V0LT5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkg
ewogICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2Rl
bGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSB0YXJnZXQn
cyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2RlbGV0
ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSB0YXJnZXQncyBw
cm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQpAQCAtNjY2LDE0ICs2NzcsMTUgQEAgYm9vbCBQcm94eU9iamVj
dDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVByZXZl
bnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5M
SUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092
ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFu
ZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzAyLDcgKzcxNCw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW8KICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
ZiAodGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAncHJldmVudEV4dGVuc2lvbnMnIHRyYXAgcmV0dXJu
ZWQgdHJ1ZSBldmVuIHRob3VnaCBpdHMgdGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBo
YXZlIHJldHVybmVkIGZhbHNlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCBy
ZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hv
dWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03MTgsMTQgKzczMCwxNSBAQCBib29sIFByb3h5T2JqZWN0Ojpw
cmV2ZW50RXh0ZW5zaW9ucyhKU09iCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNp
YmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZt
LmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVl
ID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlS
ZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzU3LDExICs3NzAsMTEgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeAogICAgIGlmICh0cmFwUmVzdWx0QXNC
b29sICE9IGlzVGFyZ2V0RXh0ZW5zaWJsZSkgewogICAgICAgICBpZiAoaXNUYXJnZXRFeHRlbnNp
YmxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXRyYXBSZXN1bHRBc0Jvb2wpOwotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdp
c0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGlzIGV4dGVu
c2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7CisgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdp
c0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGlzIGV4dGVu
c2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQoIWlzVGFyZ2V0RXh0ZW5zaWJsZSk7CiAgICAgICAgICAgICBB
U1NFUlQodHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1
cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAg
cmV0dXJuZWQgdHJ1ZSB3aGVuIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUuIEl0IHNob3Vs
ZCBoYXZlIHJldHVybmVkIGZhbHNlIikpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNzc2
LDggKzc4OSw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OmlzRXh0ZW5zaWJsZShKU09iamVjdCoKIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVz
Y3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzkxLDcgKzgwNSw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKIAogICAgIEpTVmFsdWUg
aGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNO
dWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODM2LDExICs4NTAs
MTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgaWYg
KCFpc1RhcmdldERlc2NyaXB0b3JEZWZpbmVkKSB7CiAgICAgICAgIGlmICghdGFyZ2V0SXNFeHRl
bnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3Vn
aCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVk
IHVuZGVmaW5lZCBhbmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKKyAgICAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAn
ZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3VnaCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCBh
bmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFsc2Up
IHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94
eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi1jb25maWd1
cmFibGUgZmllbGQgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQ
cm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3Bl
cnR5JyB0cmFwIHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVu
IHRob3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJl
dHVybmVkIHVuZGVmaW5lZCIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogCkBAIC04NTMsMTEgKzg2NywxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5l
T3duUHJvcGVyCiAgICAgYm9vbCB0aHJvd0V4Y2VwdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgaXND
b21wYXRpYmxlRGVzY3JpcHRvciA9IHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3Io
ZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0YXJnZXRJc0V4dGVuc2libGUsIGRlc2NyaXB0
b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0aW9uKTsKICAgICBpZiAo
IWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVm
aW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUg
dHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlk
IG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3
aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFsc2UgJiYgdGFyZ2V0RGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZp
bmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJnZXQgZXZlbiB0aG91Z2gg
dGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBtdXN0IGRvIHNvIikpOwor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5
J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgbm9uLWNvbmZpZ3VyYWJs
ZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRoZSBpbnB1dCBkZXNjcmlwdG9y
IHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKQEAgLTg3MywxMyArODg3LDE0IEBAIGJvb2wgUHJveHlPYmplY3Q6OmRl
ZmluZU93blByb3BlcnR5KEpTT2IKIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9w
ZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHRyYXBSZXN1bHQs
IEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgSlNWYWx1ZSBoYW5kbGVy
VmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NjksNyArOTg0LDcgQEAgdm9pZCBQcm94
eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9yIChVbmlxdWVkU3RyaW5n
SW1wbCogaW1wbCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMpIHsKICAgICAgICAgaWYgKHJl
bW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90Q29udGFp
bmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0cmluZygi
UHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5
ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhl
ICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29u
ZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0
aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpAQCAtOTc5LDEzICs5OTQsMTMgQEAgdm9pZCBQcm94eU9iamVj
dDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9yIChVbmlxdWVkU3RyaW5nSW1wbCog
aW1wbCA6IHRhcmdldENvbmZpZ3VyYWJsZUtleXMpIHsKICAgICAgICAgaWYgKHJlbW92ZUlmQ29u
dGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90Q29udGFpbmVkSW4pIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0cmluZygiUHJveHkgb2Jq
ZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSAn
IiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9tIHRoZSAn
b3duS2V5cycgdHJhcCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIG1ha2VTdHJpbmcoIlByb3h5IG9iamVjdCdzIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIGhh
cyBjb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwgIicgdGhhdCB3YXMgbm90
IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodW5jaGVja2VkUmVzdWx0S2V5cy5z
aXplKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEga2V5IHRoYXQgd2FzIG5v
dCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdv
d25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRz
IG5vbi1leHRlbnNpYmxlIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAg
LTEwMjIsMTQgKzEwMzcsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlw
ZShFeAogICAgIEFTU0VSVChwcm90b3R5cGUuaXNPYmplY3QoKSB8fCBwcm90b3R5cGUuaXNOdWxs
KCkpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VT
b2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIo
KTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2Fn
ZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTEwNTcsNyArMTA3Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1TZXRQcm90b3R5cGUoRXgKICAgICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAg
ICAgICAgaWYgKHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQg
ZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRo
ZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiKSk7CisgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5
cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90
b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwNzEsNyArMTA4Nyw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBwcm90
b3R5cGUsIHRhcmdldFByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0cnVl
IHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5cGUg
dmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4gSXQg
c2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyB0cmFwIHJl
dHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlIGFuZCB0aGUgbmV3
IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcHJvdG90eXBl
IHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTA4NiwxNCArMTEwMiwxNSBAQCBib29sIFByb3h5T2JqZWN0
OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqCiBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGhh
bmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVs
bCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJv
eHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMTE1LDcgKzEx
MzIsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSAmJiAh
dHJhcFJlc3VsdC5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXRQcm90b3R5cGVPZicgdHJhcCBzaG91bGQg
ZWl0aGVyIHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldFByb3Rv
dHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIikpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTEyOSw3ICsxMTQ2LDcgQEAg
SlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQogICAgIGlmICh2bS5leGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBpZiAoIXNhbWVWYWx1ZShl
eGVjLCB0YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdnZXRQcm90b3R5cGVPZicgdHJhcCBm
b3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBh
cyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZv
ciBhIG5vbi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFz
IHRoZSB0YXJnZXQncyBwcm90b3R5cGUiKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDI2ICs5NSwyOSBA
QCB2b2lkIFJlZmxlY3RPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNvbnN0cnVjdAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlmICghdGFyZ2V0LmlzQ29u
c3RydWN0b3IoY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOwogCiAgICAgSlNWYWx1ZSBuZXdUYXJnZXQg
PSB0YXJnZXQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7CiAgICAgICAg
IG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1RhcmdldC5p
c0NvbnN0cnVjdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCIpKSk7CisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1
bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiKSkpOwogICAgIH0KIAogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCogYXJndW1lbnRzT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAo
IWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9iamVjdCIp
KSk7CiAKICAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShleGVjLCBhcmd1bWVudHNPYmplY3Qs
IFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCBBU0NJSUxpdGVyYWwoIlRoaXMgZXJyb3IgbXVzdCBu
b3QgYmUgcmFpc2VkIiksIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wg
ewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKQEAgLTEyOSw5ICsxMzIsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9wZXJ0eQogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1
bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5k
ZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Iikp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
ZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNDUsMjUgKzE1MSwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
ZmxlY3RPYmplCiAgICAgLy8gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSBzaG91bGQgbm90IHRocm93
IGFuIGVycm9yIHdoZW4gdGhlIGRlZmluZU93blByb3BlcnR5IG9wZXJhdGlvbiBmYWlscy4KICAg
ICBib29sIHNob3VsZFRocm93ID0gZmFsc2U7CiAgICAgSlNPYmplY3QqIHRhcmdldE9iamVjdCA9
IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
dGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHko
dGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CiB9CiAKIC8vIEZJWE1FOiBS
ZWZsZWN0LmVudW1lcmF0ZSBpcyByZW1vdmVkIGluIEVDTUEgMjAxNiBkcmFmdC4KIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1yZWZsZWN0LmVu
dW1lcmF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RW51bWVy
YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0
ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNPYmplY3Qo
dGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LmdldAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVu
dCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUg
PSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKQEAgLTE4MCw5ICsxOTIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNz
ZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAg
IGF1dG8ga2V5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xOTQsMTggKzIwOSwyNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwog
ICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldFByb3RvdHlw
ZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RD
b25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKGV4ZWMsIGFzT2JqZWN0KHRhcmdldCkpKTsKIH0KIAog
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5pc2V4dGVuc2li
bGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJs
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAgIGJvb2wgaXNFeHRl
bnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIxNiwyMCArMjM3LDI2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5cwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0Lmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5vd25LZXlz
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpzQ2FzdDxKU09iamVjdCo+
KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1ib2xzLCBEb250RW51bVBy
b3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnMKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QucHJldmVu
dEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QodGFyZ2V0KTsKLSAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgYm9vbCBy
ZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0
LCBleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihyZXN1bHQpKTsKQEAgLTIzOCw5ICsyNjUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYy
LyNzZWMtcmVmbGVjdC5zZXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRh
cmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0g
YXNPYmplY3QodGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1l
bnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKQEAgLTI1NCwyNSArMjg0LDI3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBEbyBub3QgcmFpc2UgYW55
IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9kZS4KICAgICBib29sIHNo
b3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QocmVj
ZWl2ZXIsIHNob3VsZFRocm93SWZDYW50U2V0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGFy
Z2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBzbG90KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9m
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDEp
OwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUg
ZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNl
dFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9i
amVjdCBvciBudWxsIikpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJn
ZXQpOwogCiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmpl
Y3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwog
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0
ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFByb3RvdHlw
ZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBpZiAodm0uZXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMCw2ICsyMTAsOSBAQCBpbmxpbmUgU3RydWN0dXJlKiBnZXRSZWdFeHBTdHJ1Y3R1cmUoRXhl
CiAKIGlubGluZSBSZWdFeHBGbGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBm
bGFncykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChmbGFncy5pc1VuZGVmaW5lZCgpKQogICAg
ICAgICByZXR1cm4gTm9GbGFnczsKICAgICBKU1N0cmluZyogZmxhZ3NTdHJpbmcgPSBmbGFncy50
b1N0cmluZyhleGVjKTsKQEAgLTIyMiwxMyArMjI1LDE1IEBAIGlubGluZSBSZWdFeHBGbGFncyB0
b0ZsYWdzKEV4ZWNTdGF0ZSogZXgKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBJbnZhbGlkRmxhZ3M7CiAgICAgaWYgKHJlc3VsdCA9PSBJbnZhbGlkRmxhZ3Mp
Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZs
YWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0
YXRpYyBKU09iamVjdCogcmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQsIEpTVmFsdWUgcGF0dGVybkFyZywg
SlNWYWx1ZSBmbGFnc0FyZykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBwYXR0ZXJuID0g
cGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHBhdHRlcm5BcmcudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMzksNyArMjQ0LDcgQEAgc3RhdGljIEpTT2Jq
ZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKgogCiAgICAgUmVnRXhwKiByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhF
cnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5l
cnJvck1lc3NhZ2UoKSkpOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRSZWdFeHBT
dHJ1Y3R1cmUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQpOwogICAgIGlmICh2bS5leGNl
cHRpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDYgKzE3MSw4IEBA
IE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXQKIHRlbXBsYXRlPHR5cGVu
YW1lIEZpeEVuZEZ1bmM+CiBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBTdHJpbmcmIHMsIFJlZ0V4cENvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciwgUmVnRXhwKiByZWdFeHAsIGNvbnN0IEZpeEVuZEZ1bmMmIGZpeEVu
ZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBN
YXRjaFJlc3VsdCByZXN1bHQgPSBjb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKHZtLCByZWdFeHAs
IHN0cmluZywgcywgMCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKQEAgLTE5Nyw3ICsxOTksNyBAQCBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZNJiB2bSwgRXhl
Y1N0YXRlCiAgICAgICAgICAgICBNYXRjaFJlc3VsdCBzYXZlZFJlc3VsdCA9IHJlc3VsdDsKICAg
ICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXktPmxlbmd0aCgpICsgbWF0
Y2hDb3VudCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAgICAgCkBAIC00MywyMiArNDQsMjggQEAgcHVibGljOgogCiAgICAg
Ym9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbGFzdEluZGV4KQogICAg
IHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIGlmIChMSUtFTFkobV9sYXN0SW5kZXhJ
c1dyaXRhYmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0V2l0aG91dFdyaXRlQmFy
cmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIGJvb2wgc2V0TGFzdEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAg
ICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFzdEluZGV4KTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNob3VsZFRocm93
KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIEpTVmFsdWUgZ2V0TGFzdEluZGV4KCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsOSArOTgsMTIgQEAgdm9pZCBSZWdF
eHBQcm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4oSlNDZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEwOSw5ICsxMTIsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJCdWlsdGluIFJlZ0V4cCBleGVjIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMjAs
OSArMTI2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcq
IHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMpOwogICAgIGlm
ICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMTMzLDkgKzE0MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4
cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jQ29t
cGlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpA
QCAtMTQzLDcgKzE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG8KICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsK
ICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hl
biBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhlci4i
KSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50
KCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CkBA
IC0xNTYsMTUgKzE2OCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgIGlm
IChmbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iKSkpOwogICAgICAgICB9Ci0gICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKGV4
ZWMtPnZtKCksIHBhdHRlcm4sIGZsYWdzKTsKKyAgICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVh
dGUodm0sIHBhdHRlcm4sIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1l
c3NhZ2UoKSkpOwogCi0gICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0UmVnRXhwKGV4
ZWMtPnZtKCksIHJlZ0V4cCk7CisgICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0UmVn
RXhwKHZtLCByZWdFeHApOwogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnNldExhc3RJ
bmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiB9
CkBAIC0yMTIsOSArMjI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NTdHJpbmcgZmxhZ3NTdHJp
bmcoRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKQEAgLTIyMiw3ICsyMzcsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgaWYgKEpTVmFsdWUgZWFybHlSZXR1
cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPnNvdXJjZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjQyLDExICsyNTYsMTQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0
OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3Rv
dHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBjYW4gb25seSBiZSBjYWxs
ZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+cmVnRXhwKCktPmdsb2JhbCgpKSk7CkBAIC0yNTQsMTEgKzI3MSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0Ojpp
bmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlw
ZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3Jl
Q2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVj
dCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBAIC0yNjYsMTEgKzI4Niwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBP
YmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhw
UHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBl
Lm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIp
KTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpKTsKQEAgLTI3OCwxMSAr
MzAxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclN0aWNreShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4
cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdF
eHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkg
YmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUu
c3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsKQEAgLTI5MCwxMSArMzE2
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBP
YmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhw
UHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBi
ZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS51
bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CkBAIC0zMDIsOSArMzMx
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZsYWdzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4
cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxs
ZWQgb24gYW4gb2JqZWN0IikpOwogCiAgICAgYXV0byBmbGFncyA9IGZsYWdzU3RyaW5nKGV4ZWMs
IGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTQyMSwxMSArNDUzLDE0IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSByZWdFeHBQcm90b0dldHRl
clMKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclNvdXJj
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86KSIpKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBhdHRl
cm4gPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+cGF0dGVybigpOwpAQCAt
NTM5LDYgKzU3NCw3IEBAIHZvaWQgZ2VuZXJpY1NwbGl0KAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gTGV0IHJ4IGJlIHRo
ZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpTIGJ1aWx0aW5dIElmIFR5cGUo
cngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KQEAgLTY0NCw3
ICs2ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAg
ICAgIH0pOwogICAgIAogICAgIGlmIChyZXN1bHRMZW5ndGggKyBkcnlSdW5Db3VudCA+PSBNQVhf
U1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMzLDggKzMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgYm9vbCByZWplY3Qo
RXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9uLCBjb25zdCBjaGFyKiBtZXNzYWdl
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBtZXNzYWdlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDE2IEBAIHZvaWQgU2V0Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMs
ICJTZXQiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0Nv
bnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAi
U2V0IikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmds
b2JhbE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGds
b2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTcyLDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29ucwogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBh
ZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1
bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5
cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlKSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZd
KFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRWYWx1ZSkgewogICAgICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxMyBAQCB2b2lkIFNldEl0ZXJh
dG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgSlNTZXRJdGVyYXRv
ciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTU2V0SXRlcmF0b3IqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2Fs
bCBTZXRJdGVyYXRvci5uZXh0KCkgb24gYSBub24tU2V0SXRlcmF0b3Igb2JqZWN0IikpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5v
bi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0KGNhbGxG
cmFtZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjcmVhdGVJdGVy
YXRvclJlc3VsdE9iamVjdChjYWxsRnJhbWUsIHJlc3VsdCwgZmFsc2UpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDE2IEBAIHZvaWQgU2V0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0KIAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNTZXQqIGdldFNl
dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dW
TUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNW
YWx1ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90
QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgSlNTZXQqIHNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPih0aGlz
VmFsdWUpOwogICAgIGlmICghc2V0KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCIpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBzZXQ7CkBAIC0xNDEsMTggKzE0NCwyNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuCiAgICAgCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1ZhbHVlcyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNTZXQqIHRoaXNPYmogPSBqc0R5bmFt
aWNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2Jq
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgU2V0IHZhbHVlIGl0ZXJhdG9yIGZvciBh
IG5vbi1TZXQgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldEl0
ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZVZhbHVl
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZy
YW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgU2V0IHZhbHVlIGl0ZXJh
dG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5zZXRJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNFbnRyaWVzKENh
bGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1NldCogdGhp
c09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBTZXQgZW50cnkg
aXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2Jq
LCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUg
YSBTZXQgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmos
IEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
aXZhdGVGdW5jSXNTZXQoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDYgKzkwLDggQEAg
U3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycgogCiBib29sIFNwYXJzZUFy
cmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCB1
bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCiAgICAgQWRkUmVzdWx0IHJlc3VsdCA9IGFkZChh
cnJheSwgaSk7CkBAIC0xMDEsNyArMTAzLDcgQEAgYm9vbCBTcGFyc2VBcnJheVZhbHVlTWFwOjpw
dXRFbnRyeShFeGVjUwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAmJiAhYXJyYXktPmlzU3Ry
dWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgIHJlbW92ZShyZXN1bHQuaXRlcmF0b3IpOwog
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xNDgsMTQgKzE1
MCwxNyBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0eURlc2NyCiAKIGJvb2wg
U3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFsdWUs
IFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJv
dykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpIHsK
ICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICAgICAgaWYgKHNo
b3VsZFRocm93KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBzZXQoZXhl
Yy0+dm0oKSwgbWFwLCB2YWx1ZSk7CisgICAgICAgIHNldCh2bSwgbWFwLCB2YWx1ZSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTAsNiArOTAsOSBAQCBKU0NlbGwq
IEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgp
OwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0
eShsZW5ndGgpOwpAQCAtMTAyLDcgKzEwNSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmkKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29kZVBvaW50ICE9
IGNvZGVQb2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFu
Z2Ugb2YgY29kZSBwb2ludHMiKSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFyZ3VtZW50
cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiKSkp
OwogCiAgICAgICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKQogICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTkt
MjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjMsNiArNjMsOSBAQCBib29sIFN0
cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAKIGJvb2wgU3RyaW5nT2JqZWN0Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmplY3QqPihj
ZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09i
amVjdCkpKQpAQCAtNzAsNyArNzMsNyBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKSkKQEAgLTgwLDEwICs4MywxMyBAQCBib29sIFN0cmluZ09iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlCiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmdPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1lKSkgewogICAgICAgICBp
ZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYgKzI4OSw5IEBAIHN0cnVj
dCBTdHJpbmdSYW5nZSB7CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VT
dWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJjZVZhbCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5n
ZUNvdW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHJhbmdlQ291bnQgPT0gMSkgewogICAg
ICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKICAgICAgICAgaW50IHBvc2l0
aW9uID0gc3Vic3RyaW5nUmFuZ2VzWzBdLnBvc2l0aW9uOwpAQCAtMzExLDcgKzMxNCw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAgICAgICAgY29uc3QgTENo
YXIqIHNvdXJjZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKICAgICAgICAgYXV0byBpbXBs
ID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVy
KTsKICAgICAgICAgaWYgKCFpbXBsKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewpAQCAtMzI5LDcgKzMzMiw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKIAogICAgIGF1dG8gaW1wbCA9
IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VD
b3VudDsgaSsrKSB7CkBAIC0zNDQsNiArMzQ3LDkgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1NwbGljZVN1YgogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJj
ZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdS
YW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBTdHJpbmcqIHNlcGFyYXRvcnMsIGludCBzZXBh
cmF0b3JDb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChyYW5nZUNvdW50ID09IDEgJiYg
c2VwYXJhdG9yQ291bnQgPT0gMCkgewogICAgICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5s
ZW5ndGgoKTsKICAgICAgICAgaW50IHBvc2l0aW9uID0gc3Vic3RyaW5nUmFuZ2VzWzBdLnBvc2l0
aW9uOwpAQCAtMzY0LDcgKzM3MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNT
cGxpY2VTdWIKICAgICAgICAgICAgIGFsbFNlcGFyYXRvcnM4Qml0ID0gZmFsc2U7CiAgICAgfQog
ICAgIGlmICh0b3RhbExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaWYgKCF0b3RhbExlbmd0aCkKICAgICAgICAgcmV0
dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CkBAIC0zNzUsNyArMzgxLDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiAgICAgICAgIGF1dG8gaW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1
ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgICAgICBpbnQgbWF4Q291bnQgPSBzdGQ6Om1heChyYW5n
ZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CiAgICAgICAgIGludCBidWZmZXJQb3MgPSAwOwpAQCAt
NDAwLDcgKzQwNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIK
ICAgICBVQ2hhciogYnVmZmVyOwogICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1ZmZlcik7CiAgICAgaWYg
KCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIGlu
dCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRvckNvdW50KTsKICAgICBp
bnQgYnVmZmVyUG9zID0gMDsKQEAgLTc1MiwxMCArNzU4LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBjaGVja09iamVjdENvZXJjaWJsZSgKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgogc3RhdGljIGlubGluZSBKU1N0cmluZyogcmVwZWF0Q2hhcmFjdGVyKEV4ZWNTdGF0ZSYgZXhl
YywgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIsIHVuc2lnbmVkIHJlcGVhdENvdW50KQogeworICAg
IFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxscHRyOwogICAgIGF1dG8g
aW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVwZWF0Q291bnQsIGJ1
ZmZlcik7CiAgICAgaWYgKCFpbXBsKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
ZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc5Nyw4ICs4MDYsMTAgQEAgQUxXQVlT
X0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlKAogQUxXQVlTX0lOTElORSBFbmNvZGVkSlNW
YWx1ZSByZXBsYWNlKAogICAgIFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNlVmFsdWUpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtODQxLDYgKzg1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIC8vIEFsc28gdXNlZCBm
b3IgdmFsdWVPZi4KIApAQCAtODUwLDE0ICs4NjQsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoU3RyaW5nT2Jq
ZWN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nT2Jq
ZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nOjpTYWZl
VmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAg
SlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQzMigpKSB7
CkBAIC04NzQsOSArODkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFy
Q29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5n
OjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7
CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChhMC5pc1VJbnQz
MigpKSB7CkBAIC05MDMsOSArOTIzLDEyIEBAIHN0YXRpYyBpbmxpbmUgVUNoYXIzMiBjb2RlUG9p
bnRBdChjb25zdCAKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtOTI5LDIwICs5NTIsMjYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBhc1N0cmluZyh0
aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSkpOwog
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmdGcm9t
QXJndW1lbnRzKGV4ZWMsIHRoaXNWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNW
YWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtOTc3LDkgKzEwMDYsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwog
ICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTEwMTQsOSArMTA0NiwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyMDEsOSArMTIzNiwx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHVuc2lnbmVkIGxlbjsKICAgICBKU1N0cmluZyog
anNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwpAQCAtMTI1Nyw5ICsxMjk1LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmkKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTI5
Nyw5ICsxMzM4LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2Fz
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc1Zh
bCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFs
LT52YWx1ZShleGVjKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRv
TG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwpAQCAtMTMxMCw5ICsxMzU0LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKICAgICBTdHJp
bmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNlV2l0aG91dExvY2FsZSgp
OwpAQCAtMTMyMyw5ICsxMzcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNM
b2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0xMzQwLDEwICsxMzkwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KICNpZiBFTkFCTEUoSU5UTCkKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSwgaW50MzJfdCAoKmNvbnZlcnRDYXNl
KShVQ2hhciosIGludDMyX3QsIGNvbnN0IFVDaGFyKiwgaW50MzJfdCwgY29uc3QgY2hhciosIFVF
cnJvckNvZGUqKSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJl
T2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVl
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogCiAgICAgLy8gMi4gTGV0IFMgYmUg
VG9TdHJpbmcoTykuCiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFsdWUudG9TdHJpbmcoc3Rh
dGUpOwpAQCAtMTQxMSwxMCArMTQ2NCwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2Nh
bGVDYXNlKEV4ZWNTCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHJlc3VsdExlbmd0aCk7
CiAgICAgICAgIGNvbnZlcnRDYXNlKGJ1ZmZlci5kYXRhKCksIHJlc3VsdExlbmd0aCwgdmlldy51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdmlld0xlbmd0aCwgdXRmOExvY2FsZUJ1ZmZlci5kYXRh
KCksICZlcnJvcik7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoZXJyb3IpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1l
KGVycm9yKSk7CiAgICAgICAgIGxvd2VyID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHJlc3VsdExl
bmd0aCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB1X2Vycm9yTmFtZShlcnJvcikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAKICAgICAvLyAxOC4gUmV0dXJuIEwu
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhzdGF0ZSwgbG93ZXIpKTsKQEAg
LTE0MzgsOSArMTQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmlnKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0xNDQ5LDkgKzE1MDUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1NtYWxs
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhp
c1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xNDYwLDkgKzE1MTksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0Js
aW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0g
dGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNDcxLDkgKzE1MzMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0JvbGQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTE0ODIsOSArMTU0NywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5n
IHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTE0OTMsOSArMTU2MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jSXRhbGljcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTUwNCw5ICsxNTc1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1MTUsOSArMTU4OSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTI2LDkgKzE2MDMsMTIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1N1cChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tP
YmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
ICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUzNyw5ICsxNjE3LDEyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1NTMsOSArMTYzNiwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MDUsOSArMTY5MSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNjIxLDkgKzE3MTAsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2NjcsOCArMTc1OSwx
MSBAQCBlbnVtIHsKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRyaW1TdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IHRyaW1LaW5kKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKQEAgLTE3MjAsMjEgKzE4MTUsMjMgQEAgc3RhdGljIGlubGluZSB1
bnNpZ25lZCBjbGFtcEFuZFRydW5jYXRlVAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1
ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
Ym9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggY2Fu
bm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTE3NTYsMjEgKzE4NTMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNX
aXRoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0
cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgw
KTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lv
biA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxh
ckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1
bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBT
dHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MDgsMjEgKzE5MDcsMjMgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAg
IEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7
CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmlu
Y2x1ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMg
Y2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE4NTUsNDIgKzE5NTYsNTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWls
dGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0l0
ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJs
ZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5n
KiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmds
b2JhbE9iamVjdCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKIH0KIAog
c3RhdGljIEpTVmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVUNoYXIqIHNv
dXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgVU5vcm1hbGl6YXRpb25Nb2RlIGZvcm0pCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBp
bnQzMl90IG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGggPSB1bm9ybV9ub3JtYWxpemUoc291cmNlLCBz
b3VyY2VMZW5ndGgsIGZvcm0sIDAsIG51bGxwdHIsIDAsICZzdGF0dXMpOwogCiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgewog
ICAgICAgICAvLyBUaGUgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCB3aGVuIG5vcm1hbGl6ZSBm
YWlscy4KICAgICAgICAgLy8gTm93IHdlIHRocm93IGEgdHlwZSBlcm9yciBzaW5jZSBpdCBzZWVt
cyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGFyZSBpbnZhbGlkLgotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlciA9IG51bGxwdHI7CiAg
ICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChub3JtYWxp
emVkU3RyaW5nTGVuZ3RoLCBidWZmZXIpOwogICAgIGlmICghaW1wbCkKLSAgICAgICAgcmV0dXJu
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAg
ICAgdW5vcm1fbm9ybWFsaXplKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBmb3JtLCAwLCBidWZmZXIs
IG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4
ZWMsIFdURk1vdmUoaW1wbCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICBKU1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52aWV3KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE5MTEsNyArMjAyMSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgZWxz
ZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAgICAgICBmb3JtID0gVU5PUk1fTkZL
RDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnQgZG9lcyBub3QgbWF0
Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
YXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUoZXhlYywgc291cmNlLmdl
dCgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3RoKCksIGZvcm0pKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC0yOCw3ICsyOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBKU1ZhbHVlIFN0cmluZ1JlY3Vyc2lv
bkNoZWNrZXI6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKCkKIHsKLSAgICByZXR1cm4gSlNDOjp0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJu
IEpTQzo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29wZSk7CiB9CiAKIEpTVmFs
dWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmcoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTg3LDcgKzg3
LDkgQEAgSlNPYmplY3QqIFN5bWJvbDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleAogCiBkb3VibGUg
U3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51
bWJlciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51bWJlciIpKTsKICAgICBy
ZXR1cm4gMC4wOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTExMCwx
NiArMTEwLDE5IEBAIGNvbnN0IGNoYXIqIFN5bWJvbEtleUZvclR5cGVFcnJvciA9ICJTeW0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1Y3RvcktleUZvcihFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHN5bWJvbFZhbHVlID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5pc1N5bWJvbCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIFN5bWJvbEtl
eUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IpKTsKIAogICAgIFN5bWJv
bEltcGwqIHVpZCA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51aWQoKTsK
ICAgICBpZiAoIXVpZC0+c3ltYm9sUmVnaXN0cnkoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEFTU0VSVCh1aWQtPnN5bWJvbFJlZ2lzdHJ5
KCkgPT0gJmV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCBleGVjLT52bSgpLnN5bWJvbFJlZ2lzdHJ5KCkua2V5Rm9y
U3ltYm9sKCp1aWQpKSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmdm0u
c3ltYm9sUmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCB2bS5zeW1ib2xSZWdpc3RyeSgpLmtleUZvclN5bWJvbCgqdWlkKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzIsMTYgKzcyLDE5
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBTeW1ib2xWYWx1ZU9mVHlwZUVycm8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIFN5bWJvbCogc3ltYm9sID0gbnVsbHB0cjsKICAgICBpZiAodGhpc1ZhbHVl
LmlzU3ltYm9sKCkpCiAgICAgICAgIHN5bWJvbCA9IGFzU3ltYm9sKHRoaXNWYWx1ZSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVG9T
dHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0
KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3ltYm9sT2Jq
ZWN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
U3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKICAgICAgICAgc3lt
Ym9sID0gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNPYmplY3QpLT5pbnRlcm5h
bFZhbHVlKCkpOwogICAgIH0KIApAQCAtOTAsMTYgKzkzLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
eW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1
ZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3Ip
OwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAg
IGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3ltYm9sT2JqZWN0OjppbmZvKCkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZhbHVl
T2ZUeXBlRXJyb3IpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Nhc3Q8U3ltYm9s
T2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgi
CisKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAgICAKKyNpZiBFTkFCTEUo
VEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCituYW1lc3BhY2UgeworCisvLyBMb2dzIGFsbCBU
aHJvd1Njb3BlIGFjdGl2aXR5IHRvIGhlbHAgZGVidWcgdGhlIHNvdXJjZSBvZiBhIHZlcmlmaWNh
dGlvbiBmYWlsdXJlLgorYm9vbCB0cmFjZU9uID0gZmFsc2U7CisKKy8vIEEgbW9yZSB2ZXJib3Nl
IGxvZ2dpbmcgb3B0aW9uIHRvIGR1bXAgdGhlIEMrKyBzdGFjayB0cmFjZSBhdCBzdHJhdGVnaWMg
cG9pbnRzIHRvIGFpZCBkZWJ1Z2dpbmcuCitib29sIHRyYWNlV2l0aFN0YWNrVHJhY2VzID0gZmFs
c2U7CisKKy8vIERpc2FibGVkIHRlbXBvcmFyaWx5IHVudGlsIGFsbCBrbm93biB2ZXJpZmljYXRp
b24gZmFpbHVyZXMgYXJlIGZpeGVkLgorYm9vbCB2ZXJpZmljYXRpb25PbiA9IGZhbHNlOworCit1
bnNpZ25lZCB0cmFjZUNvdW50ID0gMDsKK307CisKKy8qCisgICAgVGhyb3dTY29wZSB2ZXJpZmlj
YXRpb24gd29ya3MgdG8gc2ltdWxhdGUgZXhjZXB0aW9uIHRocm93cyBhbmQgY2F0Y2ggY2FzZXMg
d2hlcmUKKyAgICBleGNlcHRpb24gY2hlY2tzIGFyZSBtaXNzaW5nLiBUaGlzIGlzIGhvdyBpdCB3
b3JrczoKKworIDEuIFRoZSBWTSBoYXMgYSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQgdGhhdCBp
bmRpY2F0ZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNoZWNrIGlzCisgICAgbmVlZGVkLiBZb3UgY2Fu
IHRoaW5rIG9mIHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQgYmVpbmcgc2V0IGFzIGEgc2lt
dWxhdGVkCisgICAgdGhyb3cuCisKKyAyLiBFdmVyeSB0aHJvdyBzaXRlIG11c3QgZGVjbGFyZSBh
IFRocm93U2NvcGUgaW5zdGFuY2UgdXNpbmcgREVDTEFSRV9USFJPV19TQ09QRSBhdAorICAgIHRo
ZSB0b3Agb2YgaXRzIGZ1bmN0aW9uIChhcyBlYXJseSBhcyBwb3NzaWJsZSkgZS5nLgorIAorICAg
ICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCAuLi4pOworICAgICAgICB9CisKKyAgICBOb3RlOiBWTTo6dGhyb3dFeGNlcHRpb24o
KSBtZXRob2RzIGFyZSBwcml2YXRlLCBhbmQgb25seSBjYWxsZWFibGVieSB0aGUgVGhyb3dTY29w
ZQorICAgIGZyaWVuZCBjbGFzcy4gQWxsIHRocm93cyBtdXN0IGdvIHRocm91Z2ggYSBUaHJvd1Nj
b3BlLiBIZW5jZSwgd2UgYXJlIGd1YXJhbnRlZWQgdGhhdAorICAgIGFueSBmdW5jdGlvbiB0aGF0
IGNhbiB0aHJvdyB3aWxsIGhhdmUgYSBUaHJvd1Njb3BlLgorCisgICAgTm90ZTogYnkgY29udmVu
dGlvbiwgZXZlcnkgdGhyb3cgaGVscGVyIGZ1bmN0aW9uIG11c3QgdGFrZSBhIFRocm93U2NvcGUg
YXJndW1lbnQKKyAgICBpbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgaXRzIG93biBUaHJvd1Njb3Bl
LiAgVGhpcyBhbGxvd3MgdGhlIHRocm93IHRvIGJlIGF0dHJpYnV0ZWQKKyAgICB0byB0aGUgY2xp
ZW50IGNvZGUgcmF0aGVyIHRoYW4gdGhlIHRocm93IGhlbHBlciBpdHNlbGYuCisKKyAzLiBWZXJp
ZmljYXRpb24gb2YgbmVlZGVkIGV4Y2VwdGlvbiBjaGVja3MKKworICAgIGEuIE9uIGNvbnN0cnVj
dGlvbiwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06Om1fbmVlZEV4Y2VwdGlv
bkNoZWNrIGlzCisgICAgICAgbm90IHNldC4KKyAKKyAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0
aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGhhcyBjaGVja2VkIGZvciBleGNlcHRp
b25zCisgICAgICAgd2hlcmUgbmVlZGVkIGJlZm9yZSBkb2luZyBtb3JlIHdvcmsgd2hpY2ggbGVk
IHRvIGNhbGxpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisKKyAgICBiLiBPbiBkZXN0cnVjdGlv
biwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06Om1fbmVlZEV4Y2VwdGlvbkNo
ZWNrIGlzCisgICAgICAgbm90IHNldC4gVGhpcyB2ZXJpZmljYXRpb24gd2lsbCBiZSBza2lwcGVk
IGlmIHRoZSBUaHJvd1Njb3BlIGhhcyBiZWVuIHJlbGVhc2VkCisgICAgICAgKHNlZSAoNSkgYmVs
b3cpLgorCisgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGZ1bmN0aW9uIHRoYXQgb3ducyB0
aGlzIFRocm93U2NvcGUgaXMgbm90IG1pc3NpbmcgYW55CisgICAgICAgZXhjZXB0aW9uIGNoZWNr
cyBiZWZvcmUgcmV0dXJuaW5nLgorIAorICAgIGMuIFdoZW4gdGhyb3dpbmcgYW4gZXhjZXB0aW9u
LCB0aGUgVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25lZWRFeGNlcHRpb25DaGVj
aworICAgICAgIGlzIG5vdCBzZXQsIHVubGVzcyBpdCdzIGJlZW4gYXNrIHRvIHJldGhyb3cgdGhl
IHNhbWUgRXhjZXB0aW9uIG9iamVjdC4KKworIDQuIFNpbXVsYXRlZCB0aHJvd3MKKworICAgIFRo
cm93cyBhcmUgc2ltdWxhdGVkIGJ5IHNldHRpbmcgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJp
dC4KKworICAgIFRoZSBiaXQgd2lsbCBvbmx5IGJlIHNldCBpbiB0aGUgVGhyb3dTY29wZSBkZXN0
cnVjdG9yIGV4Y2VwdCB3aGVuIHRoZSBUaHJvd1Njb3BlCisgICAgZGV0ZWN0cyB0aGUgY2FsbGVy
IGlzIGEgTExJbnQgb3IgSklUIGZ1bmN0aW9uLiBMTEludCBvciBKSVQgZnVuY3Rpb25zIHdpbGwg
YWx3YXlzCisgICAgY2hlY2sgZm9yIGV4Y2VwdGlvbnMgYWZ0ZXIgYSBob3N0IEMrKyBmdW5jdGlv
biByZXR1cm5zIHRvIGl0LiBIb3dldmVyLCB0aGV5IHdpbGwKKyAgICBub3QgY2xlYXIgdGhlIG1f
bmVlZEV4Y2VwdGlvbkNoZWNrIGJpdC4KKworICAgIEhlbmNlLCBpZiB0aGUgVGhyb3dTY29wZSBk
ZXN0cnVjdG9yIGRldGVjdHMgdGhlIGNhbGxlciBpcyBhIExMSW50IG9yIEpJVCBmdW5jdGlvbiwK
KyAgICBpdCB3aWxsIGp1c3Qgc2tpcCB0aGUgc2V0dGluZyBvZiB0aGUgYml0LgorCisgICAgTm90
ZTogdGhlcmUgaXMgbm8gbmVlZCwgYW5kIGl0IGlzIGluY29ycmVjdCB0byBzZXQgdGhlIG1fbmVl
ZEV4Y2VwdGlvbkNoZWNrIGJpdAorICAgIGluIHRoZSB0aHJvd0V4Y2VwdGlvbiBtZXRob2RzLiBU
aGlzIGlzIGJlY2F1c2UsIGluIHByYWN0aWNlLCB3ZSBhbHdheXMgcmV0dXJuCisgICAgaW1tZWRp
YXRlbHkgYWZ0ZXIgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2Ug
dG8gc2V0IHRoZSBiaXQgaW4KKyAgICB0aGUgdGhyb3cganVzdCB0byBoYXZlIHRvIGNsZWFyIGl0
IGltbWVkaWF0ZWx5IGFmdGVyIGJlZm9yZSB3ZSBkbyB2ZXJpZmljYXRpb24gaW4KKyAgICB0aGUg
VGhyb3dTY29wZSBkZXN0cnVjdG9yLgorCisgNS4gVXNpbmcgVGhyb3dTY29wZTo6cmVsZWFzZSgp
CisKKyAgICBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG9ubHkgYmUgdXNlZCBhdCB0aGUg
Ym90dG9tIG9mIGEgZnVuY3Rpb24gaWY6CisgCisgICAgYS4gVGhpcyBmdW5jdGlvbiBpcyBnb2lu
ZyB0byBsZXQgaXRzIGNhbGxlciBjaGVjayBhbmQgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgCisg
ICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBnb28o
KTsgLy8gbWF5IHRocm93LgorCisgICAgICAgICAgICAuLi4gLy8gQ2xlYW51cCBjb2RlIHRoYXQg
d2lsbCBhcmUgbm90IGFmZmVjdGVkIGJ5IGEgcGVuZGluZyBleGNlcHRpb25zLgorCisgICAgICAg
ICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIHRlbGwgdGhlIFRocm93U2NvcGUgdGhhdCB0aGUgY2Fs
bGVyIHdpbGwgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9CisgCisgICAgYi4gVGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBkbyBhIHRh
aWwgY2FsbCB0aGF0IG1heSB0aHJvdy4KKworICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICAgICAgICAgIC4uLgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOyAvLyB0ZWxsIHRoZSBU
aHJvd1Njb3BlIHRoYXQgdGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUgZXhjZXB0aW9uLgorICAg
ICAgICAgICAgcmV0dXJuIGdvbygpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgIH0KKyAKKyAgICBU
aHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG5vdCBiZSB1c2VkIGluIHRoZSBjb2RlIHBhdGhz
IHRoYXQgYnJhbmNoLiBGb3IgZXhhbXBsZToKKyAKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ29vMSgpOyAvLyBtYXkgdGhyb3cuCisgICAg
ICAgICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIDw9PT09PT09PT09PT09PT09PT09IHRoZSBXUk9O
RyB3YXkgISEhCisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5IHRocm93LgorICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgCisgICAg
VGhlIGFib3ZlIHdpbGwgcmVzdWx0IGluIGEgdmVyaWZpY2F0aW9uIGZhaWx1cmUgaW4gZ29vMigp
J3MgVGhyb3dTY29wZS4gIFRoZSBwcm9wZXIgd2F5CisgICAgdG8gZml4IHRoaXMgdmVyaWZpY2F0
aW9uIGlzIHRvIGRvIHdpdGhlciAoNikgb3IgKDcpIGJlbG93LgorIAorICA2LiBDaGVja2luZyBl
eGNlcHRpb25zIHdpdGggVGhyb3dTY29wZTo6ZXhjZXB0aW9uKCkKKyAKKyAgICAgVGhyb3dTY29w
ZTo6ZXhjZXB0aW9uKCkgcmV0dXJucyB0aGUgdGhyb3duIEV4Y2VwdGlvbiBvYmplY3QgaWYgdGhl
cmUgaXMgb25lIHBlbmRpbmcuCisgICAgIEVsc2UgaXQgcmV0dXJucyBudWxscHRyLgorIAorICAg
ICBJdCBhbHNvIGNsZWFycyB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0IHRoZXJlYnkgaW5k
aWNhdGluZyB0aGF0IHdlJ3ZlIHNhdGlzaWZlZAorICAgICB0aGUgbmVlZGVkIGV4Y2VwdGlvbiBj
aGVjay4KKyAKKyAgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6CisgCisgICAgICAgIHZvaWQgZm9v
KC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdvbzEoKTsgLy8gbWF5IHRo
cm93LgorICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cuCisg
ICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAK
KyAgICBCdXQgc29tZXRpbWVzLCBmb3Igb3B0aW1pemF0aW9uIHJlYXNvbnMsIHdlIG1heSBjaG9v
c2UgdG8gdGVzdCB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsZWUKKyAgICBmdW5jdGlvbiBpbnN0ZWFk
IGRvaW5nIGEgbG9hZCBvZiB0aGUgVk0gZXhjZXB0aW9uIHZhbHVlLiBTZWUgKDcpIGJlbG93Lgor
IAorIDcuIENoZWNraW5nIGV4Y2VwdGlvbiBieSBjaGVja2luZyBjYWxsZWUgcmVzdWx0CisgCisg
ICAgVGhpcyBhcHByb2FjaCBzaG91bGQgb25seSBiZSBhcHBsaWVkIHdoZW4gaXQgbWFrZXMgYSBk
aWZmZXJlbmNlIHRvIHBlcmZvcm1hbmNlLgorICAgIElmIHdlIG5lZWQgdG8gZG8gdGhpcywgd2Ug
c2hvdWxkIGFkZCBhbiBBU1NFUlQoKSB0aGF0IGludm9rZXMgVGhyb3dTY29wZTo6ZXhjZXB0aW9u
KCkKKyAgICBhbmQgdmVyaWZ5IHRoZSByZXN1bHQuIFNpbmNlIFRocm93U2NvcGUgdmVyaWZpY2F0
aW9uIGlzIG9ubHkgZG9uZSBvbiBERUJVRyBidWlsZHMsCisgICAgdGhpcyBBU1NFUlQgd2lsbCBz
YXRpc2Z5IHRoZSB2ZXJpZmljYXRpb24gcmVxdWlyZW1lbnRzIHdoaWxlIG5vdCBpbXBhY3Rpbmcg
cGVyZm9ybWFuY2UuCisgCisgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6CisKKyAgICAgICAgdm9p
ZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAgIGJvb2wgZmFpbGVkID0gZ29vMSgpOyAvLyBt
YXkgdGhyb3cuCisgICAgICAgICAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSBmYWls
ZWQpCisgICAgICAgICAgICBpZiAoZmFpbGVkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgICAgICAu
Li4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAKKyA4LiBEZWJ1Z2dp
bmcgdmVyaWZpY2F0aW9uIGZhaWx1cmVzLgorCisgICAgYS4gV2hlbiB2ZXJpZmljYXRpb24gZmFp
bHMsIHlvdSB3aWxsIHNlZSBhIGhlbHBmdWwgbWVzc2FnZSBmb2xsb3dlZCBieSBhbiBhc3NlcnRp
b24gZmFpbHVyZS4KKyAgICAgICBGb3IgZXhhbXBsZToKKyAKKyAgICBGQUlMRUQgZXhjZXB0aW9u
IGNoZWNrIHZlcmlmaWNhdGlvbjoKKyAgICAgICAgRXhjZXB0aW9uIHRocm93biBmcm9tIFRocm93
U2NvcGUgWzJdIEV4aXQ6IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2Uv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoxMjQ1CisgICAg
ICAgIGlzIHVuY2hlY2tlZCBpbiBUaHJvd1Njb3BlIFsxXTogdmFyYXJnc1NldHVwIEAgL1ZvbHVt
ZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOjEzOTgKKworICAgICAgIFRoZSBtZXNzYWdlIHRlbGxzIHlvdSB0aGF0IGZh
aWx1cmUgd2FzIGRldGVjdGVkIGF0IGluIHZhcmFyZ3NTZXR1cCgpIEAgTExJbnRTbG93UGF0aHMu
Y3BwCisgICAgICAgbGluZSAxMzk4LCBhbmQgdGhhdCB0aGUgbWlzc2luZyBleGNlcHRpb24gY2hl
Y2sgc2hvdWxkIGhhdmUgaGFwcGVuZWQgc29tZXdoZXJlIGJldHdlZW4KKyAgICAgICB0aGUgY2Fs
bCB0byBzZXRVcENhbGwoKSBAIExMSW50U2xvd1BhdGhzLmNwcCBsaW5lIDEyNDUgYW5kIGl0Lgor
CisgICAgICAgSWYgdGhhdCBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24sIHlvdSBjYW4gLi4u
CisKKyAgICBiLiBUdXJuIG9uIFRocm93U2NvcGUgdHJhY2luZworIAorICAgICAgIEp1c3Qgc2V0
IHRyYWNlT249dHJ1ZSBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3BwLCBhbmQgcmVidWlsZC4g
VGhlcmVhZnRlciwgeW91IHNob3VsZAorICAgICAgIHNlZSBhIHRyYWNlIG9mIFRocm93U2NvcGVz
IGJlaW5nIGVudGVyZWQgYW5kIGV4aXRlZCBhcyB3ZWxsIGFzIHRoZWlyIGRlcHRoIGUuZy4KKwor
ICAgIFRocm93U2NvcGUgWzFdIEVudGVyOiBsbGludF9zbG93X3BhdGhfamZhbHNlIEAgL1ZvbHVt
ZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOjEwMzIKKyAgICBUaHJvd1Njb3BlIFsxXSBFeGl0OiBsbGludF9zbG93X3Bh
dGhfamZhbHNlIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEwMzIKKworICAgICAgIFlvdSB3aWxsIGFs
c28gc2VlIHRyYWNlcyBvZiBzaW11bGF0ZWQgdGhyb3dzIGUuZy4KKworICAgIFRocm93U2NvcGUg
WzJdIFRocm93IGZyb206IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2Uv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoxMjQ1CisKKyAg
ICAgICBJZiB0aGF0IGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbiwgeW91IGNhbiAuLi4KKwor
ICAgIGMuIFR1cm4gb24gVGhyb3dTY29wZSBzdGFjayBkdW1wcworCisgICAgICAgSnVzdCBzZXQg
dHJhY2VXaXRoU3RhY2tUcmFjZXM9dHJ1ZSBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3BwLCBh
bmQgcmVidWlsZC4KKyAgICAgICBUaGVyZWFmdGVyLCB5b3Ugc2hvdWxkIHNlZSBhIHN0YWNrIHRy
YWNlcyBhdCB2YXJpb3VzIHJlbGV2YW50IFRocm93U2NvcGUgZXZlbnRzLgorCisgICAgZC4gVXNp
bmcgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKQorCisgICAgICAgSWYgeW91IGhhdmUgaXNv
bGF0ZWQgdGhlIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrIHRvIGEgZnVuY3Rpb24gdGhhdCBpcyBs
YXJnZSBidXQKKyAgICAgICBpcyB1bnN1cmUgd2hpY2ggc3RhdGVtZW50IGNhbiB0aHJvdyBhbmQg
aXMgbWlzc2luZyB0aGUgY2hlY2ssIHlvdSBjYW4gc3ByaW5rbGUKKyAgICAgICB0aGUgZnVuY3Rp
b24gd2l0aCBjYWxscyB0byB0aHJvd1Njb3BlUHJpbnRJZk5lZWRDaGVjaygpLgorCisgICAgICAg
dGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB3aWxsIGxvZyBhIGxpbmUgIk5lZWQgZXhjZXB0
aW9uIGNoZWNrIGF0IC4uLiIgdGhhdAorICAgICAgIGlubGN1ZGVzIHRoZSBmaWxlIGFuZCBsaW5l
IG51bWJlciBvbmx5IHdoZW4gaXQgc2VlIHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBzZXQuCisg
ICAgICAgVGhpcyB3aWxsIHRlbGwgeW91IHdoaWNoIHN0YXRlbWVudCBzaW11bGF0ZWQgdGhlIHRo
cm93IHRoYXQgaXMgbm90IGJlaW5nIGNoZWNrZWQKKyAgICAgICBpLmUuIHRoZSBvbmUgdGhhdCBw
cmVjZWRlZCB0aGUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB0aGF0IHByaW50ZWQgYSBs
aW5lLgorKi8KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6OlRocm93U2NvcGUoVk0m
IHZtLCBUaHJvd1Njb3BlTG9jYXRpb24gbG9jYXRpb24pCisgICAgOiBtX3ZtKHZtKQorICAgICwg
bV9wcmV2aW91c1Njb3BlKHZtLm1fdG9wVGhyb3dTY29wZSkKKyAgICAsIG1fbG9jYXRpb24obG9j
YXRpb24pCisgICAgLCBtX2RlcHRoKG1fcHJldmlvdXNTY29wZSA/IG1fcHJldmlvdXNTY29wZS0+
bV9kZXB0aCArIDEgOiAwKQoreworICAgIG1fdm0ubV90b3BUaHJvd1Njb3BlID0gdGhpczsKKwor
ICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+
IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEVudGVyOiAiLCBsb2NhdGlvbi5mdW5jdGlvbk5h
bWUsICIgQCAiLCBsb2NhdGlvbi5maWxlLCAiOiIsIGxvY2F0aW9uLmxpbmUpOworICAgICAgICBp
ZiAobV92bS5tX25lZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAgIGRhdGFMb2coIiwgbmVl
ZHMgY2hlY2siKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAgICBpZiAodHJhY2VX
aXRoU3RhY2tUcmFjZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKyAgICB9
CisKKyAgICB2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlOjpTY29wZUVu
dHJ5KTsKK30KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6On5UaHJvd1Njb3BlKCkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLm1fdG9wVGhyb3dTY29wZSk7CisKKyAgICBpZiAo
IW1faXNSZWxlYXNlZCkKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2Zp
ZWQoU2l0ZTo6U2NvcGVFeGl0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gSWYgd2UgcmVsZWFz
ZWQgdGhlIHNjb3BlLCB0aGF0IG1lYW5zIHdlJ3JlIGxldHRpbmcgb3VyIGNhbGxlcnMgZG8gdGhl
CisgICAgICAgIC8vIGV4Y2VwdGlvbiBjaGVjay4gSG93ZXZlciwgYmVjYXVzZSBvdXIgY2FsbGVy
IG1heSBiZSBhIExMSW50IG9yIEpJVAorICAgICAgICAvLyBmdW5jdGlvbiAod2hpY2ggYWx3YXlz
IGNoZWNrcyBmb3IgZXhjZXB0aW9ucyBidXQgd29uJ3QgY2xlYXIgdGhlCisgICAgICAgIC8vIG1f
bmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCksIHdlIHNob3VsZCBjbGVhciBtX25lZWRFeGNlcHRpb25D
aGVjayBoZXJlCisgICAgICAgIC8vIGFuZCBsZXQgY29kZSBiZWxvdyBkZWNpZGUgaWYgd2UgbmVl
ZCB0byBzaW11bGF0ZSBhIHJlLXRocm93LgorICAgICAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNo
ZWNrID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCB3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQg
PSBmYWxzZTsKKyAgICB2b2lkKiBwcmV2aW91c1Njb3BlID0gbV9wcmV2aW91c1Njb3BlOworICAg
IHZvaWQqIHRvcENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOworICAgIAorICAgIC8vIElm
IHRoZSB0b3BDYWxsRnJhbWUgd2FzIHB1c2hlZCBvbiB0aGUgc3RhY2sgYWZ0ZXIgdGhlIHByZXZp
b3VzU2NvcGUgd2FzIGluc3RhbnRpYXRlZCwKKyAgICAvLyB0aGVuIHRoaXMgVk1FbnRyeSB0aHJv
d1Njb3BlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIExMSU5UIG9yIEpJVCBjb2RlIHRoYXQgYWx3YXlz
IGRvCisgICAgLy8gYW4gZXhjZXB0aW9uIGNoZWNrLiBJbiB0aGF0IGNhc2UsIHNraXAgdGhlIHNp
bXVsYXRlZCB0aHJvdyBiZWNhdXNlIHRoZSBMTEludCBhbmQgSklUCisgICAgLy8gd2lsbCBiZSBj
aGVja2luZyBmb3IgdGhlIGV4Y2VwdGlvbiB0aGVpciBvd24gd2F5IGluc3RlYWQgb2YgY2FsbGlu
ZyB2bS5leGNlcHRpb24oKS4KKyAgICBpZiAodG9wQ2FsbEZyYW1lICYmIHByZXZpb3VzU2NvcGUg
PiB0b3BDYWxsRnJhbWUpCisgICAgICAgIHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IHRydWU7
CisgICAgCisgICAgaWYgKCF3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQpCisgICAgICAgIHNpbXVs
YXRlVGhyb3coKTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0
cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEV4aXQ6ICIsIG1fbG9j
YXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRp
b24ubGluZSk7CisgICAgICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklUKQorICAgICAg
ICAgICAgZGF0YUxvZygiLCB3aXRoIHJldGhyb3ciKTsKKyAgICAgICAgaWYgKG1fdm0ubV9uZWVk
RXhjZXB0aW9uQ2hlY2spCisgICAgICAgICAgICBkYXRhTG9nKCIsIG5lZWRzIGNoZWNrIik7Cisg
ICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAgICAgaWYgKHRyYWNlV2l0aFN0YWNrVHJhY2Vz
KQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAgfQorCisgICAgbV92bS5t
X3RvcFRocm93U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7Cit9CisKK3ZvaWQgVGhyb3dTY29wZTo6
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sK
KyAgICBpZiAobV92bS5leGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlv
bikKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6VGhy
b3cpOworICAgIAorICAgIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30K
KworSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpCit7CisgICAgaWYgKCFlcnJvci5hc0NlbGwoKSB8fCAhanNEeW5hbWljQ2Fz
dDxFeGNlcHRpb24qPihlcnJvci5hc0NlbGwoKSkpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlvbkNo
ZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92bS50
aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK0pTT2JqZWN0KiBUaHJvd1Njb3BlOjp0
aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCit7CisgICAgaWYg
KCFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG9iaikpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlv
bkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit2b2lkIFRocm93U2NvcGU6OnByaW50
SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1
bnNpZ25lZCBsaW5lKQoreworICAgIGlmIChtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrKQorICAg
ICAgICBkYXRhTG9nKCI8IiwgdHJhY2VDb3VudCsrLCAiPiBOZWVkIGV4Y2VwdGlvbiBjaGVjayBh
dCAiLCBmdW5jdGlvbk5hbWUsICIgQCAiLCBmaWxlLCAiOiIsIGxpbmUsICJcbiIpOworfQorCit2
b2lkIFRocm93U2NvcGU6OnNpbXVsYXRlVGhyb3coKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
dm0ubV90b3BUaHJvd1Njb3BlKTsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludExvY2F0
aW9uID0gbV9sb2NhdGlvbjsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludERlcHRoID0g
bV9kZXB0aDsKKyAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0gdHJ1ZTsKKworICAgIGlm
ICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93
U2NvcGUgWyIsIG1fZGVwdGgsICJdIFRocm93IGZyb206ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25O
YW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIik7
CisgICAgICAgIGlmICh0cmFjZVdpdGhTdGFja1RyYWNlcykKKyAgICAgICAgICAgIFdURlJlcG9y
dEJhY2t0cmFjZSgpOworICAgIH0KK30KKworSlNfRVhQT1JUX1BSSVZBVEUKK3ZvaWQgVGhyb3dT
Y29wZTo6dmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoVGhyb3dTY29wZTo6U2l0
ZSBzaXRlKQoreworICAgIGlmICghdmVyaWZpY2F0aW9uT24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChVTkxJS0VMWShtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrKSkgeworICAgICAgICBh
dXRvIGZhaWxEZXB0aCA9IG1fdm0ubV9zaW11bGF0ZWRUaHJvd1BvaW50RGVwdGg7CisgICAgICAg
IGF1dG8mIGZhaWxMb2NhdGlvbiA9IG1fdm0ubV9zaW11bGF0ZWRUaHJvd1BvaW50TG9jYXRpb247
CisKKyAgICAgICAgYXV0byBzaXRlTmFtZSA9IFtdIChTaXRlIHNpdGUpIC0+IGNvbnN0IGNoYXIq
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoc2l0ZSkgeworICAgICAgICAgICAgY2FzZSBTaXRlOjpT
Y29wZUVudHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiRW50cnkiOworICAgICAgICAgICAg
Y2FzZSBTaXRlOjpTY29wZUV4aXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJFeGl0IjsKKyAg
ICAgICAgICAgIGNhc2UgU2l0ZTo6VGhyb3c6CisgICAgICAgICAgICAgICAgcmV0dXJuICJUaHJv
dyI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH07CisKKyAgICAgICAg
ZGF0YUxvZygKKyAgICAgICAgICAgICJGQUlMRUQgZXhjZXB0aW9uIGNoZWNrIHZlcmlmaWNhdGlv
bjpcbiIKKyAgICAgICAgICAgICIgICAgRXhjZXB0aW9uIHRocm93biBmcm9tIFRocm93U2NvcGUg
WyIsIGZhaWxEZXB0aCwgIl0gIiwgc2l0ZU5hbWUoc2l0ZSksICI6ICIsIGZhaWxMb2NhdGlvbi5m
dW5jdGlvbk5hbWUsICIgQCAiLCBmYWlsTG9jYXRpb24uZmlsZSwgIjoiLCBmYWlsTG9jYXRpb24u
bGluZSwgIlxuIgorICAgICAgICAgICAgIiAgICBpcyB1bmNoZWNrZWQgaW4gVGhyb3dTY29wZSBb
IiwgbV9kZXB0aCwgIl06ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2Nh
dGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIgorICAgICAgICAgICAgIlxuIik7
CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spOwor
ICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04pCisg
ICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Rocm93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaHJvd1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7CisKKyNpZiBFTkFCTEUo
VEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCitjbGFzcyBUaHJvd1Njb3BlIHsKK3B1YmxpYzoK
KyAgICBKU19FWFBPUlRfUFJJVkFURSBUaHJvd1Njb3BlKFZNJiwgVGhyb3dTY29wZUxvY2F0aW9u
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+VGhyb3dTY29wZSgpOworCisgICAgVk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gbV92bTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJv
d0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVj
dCopOworCisgICAgaW5saW5lIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkKKyAgICB7CisgICAgICAg
IG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fdm0u
ZXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVsZWFzZSgpIHsgbV9pc1Jl
bGVhc2VkID0gdHJ1ZTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmludElmTmVl
ZENoZWNrKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWdu
ZWQgbGluZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaW11bGF0ZVRocm93KCk7CisKKyAgICBl
bnVtIGNsYXNzIFNpdGUgeworICAgICAgICBTY29wZUVudHJ5LAorICAgICAgICBTY29wZUV4aXQs
CisgICAgICAgIFRocm93CisgICAgfTsKKyAgICB2b2lkIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVl
ZElzU2F0aXNmaWVkKFNpdGUpOworCisgICAgVk0mIG1fdm07CisgICAgVGhyb3dTY29wZSogbV9w
cmV2aW91c1Njb3BlOworICAgIFRocm93U2NvcGVMb2NhdGlvbiBtX2xvY2F0aW9uOworICAgIHVu
c2lnbmVkIG1fZGVwdGg7CisgICAgYm9vbCBtX2lzUmVsZWFzZWQgeyBmYWxzZSB9OworfTsKKwor
I2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKKyAgICBKU0M6OlRocm93U2NvcGUo
dm1fXywgSlNDOjpUaHJvd1Njb3BlTG9jYXRpb24oX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19M
SU5FX18pKQorCisjZGVmaW5lIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKHNjb3BlX18pIFwK
KyAgICBzY29wZV9fLnByaW50SWZOZWVkQ2hlY2soX19GVU5DVElPTl9fLCBfX0ZJTEVfXywgX19M
SU5FX18pCisKKyNlbHNlIC8vIG5vdCBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQor
CitjbGFzcyBUaHJvd1Njb3BlIHsKK3B1YmxpYzoKKyAgICBUaHJvd1Njb3BlKFZNJiB2bSkKKyAg
ICAgICAgOiBtX3ZtKHZtKQorICAgIHsgfQorCisgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4g
bV92bTsgfQorICAgIAorICAgIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eGNlcHRpb24qIGV4Y2VwdGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7IH0KKyAgICBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCB2YWx1ZSk7IH0KKyAg
ICBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2Jq
KSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7IH0KKyAgICAKKyAgICBF
eGNlcHRpb24qIGV4Y2VwdGlvbigpIHsgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7IH0KKyAgICB2
b2lkIHJlbGVhc2UoKSB7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07Cit9OworCisj
ZGVmaW5lIERFQ0xBUkVfVEhST1dfU0NPUEUodm1fXykgXAorICAgIEpTQzo6VGhyb3dTY29wZSh2
bV9fKQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKworQUxX
QVlTX0lOTElORSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHNjb3BlLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNWYWx1ZSB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCB2YWx1ZSk7Cit9CisK
K0FMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
VGhyb3dTY29wZSYgc2NvcGUsIEpTT2JqZWN0KiBvYmopCit7CisgICAgcmV0dXJuIHNjb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9u
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dT
Y29wZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IFRocm93U2NvcGVMb2NhdGlvbiB7CisgICAgVGhyb3dTY29w
ZUxvY2F0aW9uKCkgeyB9CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWduZWQgbGluZSkKKyAgICAgICAgOiBmdW5j
dGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICAgICAsIGZpbGUoZmlsZSkKKyAgICAgICAgLCBs
aW5lKGxpbmUpCisgICAgeyB9CisgICAgCisgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsg
bnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CisgICAgdW5zaWdu
ZWQgbGluZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlN0cm9uZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlRo
dW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiVk1FbnRyeVJlY29yZC5oIgpAQCAtMTA4LDYgKzEwOSw3IEBAIGNsYXNzIFN0cnVjdHVy
ZTsKIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOworY2xhc3MgVGhyb3dTY29w
ZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
OwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC00NDksMTAgKzQ1MSw2IEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb24qIGxhc3RFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBt
X2xhc3RFeGNlcHRpb247IH0KICAgICBKU0NlbGwqKiBhZGRyZXNzT2ZMYXN0RXhjZXB0aW9uKCkg
eyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm1fbGFzdEV4Y2VwdGlvbik7IH0K
IAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwg
RXhjZXB0aW9uKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlv
bihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLQogICAgIHZvaWQgc2V0RmFp
bE5leHROZXdDb2RlQmxvY2soKSB7IG1fZmFpbE5leHROZXdDb2RlQmxvY2sgPSB0cnVlOyB9CiAg
ICAgYm9vbCBnZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkKICAgICB7CkBAIC02NDQs
NiArNjQyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fbGFzdEV4Y2VwdGlvbiA9IGV4Y2VwdGlv
bjsKICAgICB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhy
b3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKICNpZiBF
TkFCTEUoQVNTRU1CTEVSKQogICAgIGJvb2wgbV9jYW5Vc2VBc3NlbWJsZXI7CiAjZW5kaWYKQEAg
LTY2OCw2ICs2NzAsMTMgQEAgcHJpdmF0ZToKIAogICAgIEV4Y2VwdGlvbiogbV9leGNlcHRpb24g
eyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNlcHRpb24geyBudWxscHRyIH07
CisjaWYgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKyAgICBUaHJvd1Njb3BlKiBt
X3RvcFRocm93U2NvcGUgeyBudWxscHRyIH07CisgICAgVGhyb3dTY29wZUxvY2F0aW9uIG1fc2lt
dWxhdGVkVGhyb3dQb2ludExvY2F0aW9uOworICAgIHVuc2lnbmVkIG1fc2ltdWxhdGVkVGhyb3dQ
b2ludERlcHRoIHsgMCB9OworICAgIG11dGFibGUgYm9vbCBtX25lZWRFeGNlcHRpb25DaGVjayB7
IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGJvb2wgbV9mYWlsTmV4dE5ld0NvZGVCbG9jayB7IGZh
bHNlIH07CiAgICAgRGVsZXRlUHJvcGVydHlNb2RlIG1fZGVsZXRlUHJvcGVydHlNb2RlIHsgRGVs
ZXRlUHJvcGVydHlNb2RlOjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2dsb2JhbENvbnN0UmVkZWNs
YXJhdGlvblNob3VsZFRocm93IHsgdHJ1ZSB9OwpAQCAtNjkwLDYgKzY5OSw4IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93Q2hpY2tlbj4gbV9zaGFkb3dDaGlj
a2VuOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PiBtX2J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CisKKyAgICBmcmllbmQgY2xhc3MgVGhyb3dTY29wZTsK
IH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVk1FbnRyeVNj
b3BlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Vk1FbnRy
eVNjb3BlKCk7CiAKKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0
OyB9CiAKICAgICB2b2lkIGFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFw
Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwx
MSArNDgsMTYgQEAgdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKAogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFrTWFwIikpOworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJl
Q2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtNYXAiKSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVj
dCgpOwogICAgIFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246
OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxP
YmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQpAQCAtNjksMTEgKzc0LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUg
YWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxU
eXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsm
XShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBp
ZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NiwxNSArNTYsMTggQEAgdm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTQogCiBzdGF0aWMgV2Vha01hcERhdGEqIGdldFdlYWtNYXBEYXRhKENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVj
dCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChKU1dlYWtNYXAqIHdlYWtNYXAg
PSBqc0R5bmFtaWNDYXN0PEpTV2Vha01hcCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHdlYWtN
YXAtPndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6
QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrTWFwIG9i
amVjdCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJ
TGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24tV2Vha01hcCBvYmplY3Qi
KSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk5LDEzICsxMDIsMTYgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RG
OjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdl
YWtNYXAiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVt
cHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOworICAgIG1hcC0+
c2V0KHZtLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rv
ci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxNiBA
QCB2b2lkIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oCiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIldlYWtTZXQiKSk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
YXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAg
U3RydWN0dXJlKiB3ZWFrU2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3Vi
Y2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vh
a1NldFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02OSw3
ICs3NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBD
YWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlv
bkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxE
YXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkp
OwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSwgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTQsMTUgKzU0LDE4IEBAIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFs
KCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBub24tb2JqZWN0IikpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoSlNXZWFrU2V0KiB3ZWFrU2V0ID0ganNEeW5h
bWljQ2FzdDxKU1dlYWtTZXQqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiB3ZWFrU2V0LT53ZWFr
TWFwRGF0YSgpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0
ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vha1NldCBvYmplY3QiKSk7
CisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwo
IkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQgb2JqZWN0IikpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC04NiwxMyArODksMTYgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHByb3RvRnVuY1dlYWtTZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZt
ID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxp
dGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkp
OwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwganNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24t
b2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkpOworICAgIG1hcC0+c2V0KHZtLCBhc09iamVjdChr
ZXkpLCBqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wOC0y
OSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRo
ZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEg
VGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgIC0gSW50cm9kdWNlZCB0aGUgRU5BQkxFKFRI
Uk9XX1NDT1BFX1ZFUklGSUNBVElPTikgZmxhZy4KKwogMjAxNi0wOC0yNyAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTFBhcnNlciBzaG91
bGQgcGFyc2UgcmVsYXRpdmUgVVJMcwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiAr
OTE4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAKICNlbmRpZgogCisjaWZuZGVm
IEVOQUJMRV9USFJPV19TQ09QRV9WRVJJRklDQVRJT04KKyNkZWZpbmUgRU5BQkxFX1RIUk9XX1ND
T1BFX1ZFUklGSUNBVElPTiAoIWRlZmluZWQoTkRFQlVHKSkKKyNlbmRpZgorCiAvKiBQaWNrIHdo
aWNoIGFsbG9jYXRvciB0byB1c2U7IHdlIG9ubHkgbmVlZCBhbiBleGVjdXRhYmxlIGFsbG9jYXRv
ciBpZiB0aGUgYXNzZW1ibGVyIGlzIGNvbXBpbGVkIGluLgogICAgT24gbm9uLVdpbmRvd3MgeDg2
LTY0LCBpT1MsIGFuZCBBUk02NCB3ZSB1c2UgYSBzaW5nbGUgZml4ZWQgbW1hcCwgb24gb3RoZXIg
cGxhdGZvcm1zIHdlIG1tYXAgb24gZGVtYW5kLiAqLwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNDggQEAKKzIwMTYtMDgtMjkgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSB0aGUgVGhyb3dTY29w
ZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50aWF0ZSBhIFRocm93U2NvcGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGlzIGlzIG9ubHkgYW4gQVBJIGNoYW5nZS4gSWYgaXQgYnVpbGRzLCBp
dCBzaG91bGQgYmUgZ29vZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNz
aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQ
YXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxl
RGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUFlc0NiY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNL
ZXlHZW5QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZVJzYUtleUdlblBhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSc2FPYWVwUGFy
YW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYVNzYVBhcmFtcyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlw
dG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTQXJyYXlGcm9tSlNP
Tik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJpbmdGcm9tSlNPTik6CisgICAgICAgIChXZWJD
b3JlOjpnZXRCb29sZWFuRnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0QmlnSW50ZWdl
clZlY3RvckZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhUlNB
Q29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6OmtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSldLQWxnb3JpdGhtVG9KU09OKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6c2VyaWFsaXpl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRET01FeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU21h
bGxlckludCk6CisgICAgICAgIChXZWJDb3JlOjp0b1NtYWxsZXJVSW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmNhbkFjY2Vzc0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93VHlwZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm90U3VwcG9ydGVkRXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6dGhyb3dJbnZhbGlkU3RhdGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0
aHJvd1NlY3VyaXR5RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVudE11c3RC
ZUVudW1FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50VHlwZUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnRocm93QXR0cmlidXRlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93
Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjp0aHJvd1NlcXVlbmNlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnRocm93Tm9uRmluaXRlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93R2V0dGVy
VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93U2V0dGVyVHlwZUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRocm93VGhpc1R5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpj
YWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5o
OgorICAgICAgICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRv
UmVmUHRyTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVBcnJheSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU6OmNhbGxUaHJvd1R5cGVFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnRXcmFwcGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JDcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
SXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFD
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50Ojpj
cmVhdGVUb3VjaExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6Z2V0Q1NTQ2Fu
dmFzQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxB
bGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6
OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJv
YmFibHlTdXBwb3J0c0NvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxh
Y2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246
OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6
Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0
aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxp
dGllcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsTWVzc2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9z
dE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9EZWNpc2lvbik6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
SlNNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2Rl
OjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OmFwcGVuZENoaWxkKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2lu
RWxlbWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVu
Z3RoOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29udmVydFRv
U3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRP
YmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmkpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlw
dG9LZXlGb3JtYXRGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9LZXlVc2Fn
ZXNGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6
ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Omlt
cG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3Vi
dGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29ya2VyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2xvbmVCYXNlOjp0aHJvd1N0YWNrT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVE
ZXNlcmlhbGl6ZXI6OnRocm93VmFsaWRhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChHZW5l
cmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVP
dmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMpOgorICAgICAg
ICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAg
ICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OkNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRp
b25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6Cisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5k
aW5nczo6T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpPYmpjQXJyYXk6OnNldFZhbHVlQXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2Jq
Y0FycmF5Ojp2YWx1ZUF0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJh
Y2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OnRocm93RXJyb3IpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAg
ICAgKEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpSdW50
aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVu
dGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRo
b2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAg
IChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlND
OjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTYtMDgtMjkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgdGhyb3cgYSBTZWN1cml0eUVy
cm9yIHdoZW4gZGVueWluZyBzZXR0aW5nIGEgY3Jvc3Mtb3JpZ2luIFdpbmRvdyBwcm9wZXJ0eQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlT
ZXNzaW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwxNSArNDAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQXBwbGVQYXlT
ZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1
ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
biIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTQXBwbGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgdWludDE2X3Qgc3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3Vt
ZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTcwLDE1ICs3MywxOCBAQCBKU1ZhbHVlIEpT
QXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwCiAKIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Np
b246OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgp
OwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0Fw
cGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3Rh
dGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24i
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbiIpKTsKIAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNBcHBsZVBheVNlc3Npb246OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICB1aW50MTZfdCBzdGF0dXMgPSBjb252ZXJ0PHVpbnQxNl90PihzdGF0ZSwgc3RhdGUuYXJndW1l
bnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMTA0LDE1ICsxMTAsMTggQEAgSlNWYWx1ZSBK
U0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7
CiAgICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBw
bGVQYXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0
ZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rp
b24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBw
bGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRGlj
dGlvbmFyeSBuZXdUb3RhbCA9IHsgJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTYzLDEyICs2NCwxNSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNC
bG9iKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JP
YmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVj
LmNhbGxlZSgpKTsKICAgICBBU1NFUlQoanNDb25zdHJ1Y3Rvcik7CiAKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiQmxvYiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2
YWlsYWJsZUVycm9yKGV4ZWMsIHNjb3BlLCAiQmxvYiIpOwogCiAgICAgaWYgKCFleGVjLmFyZ3Vt
ZW50Q291bnQoKSkgewogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01f
V1JBUFBFUihqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgQmxvYjo6Y3JlYXRl
KCkpKTsKQEAgLTg3LDcgKzkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKUwogICAgICAgICBKU1ZhbHVlIGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlID0gZXhlYy51bmNo
ZWNrZWRBcmd1bWVudCgxKTsKIAogICAgICAgICBpZiAoIWJsb2JQcm9wZXJ0eUJhZ1ZhbHVlLmlz
T2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgIlNl
Y29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0Iik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJTZWNv
bmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIE9iamVjdCIpOwog
CiAgICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxk
IGFuIG9iamVjdC4KICAgICAgICAgSlNPYmplY3QqIGJsb2JQcm9wZXJ0eUJhZ09iamVjdCA9IGJs
b2JQcm9wZXJ0eUJhZ1ZhbHVlLnRvT2JqZWN0KCZleGVjKTsKQEAgLTEwMiw3ICsxMDYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICAgICAgaWYgKGNv
bnRhaW5zRW5kaW5ncykgewogICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50
IiAmJiBlbmRpbmdzICE9ICJuYXRpdmUiKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKCZleGVjLCAiVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0
cmFuc3BhcmVudFwiIG9yIFwibmF0aXZlXCIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJl
IGVpdGhlciBcInRyYW5zcGFyZW50XCIgb3IgXCJuYXRpdmVcIiIpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gQXR0ZW1wdCB0byBnZXQgdGhlIHR5cGUgcHJvcGVydHkuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5
LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQ4LDggKzM0OCwxMSBAQCBib29sIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6cHV0RGVsZWdhdGUoCiAKIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0
cmluZygmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQs
NiArNTQsOSBAQCBlbnVtIGNsYXNzIEhhc2hSZXF1aXJlbWVudCB7CiAKIGJvb2wgSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciYgYWxnb3JpdGhtSWRl
bnRpZmllcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIHR5cGVkZWYgKEFsZ29yaXRobSBvciBE
T01TdHJpbmcpIEFsZ29yaXRobUlkZW50aWZpZXI7CiAKICAgICBTdHJpbmcgYWxnb3JpdGhtTmFt
ZTsKQEAgLTgxLDcgKzg0LDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6Omdl
dEFsZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWFsZ29yaXRobU5hbWUuY29u
dGFpbnNPbmx5QVNDSUkoKSkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAg
ICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMTIyLDggKzEyNSwxMSBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3Jp
dGhtKEpTRGljdGlvbmFyCiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4gY3JlYXRlQWVzQ2JjUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MCw3ICsxNDYsNyBAQCBzdGF0
aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgfQogCiAgICAgaWYgKGl2
RGF0YS5zZWNvbmQgIT0gMTYpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVFcnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3Qg
YmUgMTYgYnl0ZXMiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVFcnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0
ZXMiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTUxLDggKzE1Nywx
MSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBS
ZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzS2V5R2VuUGFyYW1zKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTY5LDggKzE3OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4gY3JlYXRlSG1hY1BhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE4Nyw4ICsxOTksMTEg
QEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVm
UHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNLZXlQYXJhbXMoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0yMDksOCArMjI0LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiBjcmVhdGVSc2FLZXlHZW5QYXJhbXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzIsNyArMjUwLDcg
QEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IHB1YmxpY0V4cG9uZW50QXJyYXkgPSB0b1VpbnQ4QXJyYXkocHVibGljRXhw
b25lbnRWYWx1ZSk7CiAgICAgaWYgKCFwdWJsaWNFeHBvbmVudEFycmF5KSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBv
bmVudCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiRXhwZWN0ZWQg
YSBVaW50OEFycmF5IGluIHB1YmxpY0V4cG9uZW50Iik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICByZXN1bHQtPnB1YmxpY0V4cG9uZW50LmFwcGVuZChwdWJsaWNFeHBvbmVu
dEFycmF5LT5kYXRhKCksIHB1YmxpY0V4cG9uZW50QXJyYXktPmJ5dGVMZW5ndGgoKSk7CkBAIC0y
NTAsOCArMjY4LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4K
IAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FPYWVw
UGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTI4NCw4ICszMDUsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM3LDEzICszOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEpTVmFs
dWUgYnVmZmVyID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4gYXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcoYnVmZmVyKTsKICAgICBpZiAo
IWFycmF5QnVmZmVyVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMoYXJyYXlC
dWZmZXJWaWV3LmdldCgpLCBlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVzdWx0KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC02MSw3ICs2NCw3IEBAIHN0YXRp
YyBib29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUKICAgICBKU1ZhbHVlIHZhbHVlID0g
c2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4
Y2VwdGlvbigpKTsKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVz
XCIgSlNPTiBrZXkiLCAga2V5KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYW4gYXJyYXkgZm9yIFwiJXNcIiBKU09OIGtleSIs
ICBrZXkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzIsNiArNzUsOSBA
QCBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29s
IGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0
IGNoYXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAg
UHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7CiAKQEAgLTg0LDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJvbUpTT04o
RXhlY1N0YXRlKgogICAgICAgICAvLyBDYW4gZ2V0IGFuIG91dCBvZiBtZW1vcnkgZXhjZXB0aW9u
LgogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEg
c3RyaW5nIHZhbHVlIGZvciBcIiVzXCIgSlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTkzLDYgKzk5LDkgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5n
RnJvbUpTT04oRXhlY1N0YXRlKgogCiBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sJiByZXN1
bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTEwMiw3ICsxMTEs
NyBAQCBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAgICAgSlNWYWx1
ZSBqc1ZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQo
IWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBpZiAoIWpzVmFsdWUuaXNCb29sZWFuKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEg
Ym9vbGVhbiB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgYm9vbGVh
biB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0xMTIsMTcgKzEyMSwyMCBAQCBzdGF0aWMgYm9vbCBnZXRCb29sZWFu
RnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdldEJpZ0ludGVnZXJWZWN0b3JGcm9t
SlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFZl
Y3Rvcjx1aW50OF90PiYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGJhc2U2
NHVybEVuY29kZWROdW1iZXI7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihleGVjLCBqc29u
LCBrZXksIGJhc2U2NHVybEVuY29kZWROdW1iZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIWJhc2U2NFVSTERlY29kZShiYXNlNjR1cmxFbmNvZGVkTnVtYmVyLCByZXN1bHQp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRl
Y29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkg
ZGF0YSBpbiBKV0siKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAo
cmVzdWx0WzBdID09IDApIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9j
dGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhl
IG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsMTYgKzE0NCwxOSBAQCBzdGF0aWMg
Ym9vbCBnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZyYganNvblN0cmluZykKICAgICA6IG1fZXhlYyhleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSBqc29uVmFsdWUgPSBKU09OUGFyc2UoZXhlYywganNvblN0cmluZyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
IWpzb25WYWx1ZSB8fCAhanNvblZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uIikpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IEpXSyBzZXJpYWxpemF0aW9uIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9q
c29uLnNldChtX2V4ZWMtPnZtKCksIGFzT2JqZWN0KGpzb25WYWx1ZSkpOworICAgIG1fanNvbi5z
ZXQodm0sIGFzT2JqZWN0KGpzb25WYWx1ZSkpOwogfQogCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6On5KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0soKQpAQCAtMTY1LDYgKzE4MCw5IEBA
IHN0YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3IKIAogT3B0aW9uYWw8Q3J5
cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVB
bGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMqIHN1Z2dlc3RlZFBhcmFtZXRlcnMpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJh
bGciLCBtX2p3a0FsZ29yaXRobU5hbWUpKSB7CiAgICAgICAgIC8vIEFsZ29yaXRobSBpcyBvcHRp
b25hbCBpbiBKV0suCiAgICAgICAgIHJldHVybiBDcnlwdG9BbGdvcml0aG1QYWlyIHsgc3VnZ2Vz
dGVkQWxnb3JpdGhtLCBzdWdnZXN0ZWRQYXJhbWV0ZXJzIH07CkBAIC0yMTYsNyArMjM0LDcgQEAg
T3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQogICAgICAgICBhbGdvcml0
aG0gPSBhbGdvcml0aG1SZWdpc3R5LmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpB
RVNfS1cpOwogICAgICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzKTsKICAgICB9IGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4
ZWMsICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGFs
Z29yaXRobSAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CiAgICAgfQogCkBAIC0yNTQsOSArMjcyLDEyIEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBh
aXI+IEpTQ3J5cHRvS2UKIAogc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBDcnlwdG9LZXlVc2FnZSYgdXNhZ2VzLCBjb25zdCBTdHJpbmcmIG9wZXJhdGlvbiwg
Y29uc3QgU3RyaW5nJiB0cnlPcGVyYXRpb24sIENyeXB0b0tleVVzYWdlIHRyeVVzYWdlKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKG9wZXJhdGlvbiA9PSB0cnlPcGVyYXRpb24pIHsKICAgICAg
ICAgaWYgKHVzYWdlcyAmIHRyeVVzYWdlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJh
dGlvbiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlvbiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICB1c2FnZXMgfD0gdHJ5
VXNhZ2U7CkBAIC0yNjYsNiArMjg3LDkgQEAgc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUo
RXhlY1N0YXRlKgogCiB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxl
VXNhZ2VzKENyeXB0b0tleVVzYWdlJiBzdWdnZXN0ZWRVc2FnZXMpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIENyeXB0b0tleVVzYWdlIGp3a1VzYWdlcyA9IDA7CiAKICAgICBKU0FycmF5
KiBrZXlPcHM7CkBAIC0yNzUsNyArMjk5LDcgQEAgdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OnJlY29uYwogICAgICAgICAgICAgU3RyaW5nIG9wZXJhdGlvbjsKICAgICAgICAgICAg
IGlmICghanNWYWx1ZS5nZXRTdHJpbmcobV9leGVjLCBvcGVyYXRpb24pKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRl
IGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQiKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRl
IGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCF0cnlKV0tLZXlPcHNWYWx1ZShtX2V4ZWMsIGp3
a1VzYWdlcywgb3BlcmF0aW9uLCBBU0NJSUxpdGVyYWwoInNpZ24iKSwgQ3J5cHRvS2V5VXNhZ2VT
aWduKSkKQEAgLTMxMCw3ICszMzQsNyBAQCB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Szo6cmVjb25jCiAgICAgICAgIGVsc2UgaWYgKGp3a1VzZVN0cmluZyA9PSAic2lnIikKICAgICAg
ICAgICAgIGp3a1VzYWdlcyB8PSAoQ3J5cHRvS2V5VXNhZ2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VW
ZXJpZnkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
YywgIlVuc3VwcG9ydGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJc
IiIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIlVuc3VwcG9y
dGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJcIiIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzYyLDIxICszODYsMjQgQEAgYm9v
bCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleVNpegogCiBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRT
ZXF1ZW5jZSgpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBrZXlCYXNlNjRV
Ukw7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImsi
LCBrZXlCYXNlNjRVUkwpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNyZXQg
a2V5IGRhdGEgaXMgbm90IHByZXNlbnQgaXMgSldLIikpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTZWNyZXQga2V5IGRhdGEgaXMgbm90
IHByZXNlbnQgaXMgSldLIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBWZWN0b3I8dWludDhfdD4gb2N0ZXRTZXF1ZW5jZTsKICAgICBpZiAoIWJhc2U2NFVSTERlY29k
ZShrZXlCYXNlNjRVUkwsIG9jdGV0U2VxdWVuY2UpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBp
biBKV0siKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG9jdGV0
U2VxdWVuY2Uuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAi
S2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXplIGlzIG5vdCB2YWxpZCBm
b3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMzg1LDI0ICs0MTIsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+
IEpTQ3J5cHRvSwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9uZW50cygpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBtb2R1bHVzOwogICAgIFZlY3Rvcjx1aW50OF90
PiBleHBvbmVudDsKICAgICBWZWN0b3I8dWludDhfdD4gcHJpdmF0ZUV4cG9uZW50OwogCiAgICAg
aWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJu
IiwgbW9kdWx1cykpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpX
SyBcIm5cIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiblwiIG1lbWJlciBp
cyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAo
IWtleVNpemVJc1ZhbGlkKG1vZHVsdXMuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IobV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0
aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXpl
IGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09O
KG1fZXhlYywgbV9qc29uLmdldCgpLCAiZSIsIGV4cG9uZW50KSkgewogICAgICAgICBpZiAoIW1f
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZXF1aXJlZCBKV0sgXCJlXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtNDU4LDIyICs0ODgsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0tleURhdGE+IEpTQ3J5cHRvSwogICAgICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAoIWVsZW1lbnQuaXNP
YmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVy
YWwoIkpXSyBcIm90aFwiIGFycmF5IG1lbWJlciBpcyBub3QgYW4gb2JqZWN0IikpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgXCJv
dGhcIiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZy
b21KU09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJyIiwgaW5mby5wcmltZUZhY3Rvcikp
IHsKICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmlt
ZSBmYWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGdldCBwcmltZSBmYWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFnZXRC
aWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBhc09iamVjdChlbGVtZW50KSwgImQiLCBp
bmZvLmZhY3RvckNSVEV4cG9uZW50KSkgewogICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgZXhwb25lbnQgZm9yIGEgcHJpbWUgaW4gXCJv
dGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9uZW50IGZv
ciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21K
U09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJ0IiwgaW5mby5mYWN0b3JDUlRDb2VmZmlj
aWVudCkpIHsKICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdl
dCBmYWN0b3IgQ1JUIGNvZWZmaWNpZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFy
eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBp
biBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQogICAgICAgICBvdGhlclByaW1lSW5mb3MuYXBwZW5kKGluZm8pOwpAQCAtNDg0LDEw
ICs1MTQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvSwogCiBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
OjprZXlEYXRhKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3a0tleVR5
cGU7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImt0
eSIsIGp3a0tleVR5cGUpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJl
ZCBKV0sgXCJrdHlcIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwia3R5XCIg
bWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtNDk3LDcgKzUzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0
b0sKICAgICBpZiAoandrS2V5VHlwZSA9PSAiUlNBIikKICAgICAgICAgcmV0dXJuIGtleURhdGFS
U0FDb21wb25lbnRzKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRl
ZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOworICAgIHRocm93VHlwZUVycm9yKG1fZXhl
Yywgc2NvcGUsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC01NjAsNiArNTkzLDkgQEAgc3RhdGljIHZvaWQgYWRk
Qm9vbFRvSlNPTihFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgdm9pZCBhZGRKV0tBbGdvcml0aG1U
b0pTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgQ3J5cHRvS2V5JiBr
ZXkpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgandrQWxnb3JpdGhtOwogICAgIHN3aXRj
aCAoa2V5LmFsZ29yaXRobUlkZW50aWZpZXIoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6SE1BQzoKQEAgLTY1Miw3ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBhZGRKV0tB
bGdvcml0aG1Ub0pTT04oRXhlY1N0CiAKICAgICBpZiAoandrQWxnb3JpdGhtLmlzTnVsbCgpKSB7
CiAgICAgICAgIC8vIFRoZSBzcGVjIGRvZXNuJ3QgY3VycmVudGx5IHRlbGwgd2hldGhlciBleHBv
cnQgc2hvdWxkIGZhaWwsIG9yIGp1c3Qgc2tpcCAiYWxnIiAod2hpY2ggaXMgYW4gb3B0aW9uYWwg
a2V5IGluIEpXSykuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
S2V5IGFsZ29yaXRobSBhbmQgc2l6ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sgYWxnb3JpdGhtIGlk
ZW50aWZpZXIiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldLIGFsZ29y
aXRobSBpZGVudGlmaWVyIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02ODksMTAg
KzcyNSwxMyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0YXRlKiBlCiAKIFN0
cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IENyeXB0b0tleSYga2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0tleURhdGE+IGtleURhdGEgPSBrZXkuZXhwb3J0RGF0YSgpOwogICAgIGlm
ICgha2V5RGF0YSkgewogICAgICAgICAvLyBUaGlzIGdlbmVyYWxseSBzaG91bGRuJ3QgaGFwcGVu
IGFzIGxvbmcgYXMgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLCBidXQgYXMg
dW5kZXJseWluZyBsaWJyYXJpZXMgcmV0dXJuIGVycm9ycywgdGhlcmUgbWF5IGJlIHNvbWUgcmFy
ZSBmYWlsdXJlIGNvbmRpdGlvbnMuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBt
YXRlcmlhbCIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIApAQCAtNzEzLDcg
Kzc1Miw3IEBAIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmkKICAgICBl
bHNlIGlmIChpczxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpKQogICAgICAg
ICBidWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKGV4ZWMsIGRvd25jYXN0PENyeXB0b0tleURhdGFS
U0FDb21wb25lbnRzPigqa2V5RGF0YSksIHJlc3VsdCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5IGRvZXNuJ3Qgc3VwcG9ydCBleHBv
cnRLZXkiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIktleSBkb2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlw
dG9PcGVyYXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTIgKzM2LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogYm9vbCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJiByZXN1bHQp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHRvQXJyYXlC
dWZmZXIodmFsdWUpKQogICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAg
ZWxzZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZm
ZXJWaWV3KHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nh
c3Q8dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRl
TGVuZ3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNh
biBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiT25seSBBcnJheUJ1ZmZlciBhbmQgQXJy
YXlCdWZmZXJWaWV3IG9iamVjdHMgY2FuIGJlIHBhc3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRh
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5LDcg
KzEwOSw5IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgp
KTsKKyAgICBWTSYgdm0gPSBtX2lzb2xhdGVkV29ybGQtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGlmICghbV9jb25zdHJ1Y3RvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDcgKzE0Niw3
IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKIAogICAgIEVsZW1l
bnQqIHdyYXBwZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50
KTsKICAgICBpZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50
KSB7Ci0gICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1l
bnQgY29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICB0
aHJvd0ludmFsaWRTdGF0ZUVycm9yKCpzdGF0ZSwgc2NvcGUsICJDdXN0b20gZWxlbWVudCBjb25z
dHJ1Y3RvciBmYWlsZWQgdG8gdXBncmFkZSBhbiBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgd3JhcHBlZEVsZW1lbnQtPnNldEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKCp0
aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIEpTT2JqZWN0KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soRXhlY1N0YXRl
JiBzdGF0ZSwgSlNPYmplY3QmIHByb3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWQpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJvdG90eXBlLmdldCgmc3RhdGUs
IGlkKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIGlmIChjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBpZiAoIWNhbGxiYWNrLmlzRnVuY3Rpb24oKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBt
dXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVu
Y3Rpb24iKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gY2Fs
bGJhY2suZ2V0T2JqZWN0KCk7CkBAIC01Niw4ICs1OSwxMSBAQCBzdGF0aWMgSlNPYmplY3QqIGdl
dEN1c3RvbUVsZW1lbnRDYWxsYmFjCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNk
b20tY3VzdG9tZWxlbWVudHJlZ2lzdHJ5LWRlZmluZQogSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVmaW5lKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEF0b21p
Y1N0cmluZyBsb2NhbE5hbWUoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0
YXRlKS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTY1LDcgKzcxLDcgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeTo6ZGVmaW5lKAogCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3Ry
dWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhl
IHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiKSk7CiAgICAgSlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JWYWx1ZS5nZXRPYmplY3QoKTsKIAogICAgIC8vIEZJ
WE1FOiBUaHJvdyBhIFR5cGVFcnJvciBpZiBjb25zdHJ1Y3RvciBkb2Vzbid0IGluaGVyaXQgZnJv
bSBIVE1MRWxlbWVudC4KQEAgLTc1LDExICs4MSwxMSBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVu
dFJlZ2lzdHJ5OjpkZWZpbmUoCiAgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25T
dGF0dXM6OlZhbGlkOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1l
VmFsaWRhdGlvblN0YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczoKLSAgICAgICAgcmV0
dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50
IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWls
dGluIGVsZW1lbnRzIikpOwogICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3Rh
dHVzOjpOb0h5cGhlbjoKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikp
OworICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOwogICAg
IGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpDb250YWluc1VwcGVyQ2Fz
ZToKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNl
IGxldHRlciIpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgcmUtZW50cmFuY3kgaGVy
ZS4KQEAgLTg3LDIxICs5MywyMCBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojpk
ZWZpbmUoCiAKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkmIHJlZ2lzdHJ5ID0gd3JhcHBlZCgp
OwogICAgIGlmIChyZWdpc3RyeS5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpIHsKLSAgICAgICAg
dGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5l
IG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOworICAg
ICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJD
YW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBu
YW1lIikpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAo
cmVnaXN0cnkuY29udGFpbnNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdGhy
b3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11
bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOworICAgICAgICB0
aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
ZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOwog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBhdXRvJiB2bSA9IGds
b2JhbE9iamVjdCgpLT52bSgpOwogICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjb25zdHJ1
Y3Rvci0+Z2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IGlmICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rvcidz
IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IncyBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3QiKSk7CiAgICAgSlNPYmplY3QmIHBy
b3RvdHlwZU9iamVjdCA9ICphc09iamVjdChwcm90b3R5cGVWYWx1ZSk7CiAKICAgICBRdWFsaWZp
ZWROYW1lIG5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFj
ZVVSSSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOCwxOCArMzM4LDI0IEBAIEpTVmFsdWUg
Y3JlYXRlRE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXgKIAogdm9pZCBzZXRET01FeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlIGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywg
ZWMpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKSk7CiB9CiAKIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFlYy5jb2RlIHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2Vw
dGlvbihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7
CiB9CiAKICN1bmRlZiBUUllfVE9fQ1JFQVRFX0VYQ0VQVElPTgpAQCAtNDMwLDEzICs0MzYsMTYg
QEAgc3RhdGljIFN0cmluZyByYW5nZUVycm9yU3RyaW5nKGRvdWJsZSB2YQogCiBzdGF0aWMgZG91
YmxlIGVuZm9yY2VSYW5nZShFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgeCwgZG91YmxlIG1pbmlt
dW0sIGRvdWJsZSBtYXhpbXVtKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0ZDo6aXNuYW4o
eCkgfHwgc3RkOjppc2luZih4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJh
bmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0p
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHggPSB0cnVuYyh4KTsKICAgICBpZiAo
eCA8IG1pbmltdW0gfHwgeCA+IG1heGltdW0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0pKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBt
YXhpbXVtKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4geDsKQEAgLTQ3
NSw2ICs0ODQsOSBAQCBzdHJ1Y3QgSW50VHlwZUxpbWl0czx1aW50MTZfdD4gewogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NpZ25l
ZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25seSBi
ZSB1c2VkIGZvciBzaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVkZWYgSW50VHlw
ZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBzdGF0aWMgaW5saW5l
IFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiAgICAgICAgIGNhc2UgTm9ybWFsQ29udmVyc2lv
bjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENs
YW1wOgogICAgICAgICAgICAgcmV0dXJuIGQgPCBMaW1pdHNUcmFpdDo6bWluVmFsdWUgPyBMaW1p
dHNUcmFpdDo6bWluVmFsdWUgOiBMaW1pdHNUcmFpdDo6bWF4VmFsdWU7CkBAIC01MjEsNiArNTMz
LDkgQEAgc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUmIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNp
Z25lZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25s
eSBiZSB1c2VkIGZvciB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlcyIpOwogCiAgICAgdHlwZWRlZiBJ
bnRUeXBlTGltaXRzPFQ+IExpbWl0c1RyYWl0OwpAQCAtNTMzLDcgKzU0OCw3IEBAIHN0YXRpYyBp
bmxpbmUgVCB0b1NtYWxsZXJVSW50KEV4ZWNTdGF0ZSYKICAgICAgICAgY2FzZSBOb3JtYWxDb252
ZXJzaW9uOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGQpOwogICAgICAgICBj
YXNlIEVuZm9yY2VSYW5nZToKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICBjYXNlIENsYW1wOgogICAgICAgICAgICAgcmV0dXJuIExpbWl0c1Ry
YWl0OjptYXhWYWx1ZTsKQEAgLTc2Miw2ICs3NzcsOSBAQCBET01XaW5kb3cmIGZpcnN0RE9NV2lu
ZG93KEV4ZWNTdGF0ZSogZXhlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVu
dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJp
dHlSZXBvcnRpbmdPcHRpb24gcmVwb3J0aW5nT3B0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghdGFyZ2V0RG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzcyLDcg
Kzc5MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0MKIAogICAg
IHN3aXRjaCAocmVwb3J0aW5nT3B0aW9uKSB7CiAgICAgY2FzZSBUaHJvd1NlY3VyaXR5RXJyb3I6
Ci0gICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHRhcmdldERvY3VtZW50LT5kb21X
aW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CisgICAgICAg
IHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHNjb3BlLCB0YXJnZXREb2N1bWVudC0+ZG9tV2lu
ZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIExvZ1NlY3VyaXR5RXJyb3I6CiAgICAgICAgIHByaW50RXJyb3JNZXNz
YWdlRm9yRnJhbWUodGFyZ2V0RG9jdW1lbnQtPmZyYW1lKCksIHRhcmdldERvY3VtZW50LT5kb21X
aW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CkBAIC03OTks
OSArODE3LDkgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVAogICAg
IHJldHVybiB0YXJnZXQgJiYgY2FuQWNjZXNzRG9jdW1lbnQoc3RhdGUsICZ0YXJnZXQtPmRvY3Vt
ZW50KCksIExvZ1NlY3VyaXR5RXJyb3IpOwogfQogICAgIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHRocm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGVycm9yTWVz
c2FnZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXJndW1lbnRNdXN0QmUoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1l
bnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUpCkBAIC04MzYsNzUgKzg1NCw3NSBAQCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJv
cihKU0M6OkV4CiAgICAgY29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRv
IHNldCBwcm9wZXJ0eSAnIiwgYXR0cmlidXRlTmFtZSwgIicgb24gYSBub24tIiwgaW50ZXJmYWNl
TmFtZSwgIiBvYmplY3QuIikpOwogfQogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCB0aHJvd05vdFN1
cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlv
bigpKTsKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdlKTsKLSAgICBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NV
UFBPUlRFRF9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZt
ZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit2b2lkIHRocm93SW52YWxpZFN0
YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghc3RhdGUuaGFkRXhjZXB0aW9uKCkp
OwogICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nKG1lc3NhZ2UpOwotICAgIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NU
QVRFX0VSUiwgJm1lc3NhZ2VTdHJpbmcpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3Nh
Z2VTdHJpbmcpKTsKIH0KIAotdm9pZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKLSAgICBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0
ZSwgU0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgU0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7
CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIq
IGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQorSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCiB7
CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1
aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1l
LCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgib25lIG9mOiAiKTsK
ICAgICBidWlsZGVyLmFwcGVuZChleHBlY3RlZFZhbHVlcyk7Ci0gICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVu
dE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBh
cmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKIHsKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRl
eCwgYXJndW1lbnROYW1lLCBpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiYSBmdW5jdGlvbiIpOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1KU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1
bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBleHBlY3RlZFR5cGUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAg
IGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFt
ZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiYW4gaW5zdGFuY2Ugb2YgIik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0
ZWRUeXBlKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9T
dHJpbmcoKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVp
bGRlci50b1N0cmluZygpKTsKIH0KIAotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlw
ZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CiB9CiAKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit2b2lk
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0
cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQogewotICAgIHRocm93VHlwZUVy
cm9yKHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1
dGVOYW1lLCAiIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICIsIGV4cGVjdGVkVHlw
ZSkpOworICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIs
IGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiAiLCBleHBlY3RlZFR5cGUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1
ZSB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQorSlNDOjpF
bmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZh
aWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
JnN0YXRlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNl
TmFtZSwgIiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZh
aWxhYmxlIikpKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZVJlZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhpbnRlcmZhY2VOYW1lLCAiIGNvbnN0
cnVjdG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKSkpOwog
fQogCi12b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQor
dm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiB9CiAK
LXZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhy
b3dOb25GaW5pdGVUeXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHBy
b3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZSIp
KTsKIH0KIAogU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCkBAIC05MTIsMTQgKzkzMCwx
NCBAQCBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29uc3QgCiAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUp
OwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0
cmlidXRlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoaW50ZXJm
YWNlTmFtZSwgYXR0cmlidXRlTmFtZSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUsIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGF0
dHJpYnV0ZU5hbWUpKTsKIH0KIAotYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFr
ZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOwor
ICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVy
ZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtOTI4LDkgKzk0Niw5IEBAIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29u
c3QgY2gKICAgICByZXR1cm4gbWFrZVN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCBpbnRlcmZhY2VO
YW1lLCAnLicsIGZ1bmN0aW9uTmFtZSwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFt
ZSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSkKK0VuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
c3RhdGUsIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5h
bWUpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBtYWtlVGhpc1R5
cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHZvaWQg
Y2FsbEZ1bmN0aW9uV2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTT2JqZWN0JiB0aGlzT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpAQCAt
OTU1LDcgKzk3Myw5IEBAIHZvaWQgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kK
IAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVjdG9y
IHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywyNSArMTEzLDI1IEBAIERPTVdp
bmRvdyYgZmlyc3RET01XaW5kb3coSlNDOjpFeGVjU3RhdGUKIFdFQkNPUkVfRVhQT1JUIEpTQzo6
RW5jb2RlZEpTVmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7
CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0
ZU5hbWUpOwogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBj
b25zdCBjaGFyKiBtZXNzYWdlKTsKLXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5
cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwotdm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0
dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCB2
b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKLVdFQkNPUkVfRVhQ
T1JUIHZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQg
dGhyb3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKLQotV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVz
dEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOwot
SlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUpOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRV
bmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSk7Cit2b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRo
cm93U2NvcGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhyb3dJbnZhbGlkU3RhdGVF
cnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpOwordm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6VGhyb3dTY29wZSYpOwordm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0
IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitXRUJDT1JF
X0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OlRocm93U2NvcGUmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdGhy
b3dOb25GaW5pdGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsK
K3ZvaWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3Bl
JiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpUaHJvd1Njb3BlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1l
bnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3Vt
ZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUpOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgdW5zaWdu
ZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRUeXBlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSk7CiAKIFN0cmluZyBtYWtl
R2V0dGVyVHlwZUVycm9yTWVzc2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBhdHRyaWJ1dGVOYW1lKTsKIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKLVdF
QkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRy
aWJ1dGVOYW1lKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlz
VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFs
dWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUm
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsK
K1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1
Y3R1cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvKik7CiBXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01T
dHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKik7CkBAIC00OTAsOSArNDkwLDEyIEBAIGlubGluZSBpbnQzMl90IGZpbml0ZUlu
dDMyVmFsdWUoSlNDOjpKU1YKIC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2JqZWN0IGlz
IGEgc2VxdWVuY2UgdHlwZSBwZXIgc2VjdGlvbiA0LjEuMTMgb2YgdGhlIFdlYklETCBzcGVjLgog
aW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywg
SlNDOjpKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogeworICAgIEpTQzo6Vk0mIHZt
ID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlm
ICghb2JqZWN0KSB7Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDQsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVj
dCogdG9KU1NlcXVlbmNlKEpTQzo6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KGxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5j
ZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzE4LDI1ICs3MjEs
MzMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZG91YgogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0
aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKKyAg
ICBKU0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhy
b3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+PigpOwogICAg
IH0KIAogICAgIFZlY3RvcjxSZWZQdHI8VD4+IHJlc3VsdDsKLSAgICBmb3JFYWNoSW5JdGVyYWJs
ZSgmZXhlYywgdmFsdWUsIFsmcmVzdWx0XShKU0M6OlZNJiwgSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0M6OkpTVmFsdWUganNWYWx1ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKCZleGVjLCB2
YWx1ZSwgWyZyZXN1bHRdKEpTQzo6Vk0mIHZtLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6
SlNWYWx1ZSBqc1ZhbHVlKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgICAgICBpZiAoanNWYWx1ZS5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKEpTVDo6dG9XcmFwcGVkKGpzVmFsdWUpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoKnN0YXRlKTsK
KyAgICAgICAgICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpzdGF0ZSwgc2NvcGUpOwog
ICAgIH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZl
Y3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2Vx
dWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVj
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgot
ICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDUsNyArNDYsOSBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICBKU0M6OnRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAg
SlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKICAgICAgICAgcmV0dXJuIEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNOdWxsKCkpOwogICAgIH0KIApAQCAtMjI2LDggKzIy
OSwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpFCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQnVpbHRp
bkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjYWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAo
IW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0VW5hdmFpbGFibGVFcnJvcihzdGF0ZSwgaW5mbygpLT5jbGFzc05hbWUpOworICAgICAg
ICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJs
ZUVycm9yKHN0YXRlLCBzY29wZSwgaW5mbygpLT5jbGFzc05hbWUpOwogICAgIHJldHVybiBjYWxs
Q29uc3RydWN0b3Ioc3RhdGUsICpvYmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDkg
KzczLDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBFbmFibGVJZkZsb2EKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBpbmxpbmUgVCogY29udmVydFdyYXBwZXJU
eXBlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJc051bGxhYmxl
IGlzTnVsbGFibGUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBUKiBvYmplY3QgPSBKU1Q6OnRv
V3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKCFvYmplY3QgJiYgKGlzTnVsbGFibGUgPT0gSXNOdWxs
YWJsZTo6Tm8gfHwgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpKQotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsK
ICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0yNzUsOSArMjc3LDExIEBAIHRlbXBsYXRlPD4g
c3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19w
b2ludDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewogICAgIHN0YXRp
YyBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNo
b3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS50b051bWJlcigmc3RhdGUpOwogICAgICAg
ICBpZiAoYWxsb3cgPT0gU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vICYmIFVOTElLRUxZKCFzdGQ6
OmlzZmluaXRlKG51bWJlcikpKQotICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Io
c3RhdGUpOworICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KG51bWJlcik7CiAgICAgfQogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
Q2Fub24sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzMCw5ICsxMzEsMTIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZv
ckVhY2goSlNDOgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBpdGVyYXRvckNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQg
a2luZCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3RhdGUudGhp
c1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAqd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVy
Pjo6Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNET01JdGVyYXRv
cjxKU1dyYXBwZXI+PihnbG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIs
IGtpbmQpKTsKIH0KQEAgLTE4MCw5ICsxODQsMTIgQEAgYXBwZW5kRm9yRWFjaEFyZ3VtZW50cyhK
U0M6OkV4ZWNTdGF0ZSYgcwogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBj
aGFyKiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gd3JhcHBl
ciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyYXBwZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCF3cmFwcGVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcihzdGF0ZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwgcHJvcGVydHlOYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEpTV3JhcHBl
cjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUg
Y2FsbGJhY2sgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUuYXJndW1lbnQoMSk7CkBAIC0xOTAsNyArMTk3LDcgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOgogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNh
bGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gd3JhcHBl
ci0+d3JhcHBlZCgpLmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgd2hpbGUgKGF1dG8gdmFsdWUgPSBp
dGVyYXRvci5uZXh0KCkpIHsKQEAgLTIyNiw5ICsyMzMsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTRE9N
SXRlcmF0b3I8SlNXcmFwcGVyPjo6bgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNX
cmFwcGVyPjo6bmV4dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgSlNDOjpWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8
SlNXcmFwcGVyPio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAg
ICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3Qi
KSkpOworICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1J
dGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0
ZXJhdG9yLT5uZXh0KCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dl
YktpdCgKIAogc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmlj
dGVkQWNjZXNzKEpTRE9NV2luZG93KiB0aGlzT2JqZWN0LCBGcmFtZSogZnJhbWUsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIFdlIGRvbid0IHdh
bnQgYW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBhIGZy
YW1lbGVzcyB3aW5kb3cKICAgICAvLyAoaS5lLiBvbmUgd2hvc2UgcGFnZSBnb3QgY2xvc2VkLCBv
ciB3aG9zZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGhhbmRsaW5n
IGZvciBmcmFtZWxlc3Mgd2luZG93cyBkdXBsaWNhdGVzIHNpbWlsYXIgYmVoYXZpb3VyIGZvciBj
cm9zcy1vcmlnaW4KQEAgLTEzNSw3ICsxMzgsNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd0dl
dE93blByb3BlcnR5U2xvCiAgICAgICAgIC8vIEZvciBhbnkgb3RoZXIgZW50cmllcyBpbiB0aGUg
c3RhdGljIHByb3BlcnR5IHRhYmxlLCBkZW55IGFjY2Vzcy4gKEVhcmx5IHJldHVybiBhbHNvIHBy
ZXZlbnRzCiAgICAgICAgIC8vIG5hbWVkIGdldHRlciBmcm9tIHJldHVybmluZyBmcmFtZXMgd2l0
aCBtYXRjaGluZyBuYW1lcyAtIHRoaXMgc2VlbXMgYSBsaXR0bGUgcXVlc3Rpb25hYmxlLCBzZWUK
ICAgICAgICAgLy8gRklYTUUgY29tbWVudCBvbiBwcm90b3R5cGUgc2VhcmNoIGJlbG93LikKLSAg
ICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0
aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBz
bG90LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNDks
NyArMTUyLDcgQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMs
IGVycm9yTWVzc2FnZSk7CisgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJy
b3JNZXNzYWdlKTsKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMjMwLDYgKzIzMyw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dEJ5SW4KIAogYm9vbCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCku
ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQzLDcgKzI0OSw3IEBAIGJvb2wg
SlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKICAgICAgICAgICAgICAgICByZXR1
cm4gcHV0UmVzdWx0OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhy
b3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM0LDggKzQ0MCwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBE
aWFsb2dIYW5kbGVyOjpyZXR1cm5WYWx1CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2Rh
bERpYWxvZyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgdXJsU3Ry
aW5nID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRl
LmFyZ3VtZW50KDApKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00NTUsOCAr
NDY0LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGUKIAogc3Rh
dGljIEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0czsK
ICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKQEAgLTUwMiw4ICs1MTQsMTEgQEAg
SlNWYWx1ZSBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YQogCiBKU1ZhbHVlIEpTRE9N
V2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBlZCgpLmRv
Y3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkg
OiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCks
IGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CkBAIC01MjQsOCArNTM5LDExIEBAIEpTVmFsdWUgSlNE
T01XaW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXQKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0
SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/
IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVk
QWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNl
Y3VyaXR5UG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1
ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
YXRhQ3VlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksMTAgKzQ5LDEz
IEBAIHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXQKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
ZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUo
ZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcigmZXhlYykpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLmhhZEV4Y2VwdGlvbigpKSkKQEAgLTY0LDEzICs2NywxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiRGF0YUN1ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiRGF0YUN1ZSIpOwogCiAgICAgU3RyaW5nIHR5cGU7CiAjaWYgRU5B
QkxFKERBVEFDVUVfVkFMVUUpCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpID4gMykgewog
ICAgICAgICBpZiAoIWV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykuaXNTdHJpbmcoKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDMsICJ0eXBlIiwgIkRh
dGFDdWUiLCBudWxscHRyLCAiRE9NU3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMywgInR5cGUiLCAiRGF0YUN1ZSIsIG51bGxw
dHIsICJET01TdHJpbmciKTsKICAgICAgICAgdHlwZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQo
MykuZ2V0U3RyaW5nKCZleGVjKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTc5LDkgKzE3OSwxMiBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
CiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSwgUmVmUHRyPERPTVdpbmRvdz4mIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBhdXRvKiB3aW5kb3cgPSBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKCpzdGF0ZSwgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghd2luZG93KSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiRGljdGlvbmFyeSBtZW1iZXIg
aXMgbm90IG9mIHR5cGUgV2luZG93Iik7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiRGljdGlvbmFyeSBtZW1iZXIgaXMgbm90IG9mIHR5cGUgV2luZG93Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgcmVzdWx0ID0gd2luZG93OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzMCwxMiArMTMwLDE1IEBAIEpTVmFs
dWUgSlNEb2N1bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3QKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQogSlNWYWx1ZSBKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExpc3QoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gdG91Y2hMaXN0ID0gVG91Y2hMaXN0OjpjcmVh
dGUoKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuYXJndW1lbnRDb3VudCgp
OyArK2kpIHsKICAgICAgICAgYXV0byogaXRlbSA9IEpTVG91Y2g6OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgaSwgInRv
dWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRvdWNoIikpOworICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgaSwgInRvdWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRv
dWNoIikpOwogCiAgICAgICAgIHRvdWNoTGlzdC0+YXBwZW5kKCppdGVtKTsKICAgICB9CkBAIC0x
NDUsOCArMTQ4LDExIEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWMK
IAogSlNWYWx1ZSBKU0RvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVu
dENvdW50KCkgPCA0KSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIGF1dG8gY29udGV4dElkID0gc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDMsMTcgKzQzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0ZpbGUoRXhlY1N0YXRlJiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25z
dHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7
CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3ItPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
ZXhlYywgIkZpbGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkZpbGUiKTsKICAgICBB
U1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAogICAgIEpTVmFsdWUgYXJnID0gZXhlYy5h
cmd1bWVudCgwKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDAsICJmaWxlQml0cyIsICJGaWxlIiwg
bnVsbHB0ciwgInNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAwLCAiZmlsZUJpdHMiLCAiRmlsZSIsIG51bGxwdHIsICJzZXF1ZW5j
ZSIpOwogCiAgICAgdW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKICAgICBKU09iamVjdCog
YmxvYlBhcnRzID0gdG9KU1NlcXVlbmNlKGV4ZWMsIGFyZywgYmxvYlBhcnRzTGVuZ3RoKTsKQEAg
LTYzLDcgKzY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwog
CiAgICAgYXJnID0gZXhlYy5hcmd1bWVudCgxKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDEsICJmaWxlbmFt
ZSIsICJGaWxlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMSwgImZpbGVuYW1lIiwgIkZpbGUiLCBudWxs
cHRyLCAiRE9NU3RyaW5nIik7CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmcudG9XVEZTdHJp
bmcoJmV4ZWMpLnJlcGxhY2UoJy8nLCAnOicpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigp
KQpAQCAtNzYsNyArNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTCiAgICAgaWYgKCFhcmcuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBKU09iamVj
dCogZmlsZVByb3BlcnR5QmFnT2JqZWN0ID0gYXJnLmdldE9iamVjdCgpOwogICAgICAgICBpZiAo
IWZpbGVQcm9wZXJ0eUJhZ09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKGV4ZWMsIDIsICJvcHRpb25zIiwgIkZpbGUiLCBudWxscHRyLCAiRmlsZVByb3Bl
cnR5QmFnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVj
LCBzY29wZSwgMiwgIm9wdGlvbnMiLCAiRmlsZSIsIG51bGxwdHIsICJGaWxlUHJvcGVydHlCYWci
KTsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBp
bml0aWFsaXplciBvYmplY3QuCiAgICAgICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KCZleGVj
LCBmaWxlUHJvcGVydHlCYWdPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQsOCArMTA0LDExIEBAIGJvb2wgSlNIVE1M
QWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGUKIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0
aW9uOjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBhcmd1
bWVudCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50Lmlt
cGwoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9y
Y2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtNzEsOCArNzEsMTEgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0
cmlidXRlcyhFeGVjUwogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNh
bnZhcyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CkBAIC05NCw4ICs5NywxMSBA
QCBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoCiAKIEpTVmFsdWUgSlNI
VE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQo
KTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDYgKzE1Miw5IEBAIHN0YXRpYyBEb2N1
bWVudCogZmluZENhbGxpbmdEb2N1bWVudChFeGUKIAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6
b3BlbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gRm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBvdGhlciBicm93c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0
aGFuIDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENv
dW50KCkgPiAyKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUo
KSkgewpAQCAtMTYxLDcgKzE2NCw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhl
Y1N0YXRlJiAKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRh
KTsKICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTQzo6Y2FsbCgmc3RhdGUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHdyYXBwZXIsIEFyZ0xpc3QoJnN0YXRlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1l
bnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMzAgKzQz
LDMyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVj
U3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBq
c0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
anNDb25zdHJ1Y3Rvcik7CiAKICAgICBhdXRvKiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihl
eGVjLCAiSFRNTEVsZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkhUTUxFbGVt
ZW50Iik7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBhdXRvJiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CiAKICAgICBhdXRvKiB3aW5k
b3cgPSBkb2N1bWVudC5kb21XaW5kb3coKTsKICAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBu
b3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQg
aXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CiAKICAgICBhdXRv
KiByZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFy
ZWdpc3RyeSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0
ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rv
ciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IiKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgSlNWYWx1ZSBuZXdUYXJn
ZXRWYWx1ZSA9IGV4ZWMudGhpc1ZhbHVlKCk7CiAgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IG5l
d1RhcmdldFZhbHVlLmdldE9iamVjdCgpOwogICAgIGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSBy
ZWdpc3RyeS0+ZmluZEludGVyZmFjZShuZXdUYXJnZXQpOwogICAgIGlmICghZWxlbWVudEludGVy
ZmFjZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJh
bCgibmV3LnRhcmdldCBkb2VzIG5vdCBkZWZpbmUgYSBjdXN0b20gZWxlbWVudCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5l
dy50YXJnZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKSk7CiAKICAgICBpZiAo
IWVsZW1lbnRJbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7CiAgICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwpAQCAtODQsNyAr
ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBF
bGVtZW50KiBlbGVtZW50VG9VcGdyYWRlID0gZWxlbWVudEludGVyZmFjZS0+bGFzdEVsZW1lbnRJ
bkNvbnN0cnVjdGlvblN0YWNrKCk7CiAgICAgaWYgKCFlbGVtZW50VG9VcGdyYWRlKSB7Ci0gICAg
ICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgaW5z
dGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCBpbnNpZGUgaXRzIG93biBjb25zdHJjdXRvciBkdXJp
bmcgdXBncmFkZXMiKSk7CisgICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5z
aWRlIGl0cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTU2LDggKzU2LDExIEBAIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6bmFtZUcKIAogSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpu
YW1lZEl0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3Rh
dGUpKSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zNSw1NCArMzUsNzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAg
IGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKGlucHV0LnNlbGVjdGlvblN0YXJ0KCkpOwogfQog
CiB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1l
bnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigp
KQotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLnRv
SW50MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rp
b25FbmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNl
bGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpz
TnVtYmVyKGlucHV0LnNlbGVjdGlvbkVuZCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1l
bnQ6OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAg
ICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAg
aW5wdXQuc2V0U2VsZWN0aW9uRW5kKHZhbHVlLnRvSW50MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFs
dWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
d3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0
ZSwgaW5wdXQuc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEpTSFRNTElucHV0RWxl
bWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBw
ZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTEsMTIgKzEwOSwxNSBAQCB2b2lkIEpT
SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0
LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAg
IGludCBzdGFydCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsK
ICAgICBpbnQgZW5kID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hp
c3RvcnlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw5ICs1NSwxMiBAQCBKU1ZhbHVlIEpT
SGlzdG9yeTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNo
U3RhdGUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gYXJnQ291
bnQgPSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ0NvdW50IDwg
MikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpjcmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgMCwgMCk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtODYsOSArODksMTIgQEAgSlNWYWx1ZSBKU0hp
c3Rvcnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFj
ZVN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGFyZ0Nv
dW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3VudCA8
IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKICAgICBhdXRvIGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksIDAsIDApOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWlj
aGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC00Nyw4ICs0OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUg
SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAg
ICBTdHJpbmcgbmFtZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVl
KCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTYsNyArNjAsNyBA
QCBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlCiAKICAgICBKU1ZhbHVl
IG9wdGlvbnNWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwogICAgIGlmICghb3B0aW9uc1ZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIW9wdGlvbnNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiTm90IGFuIG9iamVjdC4iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJOb3QgYW4gb2JqZWN0LiIp
OwogCiAgICAgSURCS2V5UGF0aCBrZXlQYXRoOwogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDgsIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtNDYsMTAgKzQ2LDEzIEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U0ltYWdlQ29uc3RydWN0b3I6OnAKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0ltYWdl
Q29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ltYWdl
Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGpzQ29uc3RydWN0b3ItPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJ
bWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNl
RXJyb3Ioc3RhdGUsICJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVu
YXZhaWxhYmxlIikpOwogCiAgICAgLy8gQ2FsbGluZyB0b0pTIG9uIHRoZSBkb2N1bWVudCBjYXVz
ZXMgdGhlIEpTIGRvY3VtZW50IHdyYXBwZXIgdG8gYmUKICAgICAvLyBhZGRlZCB0byB0aGUgd2lu
ZG93IG9iamVjdC4gVGhpcyBpcyBkb25lIHRvIGVuc3VyZSB0aGF0IEpTRG9jdW1lbnQ6OnZpc2l0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNM
b2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVn
YXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgp
OwpAQCAtNTUsNyArNTgsNyBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERl
bGVnCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHRocm93U2VjdXJpdHlFcnJv
cigqZXhlYywgbWVzc2FnZSk7CisgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwg
bWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNl
c0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4LDggKzM1
OCwxMSBAQCBzdGF0aWMgdm9pZCBwYXJzZUNvbnN0cmFpbnRzKGNvbnN0IERpY3RpCiAKIEpTVmFs
dWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1
dG8gY29uc3RyYWludHNEaWN0aW9uYXJ5ID0gRGljdGlvbmFyeSgmc3RhdGUsIHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDEwICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEpTQzo6SlNWYWx1ZSBKU01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMTAyLDEwICsxMDUsMTMgQEAgc3RhdGljIEpTVmFs
dWUgY2FwYWJpbGl0eVZhbHVlKGNvbnN0IENhcAogCiBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVh
bVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CiAgICAgSlNNZWRp
YVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU01lZGlhU3RyZWFtVHJh
Y2sqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFT
dHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiTWVkaWFTdHJlYW1UcmFjayIs
ICJnZXRTZXR0aW5ncyIpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdCgmc3RhdGUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTksNiArNTksOSBAQCBKU0M6
OkpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoCiAKIHZvaWQgZmlsbE1lc3NhZ2VQ
b3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3Nh
Z2VQb3J0QXJyYXkmIHBvcnRBcnJheSwgQXJyYXlCdWZmZXJBcnJheSYgYXJyYXlCdWZmZXJzKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgLy8gQ29udmVydCBmcm9tIHRoZSBwYXNzZWQtaW4gSlMgYXJy
YXktbGlrZSBvYmplY3QgdG8gYSBNZXNzYWdlUG9ydEFycmF5LgogICAgIC8vIEFsc28gdmFsaWRh
dGVzIHRoZSBlbGVtZW50cyBwZXIgc2VjdGlvbnMgNC4xLjEzIGFuZCA0LjEuMTUgb2YgdGhlIFdl
YklETCBzcGVjIGFuZCBzZWN0aW9uIDguMy4zIG9mIHRoZSBIVE1MNSBzcGVjLgogICAgIGlmICh2
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CkBAIC05NSw3ICs5OCw3IEBAIHZvaWQgZmlsbE1l
c3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUKICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJy
YXlCdWZmZXI+IGFycmF5QnVmZmVyID0gdG9BcnJheUJ1ZmZlcih2YWx1ZSkpCiAgICAgICAgICAg
ICAgICAgYXJyYXlCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKGFycmF5QnVmZmVyKSk7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTUwLDggKzUxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGhhbmRsZVBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgVCogaW1wbCkKICAgICB7CisgICAgICAgIEpT
Qzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJy
YXk7CiAgICAgICAgIEFycmF5QnVmZmVyQXJyYXkgYXJyYXlCdWZmZXJBcnJheTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw5IEBAIEpTVmFsdWUgSlNNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpkZWMKIAogdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERl
Y2lzaW9uUG9pbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyBjb252ZXJ0PHVpbnQ4X3Q+KHN0YXRlLCB2
YWx1ZSwgRW5mb3JjZVJhbmdlKSB9OwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzQsNyArNzcsNyBAQCB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RGVjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvblBv
aW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgU3RyaW5nOjpmb3JtYXQoIiV1IGlzIG5vdCBhIHZhbGlkIGRlY2lzaW9uUG9pbnQgdmFs
dWUuIiwgbmF0aXZlVmFsdWUpKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRvSlNWYWx1
ZShEZWNpc2lvbiBkZWNpc2lvbikKQEAgLTkxLDYgKzk0LDkgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIHRvSlNWYWx1ZShEZWNpc2lvbgogCiBzdGF0aWMgaW5saW5lIERlY2lzaW9uIHRvRGVjaXNp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyBjb252ZXJ0PHVpbnQ4X3Q+KHN0YXRlLCB2YWx1ZSwgRW5m
b3JjZVJhbmdlKSB9OwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIERlY2lzaW9uOjpBbGxvdzsKQEAgLTEwMiw3ICsxMDgsNyBAQCBzdGF0aWMgaW5saW5lIERl
Y2lzaW9uIHRvRGVjaXNpb24oRXhlY1N0CiAgICAgICAgIHJldHVybiBkZWNpc2lvbjsKICAgICB9
CiAKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3Qg
YSB2YWxpZCBkZWNpc2lvbiB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOworICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNp
c2lvbiB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwogICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TW9kdWxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAzLDYgKzEwMyw5IEBAIEpTQzo6SlNJ
bnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVyOjoKIAogSlNDOjpKU1ZhbHVlIEpTTW9kdWxl
TG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpT
Qzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gRklYTUU6IEN1cnJlbnRseSwgd2Ugb25seSBzdXBwb3J0IEpTTW9kdWxlUmVjb3JkLgogICAg
IC8vIE9uY2UgdGhlIHJlZmxlY3RpdmUgcGFydCBvZiB0aGUgbW9kdWxlIGxvYWRlciBpcyBzdXBw
b3J0ZWQsIHdlIHdpbGwgaGFuZGxlIGFyYml0cmFyeSB2YWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly93
aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVnaXN0cnktcHJvdG90eXBlLXByb3ZpZGUKQEAgLTEx
NiwxMCArMTE5LDEwIEBAIEpTQzo6SlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlMK
ICAgICBlbHNlIGlmIChtb2R1bGVLZXlWYWx1ZS5pc1N0cmluZygpKQogICAgICAgICBzb3VyY2VV
cmwgPSBVUkwoVVJMKCksIGFzU3RyaW5nKG1vZHVsZUtleVZhbHVlKS0+dmFsdWUoZXhlYykpOwog
ICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJNb2R1bGUga2V5IGlzIG5vdCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTW9k
dWxlIGtleSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7CiAKICAgICBpZiAoIXNvdXJjZVVy
bC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBpcyBhbiBpbnZhbGlkIFVSTC4iKSk7CisgICAgICAgIHJl
dHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk1vZHVs
ZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwuIikpOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBl
dmFsdWF0aW5nIG1vZHVsZSBjb2RlLgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDQsMTkgKzQ1LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2Jz
ZXJ2ZXIoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZXhlYy5hcmd1
bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMp
KTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLmdl
dE9iamVjdCgpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmICghb2JqZWN0IHx8IG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMs
IDAsICJjYWxsYmFjayIsICJNdXRhdGlvbk9ic2VydmVyIiwgbnVsbHB0ciwgIk11dGF0aW9uQ2Fs
bGJhY2siKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJNdXRhdGlvbk9ic2VydmVyIiwgbnVsbHB0ciwgIk11dGF0aW9u
Q2FsbGJhY2siKTsKIAogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0g
anNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAgICAgYXV0byBj
YWxsYmFjayA9IEpTTXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganNDb25zdHJ1Y3Rv
ci0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBqc09ic2VydmVyID0gYXNPYmplY3Qo
dG9KU05ld2x5Q3JlYXRlZCgmZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIE11
dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKICAgICBQcml2YXRl
TmFtZSBwcm9wZXJ0eU5hbWU7Ci0gICAganNPYnNlcnZlci0+cHV0RGlyZWN0KGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLT52bSgpLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7CisgICAganNP
YnNlcnZlci0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG9iamVjdCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc09ic2VydmVyKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkt
MjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMiwxMyArMTEyLDE2IEBAIGJvb2wgSlNOb2RlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVIKIAogSlNWYWx1ZSBKU05vZGU6Omluc2VydEJlZm9yZShF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBKU1ZhbHVlIG5ld0NoaWxkVmFsdWUg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvKiBuZXdDaGlsZCA9IEpTTm9k
ZTo6dG9XcmFwcGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2hpbGQp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Io
c3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAiaW5zZXJ0QmVmb3JlIiwgIk5vZGUiKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAiaW5zZXJ0QmVmb3JlIiwgIk5vZGUiKSk7CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZWQoKS5pbnNl
cnRCZWZvcmUoKm5ld0NoaWxkLCBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgxKSksIGVjKSkpIHsKQEAgLTEzMiwxNiArMTM1LDE5IEBAIEpTVmFsdWUgSlNOb2RlOjpp
bnNlcnRCZWZvcmUoRXhlY1N0YXRlJiAKIAogSlNWYWx1ZSBKU05vZGU6OnJlcGxhY2VDaGlsZChF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvKiBuZXdDaGlsZCA9IEpTTm9k
ZTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBKU1ZhbHVlIG9s
ZENoaWxkVmFsdWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBhdXRvKiBvbGRD
aGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKG9sZENoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghbmV3Q2hpbGQgfHwgIW9sZENoaWxkKSkgewogICAgICAgICBpZiAoIW5ld0NoaWxkKQotICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0
YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOwotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIDEs
ICJjaGlsZCIsICJOb2RlIiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOworICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7CiAgICAgfQog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0xNTYsMTAgKzE2MiwxMyBAQCBKU1ZhbHVl
IEpTTm9kZTo6cmVwbGFjZUNoaWxkKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUgSlNOb2RlOjpyZW1v
dmVDaGlsZChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBj
aGlsZFZhbHVlID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgYXV0byogY2hpbGQgPSBKU05vZGU6
OnRvV3JhcHBlZChjaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNoaWxkKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAw
LCAiY2hpbGQiLCAiTm9kZSIsICJyZW1vdmVDaGlsZCIsICJOb2RlIikpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAw
LCAiY2hpbGQiLCAiTm9kZSIsICJyZW1vdmVDaGlsZCIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFwcGVkKCkucmVtb3ZlQ2hpbGQo
KmNoaWxkLCBlYykpKSB7CkBAIC0xNzMsMTAgKzE4MiwxMyBAQCBKU1ZhbHVlIEpTTm9kZTo6cmVt
b3ZlQ2hpbGQoRXhlY1N0YXRlJiBzCiAKIEpTVmFsdWUgSlNOb2RlOjphcHBlbmRDaGlsZChFeGVj
U3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBuZXdDaGlsZFZhbHVl
ID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgYXV0byBuZXdDaGlsZCA9IEpTTm9kZTo6dG9XcmFw
cGVkKG5ld0NoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmV3Q2hpbGQpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIDAs
ICJub2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
Im5vZGUiLCAiTm9kZSIsICJhcHBlbmRDaGlsZCIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFwcGVkKCkuYXBwZW5kQ2hpbGQoKm5l
d0NoaWxkLCBlYykpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVG
aWx0ZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIs
NyArNDIsOSBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiB7CiAg
ICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKKyAgICBWTSYgdm0gPSBt
X2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBFeGVjU3Rh
dGUqIHN0YXRlID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOwogICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBAIC01NCw3ICs1Niw3IEBAIHVpbnQxNl90IEpTTm9k
ZUZpbHRlcjo6YWNjZXB0Tm9kZShOb2RlKiAKICAgICBKU1ZhbHVlIHZhbHVlID0gbV9kYXRhLT5p
bnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlv
bk9yT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiYWNjZXB0Tm9kZSIpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAg
IC8vIFJldGhyb3cgZXhjZXB0aW9uLgotICAgICAgICBzdGF0ZS0+dm0oKS50aHJvd0V4Y2VwdGlv
bihzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihzdGF0
ZSwgc2NvcGUsIHJldHVybmVkRXhjZXB0aW9uKTsKIAogICAgICAgICByZXR1cm4gTm9kZUZpbHRl
cjo6RklMVEVSX1JFSkVDVDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwOCwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC05NiwxMCArOTYs
MTIgQEAgSlNPYmplY3QqIHBsdWdpblNjcmlwdE9iamVjdChFeGVjU3RhdGUqIAogICAgIAogRW5j
b2RlZEpTVmFsdWUgcGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgSlNIVE1MRWxlbWVudCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNIVE1MRWxlbWVudCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNPYmplY3Qq
IHNjcmlwdE9iamVjdCA9IHBsdWdpblNjcmlwdE9iamVjdChleGVjLCB0aGlzT2JqZWN0KTsKICAg
ICBpZiAoIXNjcmlwdE9iamVjdCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVT
dHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsMTQgKzM3LDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIC8vIFB1YmxpYyBKUyBSZWFkYWJsZVN0cmVhbVJlZGVyIGFuZCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIGNhbGxiYWNrcy4KIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVj
dG9yIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hvdWxkIG5vdCBiZSBjYWxsZWQg
ZGlyZWN0bHkiKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgCiAgICAgSlNSZWFkYWJsZVN0cmVhbSogc3RyZWFtID0ganNEeW5hbWljQ2FzdDxK
U1JlYWRhYmxlU3RyZWFtKj4oZXhlYy5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFzdHJlYW0pCi0g
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDAsICJzdHJlYW0iLCAi
UmVhZGFibGVTdHJlYW1SZWFkZXIiLCBudWxscHRyLCAiUmVhZGFibGVTdHJlYW0iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDAsICJzdHJlYW0i
LCAiUmVhZGFibGVTdHJlYW1SZWFkZXIiLCBudWxscHRyLCAiUmVhZGFibGVTdHJlYW0iKTsKIAog
ICAgIEpTVmFsdWUganNGdW5jdGlvbiA9IHN0cmVhbS0+Z2V0KCZleGVjLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZleGVjLCAiZ2V0UmVhZGVyIikpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC00NywxMyArNDgsMTYgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6dmFsdWUoRXhlY1N0YXRl
JiBzdAogCiB2b2lkIEpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5
KCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghdmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSAmJiAhdmFsdWUuaXNOdW1iZXIoKSAmJiAhdmFsdWUuaXNCb29sZWFu
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03
Miw2ICs3Niw5IEBAIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3QKIAog
SlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7
CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUik7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtODAsNyArODcsNyBAQCBK
U1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVCiAgICAgU1ZHTGVuZ3RoJiBw
b2RJbXAgPSB3cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTsKIAogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMMlJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDggKzk3LDExIEBAIEpTVmFs
dWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTeW4KIAogSlNWYWx1ZSBKU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAg
cmV0dXJuIGV4ZWMudm0oKS50aHJvd0V4Y2VwdGlvbigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZleGVj
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAgIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgdW5zaWduZWQg
cG5hbWUgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJmV4ZWMpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE3MCw4ICsxNzAsMTEgQEAgZW51bSBPYmplY3RUeXBlIHsKIAog
c3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSogb2JqLCBFeGVjU3RhdGUmIHN0YXRlLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAg
ICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gb2JqLT53cmFwcGVkKCk7CkBAIC0yNzAsMTMgKzI3MywxNiBAQCB2b2lk
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlzaXRBCiAKIEpTVmFsdWUgSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dl
YkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgVmVjdG9yPFJlZlB0cjxX
ZWJHTFNoYWRlcj4+IHNoYWRlcnM7CiAgICAgYm9vbCBzdWNjZWVkID0gY29udGV4dC5nZXRBdHRh
Y2hlZFNoYWRlcnMocHJvZ3JhbSwgc2hhZGVycywgZWMpOwogICAgIGlmIChlYykgewpAQCAtMjkz
LDggKzI5OSwxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAK
IEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFeHRlbnNpb24oRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcgbmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CkBAIC0zMTEsOCArMzIw
LDExIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsK
QEAgLTMzNSw4ICszNDcsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1l
bnRDb3VudCgpICE9IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwpAQCAtMzUz
LDE0ICszNjgsMTcgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAog
CiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRl
cihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3Vt
ZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlv
bigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBX
ZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50
b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTM3OSwxMyArMzk3LDE2IEBAIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y29udGV4dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmluaGVy
aXRzKEpTV2ViR0xTaGFkZXI6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7
CiAgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IEpTV2ViR0xTaGFkZXI6OnRvV3JhcHBlZChzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgdW5zaWduZWQgcG5hbWUgPSBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQpAQCAtNDE3LDE3ICs0MzgsMjAgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0
VW5pZm9ybShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsK
ICAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBKU1dlYkdMUHJvZ3JhbTo6dG9XcmFwcGVkKHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXByb2dyYW0gJiYgIXN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBzY29wZSk7CiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gSlNXZWJH
TFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsK
ICAgICBpZiAoIWxvY2F0aW9uICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMR2V0
SW5mbyBpbmZvID0gY29udGV4dC5nZXRVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCBlYyk7CiAg
ICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKQEAgLTQ4
OCw4ICs1MTIsMTEgQEAgc3RhdGljIGJvb2wgZnVuY3Rpb25Gb3JVbmlmb3JtKERhdGFGdW5jdAog
CiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1bmN0aW9uVG9DYWxsIGYs
IEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikK
LSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogICAgIAogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IDA7CiAgICAg
bG9uZyBpbmRleCA9IC0xOwpAQCAtNDk3LDcgKzUyNCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUg
ZGF0YUZ1bmN0aW9uZihEYXRhRnUKICAgICBpZiAoZnVuY3Rpb25Gb3JVbmlmb3JtKGYpKSB7CiAg
ICAgICAgIGxvY2F0aW9uID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIH0gZWxzZQogICAgICAgICBpbmRleCA9IHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAgICAKQEAgLTU0Myw3ICs1
NzAsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgCiAg
ICAgVmVjdG9yPGZsb2F0LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKICAgICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgpAQCAt
NTc4LDEyICs2MDUsMTUgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFG
dQogCiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1bmN0aW9uVG9DYWxs
IGYsIEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0g
MikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogICAgIAogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IEpTV2Vi
R0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRl
ZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAKICAgICBS
ZWZQdHI8SW50MzJBcnJheT4gd2ViR0xBcnJheSA9IHRvSW50MzJBcnJheShzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgxKSk7CiAgICAgCkBAIC02MTMsNyArNjQzLDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdQogICAgIAogICAgIFZlY3RvcjxpbnQsIDY0PiBhcnJh
eTsKICAgICBpZiAoIXRvVmVjdG9yKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSwg
YXJyYXkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIAogICAgIHN3aXRjaCAo
ZikgewogICAgIGNhc2UgZl91bmlmb3JtMXY6CkBAIC02MzgsMTIgKzY2OCwxNSBAQCBzdGF0aWMg
SlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUg
ZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFGdW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDMpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAK
ICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0
aW9uOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9j
YXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgYm9vbCB0cmFuc3Bvc2Ug
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKS50b0Jvb2xlYW4oJnN0YXRlKTsKICAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC02NzEsNyArNzA0LDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgoRAogICAgIAogICAgIFZlY3RvcjxmbG9hdCwgNjQ+IGFy
cmF5OwogICAgIGlmICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIp
LCBhcnJheSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgc3dpdGNo
IChmKSB7CiAgICAgY2FzZSBmX3VuaWZvcm1NYXRyaXgyZnY6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDkgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZUFsZwogCiBzdGF0aWMgYm9vbCBj
cnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
LCBDcnlwdG9LZXlGb3JtYXQmIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBr
ZXlGb3JtYXRTdHJpbmcgPSB2YWx1ZS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
ODksNyArOTIsNyBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShFCiAg
ICAgZWxzZSBpZiAoa2V5Rm9ybWF0U3RyaW5nID09ICJqd2siKQogICAgICAgICByZXN1bHQgPSBD
cnlwdG9LZXlGb3JtYXQ6OkpXSzsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5IGZvcm1hdCIpKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGtleSBmb3Jt
YXQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBA
IC05Nyw4ICsxMDAsMTEgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUo
RQogCiBzdGF0aWMgYm9vbCBjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZShFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9LZXlVc2FnZSYgcmVzdWx0KQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsOCArMTM4LDExIEBAIHN0YXRpYyBib29s
IGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0g
Y3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMTQ5LDcgKzE1OCw3IEBAIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+
IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkp
OwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYg
KCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZUVuY3J5cHQpKSB7CiAgICAgICAgIHdyYXBwZWQo
KS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdl
bmNyeXB0JyIpKTsKQEAgLTE4NSw4ICsxOTQsMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZW5jcnlwdChFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1l
bnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0
aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlm
ICghYWxnb3JpdGhtKSB7CkBAIC0yMDIsNyArMjE0LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6ZGVjcnlwdChFeAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlw
dG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFr
ZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dz
KENyeXB0b0tleVVzYWdlRGVjcnlwdCkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ2RlY3J5cHQnIikpOwpA
QCAtMjM3LDggKzI0OSwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0
KEV4CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQot
ICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0
YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsK
QEAgLTI1NCw3ICsyNjksNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4
ZWNTCiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVk
KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VT
aWduKSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5
IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnc2lnbiciKSk7CkBAIC0yODksOCArMzA0LDExIEBAIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1MKIAogSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdv
cml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0zMDYsNyArMzI0LDcgQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZQogCiAgICAgUmVmUHRyPENy
eXB0b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAK
ICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlVmVyaWZ5KSkgewogICAgICAgICB3
cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5j
bHVkZSAndmVyaWZ5JyIpKTsKQEAgLTM0Nyw4ICszNjUsMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1
YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpk
aWdlc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFs
Z29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTM4OSw4ICs0MTAsMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
OjpnZW5lcmF0ZUtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0g
Y3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtNDQ1LDYgKzQ2OSw5IEBAIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2UKIAogc3RhdGljIHZvaWQgaW1wb3J0S2V5
KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJh
dGlvbkRhdGEgZGF0YSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gYWxnb3JpdGhtLCBSZWZQdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2Uga2V5VXNhZ2VzLCBDcnlwdG9BbGdvcml0aG06OktleUNhbGxiYWNrIGNh
bGxiYWNrLCBDcnlwdG9BbGdvcml0aG06OlZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5U2VyaWFsaXphdGlv
bj4ga2V5U2VyaWFsaXphdGlvbjsKICAgICBzd2l0Y2ggKGtleUZvcm1hdCkgewogICAgIGNhc2Ug
Q3J5cHRvS2V5Rm9ybWF0OjpSYXc6CkBAIC00NTMsNyArNDgwLDcgQEAgc3RhdGljIHZvaWQgaW1w
b3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKV0s6
IHsKICAgICAgICAgU3RyaW5nIGp3a1N0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoZGF0YS5maXJz
dCwgZGF0YS5zZWNvbmQpOwogICAgICAgICBpZiAoandrU3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEpTT04gc2Vy
aWFsaXphdGlvbiBpcyBub3QgdmFsaWQgVVRGLTgiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24g
aXMgbm90IHZhbGlkIFVURi04IikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGtleVNlcmlhbGl6YXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPEpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSz4oJnN0YXRlLCBqd2tTdHJpbmcpOwpAQCAtNDYyLDcgKzQ4OSw3IEBAIHN0
YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBpbXBvcnQiKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5
IGZvcm1hdCBmb3IgaW1wb3J0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzEs
NyArNDk4LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAg
IE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IHJlY29uY2lsZWRSZXN1bHQgPSBrZXlTZXJp
YWxpemF0aW9uLT5yZWNvbmNpbGVBbGdvcml0aG0oYWxnb3JpdGhtLmdldCgpLCBwYXJhbWV0ZXJz
LmdldCgpKTsKICAgICBpZiAoIXJlY29uY2lsZWRSZXN1bHQpIHsKICAgICAgICAgaWYgKCFzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJBbGdvcml0aG0gc3BlY2lmaWVkIGluIGtleSBpcyBub3QgY29tcGF0aWJsZSB3
aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0S2V5IGFzIGFyZ3VtZW50IikpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBbGdvcml0aG0gc3Bl
Y2lmaWVkIGluIGtleSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIG9uZSBwYXNzZWQgdG8gaW1wb3J0
S2V5IGFzIGFyZ3VtZW50IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTQ4MCw3ICs1MDcsNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRL
ZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgYWxnb3JpdGhtID0gcmVjb25jaWxlZFJlc3VsdC0+
YWxnb3JpdGhtOwogICAgIHBhcmFtZXRlcnMgPSByZWNvbmNpbGVkUmVzdWx0LT5wYXJhbWV0ZXJz
OwogICAgIGlmICghYWxnb3JpdGhtKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0
byBhbGdvcml0aG0gc3BlY2lmaWVkIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5laXRoZXIga2V5IG5vciBmdW5jdGlvbiBhcmd1bWVudCBo
YXMgY3J5cHRvIGFsZ29yaXRobSBzcGVjaWZpZWQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMpOwpAQCAtNTA1LDggKzUzMiwxMSBAQCBzdGF0aWMgdm9p
ZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1h
dCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwg
c3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTU2OCw4ICs1OTgsMTEgQEAgSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KAogCiBzdGF0aWMgdm9pZCBleHBv
cnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIENyeXB0b0FsZ29yaXRobTo6VmVjdG9yQ2FsbGJhY2sgY2FsbGJhY2ss
IENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICgha2V5LmV4dHJhY3RhYmxlKCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUiKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiS2V5IGlz
IG5vdCBleHRyYWN0YWJsZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTkzLDE1
ICs2MjYsMTggQEAgc3RhdGljIHZvaWQgZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGV4cG9ydCIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJV
bnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgp
IDwgMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOwogCiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdDsKICAgICBpZiAoIWNy
eXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwga2V5Rm9y
bWF0KSkgewpAQCAtNjExLDcgKzY0Nyw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmV4cG9ydEtleSgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21p
c2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKSk7CiAgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3Qo
KSwgcHJvbWlzZURlZmVycmVkKTsKQEAgLTYzMSw4ICs2NjcsMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
Ojp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3Rh
dGUuYXJndW1lbnRDb3VudCgpIDwgNCkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZv
cm1hdDsKICAgICBpZiAoIWNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgewpAQCAtNjQyLDExICs2ODEsMTEgQEAgSlNWYWx1ZSBK
U1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4g
a2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7
CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBSZWZQ
dHI8Q3J5cHRvS2V5PiB3cmFwcGluZ0tleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMikpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogCiAgICAgaWYgKCF3cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVzYWdl
V3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwo
IktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3dyYXBLZXknIikpOwpAQCAtNzAwLDggKzczOSwx
MSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKIEpTVmFsdWUg
SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnVud3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDUpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9t
SlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTcxNyw3
ICs3NTksNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoCiAKICAg
ICBSZWZQdHI8Q3J5cHRvS2V5PiB1bndyYXBwaW5nS2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBl
ZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSk7CiAgICAgaWYgKCF1bndyYXBwaW5nS2V5KQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCF1bndyYXBwaW5nS2V5LT5h
bGxvd3MoQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd1bndyYXBL
ZXknIikpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3LDEwICs0NywxMyBAQCBKU0M6OkpTVmFs
dWUgSlNXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0SlNXb3JrZXIoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25z
dHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogCiAgICAgaWYgKCFleGVjLmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigm
ZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAg
ICBTdHJpbmcgc2NyaXB0VVJMID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmlu
ZygmZXhlYyk7CiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDExLCAyMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODAsOCArODAsMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjppbXBv
cnRTY3JpcAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFj
dGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmpl
Y3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC05NCw4ICs5NywxMSBAQCBKU1ZhbHVlIEpTV29y
a2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQoCiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29w
ZTo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVh
dGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgd3JhcHBlZCgpLmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9u
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0OCw5IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxGdW5jdGlvbigKIAogSlNDOjpKU1ZhbHVlIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omludm9rZShKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6SlNPYmplY3QmIG9iamVjdCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU0M6
OkpTVmFsdWUgcGFyYW1ldGVyKQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soJnN0YXRl
KTsKKyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9jayh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgYXV0byBmdW5jdGlvbiA9IG9iamVjdC5nZXQoJnN0YXRlLCBKU0M6OklkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCBwcm9wZXJ0eU5hbWUpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCkBAIC01NSw3ICs1OCw3IEBAIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm8KIAogICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7CiAgICAgICAgIGlm
ICghZnVuY3Rpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2FsbCBhIHByb3Bl
cnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2Fs
bCBhIHByb3BlcnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpOwogICAgICAgICByZXR1cm4gSlND
Ojpqc1VuZGVmaW5lZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNyArMzk0LDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9p
ZCB0aHJvd1N0YWNrT3ZlcmZsb3coKQogICAgIHsKLSAgICAgICAgbV9leGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOworICAg
ICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24obV9leGVjLCBzY29wZSwg
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwogICAgIH0KIAogICAgIHZvaWQgZmFp
bCgpCkBAIC0xNTcwLDcgKzE1NzIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB0aHJvd1ZhbGlk
YXRpb25FcnJvcigpCiAgICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOworICAgICAgICBWTSYgdm0g
PSBtX2V4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uIDw9IEN1cnJlbnRWZXJzaW9uOyB9CkBAIC0y
NzU2LDE1ICsyNzYwLDE4IEBAIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3IKIAogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNl
cmlhbGl6YXRpb25GYWlsZWQoRXhlY1N0YXRlKiBleGVjLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBjb2RlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGNvZGUgPT0gU3VjY2Vzc2Z1bGx5Q29t
cGxldGVkKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAg
Y2FzZSBTdGFja092ZXJmbG93RXJyb3I6Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVmFsaWRhdGlvbkVycm9yOgotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERh
dGFDbG9uZUVycm9yOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9DTE9ORV9F
UlIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjYsMTEgKzEy
NiwxMiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgaW5p
dFNjcmlwdElmTmVlZGVkKCk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsRXhlYygpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTQzo6ZXZh
bHVhdGUoZXhlYywgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSwgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXItPmdsb2JhbFRoaXMoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogCi0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBpZiAoKHJldHVybmVkRXhjZXB0aW9uICYmIGlzVGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihyZXR1cm5lZEV4Y2VwdGlvbikpIHx8IGlzVGVybWluYXRpbmdF
eGVjdXRpb24oKSkgewogICAgICAgICBmb3JiaWRFeGVjdXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTQzLDcgKzE0NCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUoY28KICAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9IHNvdXJjZUNvZGUudXJsKCkuc3RyaW5n
KCk7CiAgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGVycm9yOwogICAgICAgICBpZiAo
bV93b3JrZXJHbG9iYWxTY29wZS0+c2FuaXRpemVTY3JpcHRFcnJvcihlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBlcnJvciwgc291cmNlQ29kZS5jYWNo
ZWRTY3JpcHQoKSkpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5pbXBsKCkpKTsKKyAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgp
KSk7CiAgICAgICAgICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IHZtLmV4Y2VwdGlvbigpOwogICAg
ICAgICAgICAgdm0uY2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgfQpAQCAtMTUzLDcgKzE1NCw5
IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KIHZvaWQgV29ya2Vy
U2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24p
CiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBl
ci0+Z2xvYmFsRXhlYygpOwotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhj
ZXB0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5
KQpAQCAtOTA0LDkgKzkwNCwxMSBAQCBzdWIgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0
aW9uQ29uCiAKICAgICAgICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiAkY2xhc3NOYW1lIGNvbnZl
cnQ8JGNsYXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAg
ICAgICRyZXN1bHQgLj0gIntcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpO1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2U8JGNsYXNzTmFtZT4oc3RhdGUsIHZhbHVlKTtcbiI7CiAgICAgICAg
ICRyZXN1bHQgLj0gIiAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHtcbiI7Ci0gICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTtcbiI7CisgICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7
CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuIHsgfTtcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICB9XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgcmV0dXJuIHJlc3Vs
dC52YWx1ZSgpO1xuIjsKQEAgLTEwMDksMTEgKzEwMTEsMTMgQEAgc3ViIEdlbmVyYXRlRGljdGlv
bmFyeUltcGxlbWVudGF0aW9uQ29udAogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4g
T3B0aW9uYWw8JGNsYXNzTmFtZT4gY29udmVydERpY3Rpb25hcnk8JGNsYXNzTmFtZT4oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIntcbiI7
CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBWTSYgdm0gPSBzdGF0ZS52bSgpO1xuIjsKKyAgICAg
ICAgJHJlc3VsdCAuPSAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKVxuIiBpZiAkZGVmYXVsdFZhbHVlczsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAg
ICByZXR1cm4gJGNsYXNzTmFtZSB7ICIgLiAkZGVmYXVsdFZhbHVlcyAuICIgfTtcbiIgaWYgJGRl
ZmF1bHRWYWx1ZXM7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvKiBvYmplY3QgPSB2YWx1
ZS5nZXRPYmplY3QoKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBpZiAoVU5MSUtFTFko
IW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkge1xuIjsKLSAg
ICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpO1xuIjsKKyAg
ICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2Nv
cGUpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4gTnVsbG9wdDtcbiI7
CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9XG4iOwogCkBAIC0xOTQxLDYgKzE5NDUsOSBAQCBz
dWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjCiAgICAgfQogICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7ICAgIAogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6
ZV90PigkbWF4QXJnQ291bnQsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogRU5ECiAKQEAgLTIw
MTUsOSArMjAyMiw5IEBAIEVORAogICAgIH0KICAgICBteSAkbWluQXJnQ291bnQgPSBHZXRGdW5j
dGlvbkxlbmd0aCgkZnVuY3Rpb24pOwogICAgIGlmICgkbWluQXJnQ291bnQgPiAwKSB7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBhcmdzQ291bnQgPCAkbWluQXJnQ291
bnQgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiBhcmdzQ291bnQgPCAkbWluQXJnQ291bnQgPyB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpCiAgICAgfSBlbHNl
IHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpO1xuIikKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIikKICAgICB9CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMjgxMCw3ICsyODE3LDkgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpT
VmFsdWUgJHtnZXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0oc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7XG4iKTsKIAogICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0
YXRpYyB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsK
QEAgLTI4MjYsNyArMjgzNSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkxlbmllbnRUaGlzIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlz
aWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwi
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTMwMDcsOSArMzAxNiwxMSBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkVuY29kZWRKU1ZhbHVlICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNz
TmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpXG4iKTsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKIAogICAg
ICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZh
Y2VPYmplY3QifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoJHtjbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+
dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpO1xuIik7CkBAIC0zMDI2LDEwICszMDM3
LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sICR7Y29uc3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
O1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkge1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKIApAQCAtMzEwOSw2ICszMTIyLDkgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOyIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTtcbiIp
IGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+
aXNTdGF0aWMpIHsKQEAgLTMxMjEsNyArMzEzNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn0pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOwogICAgICAgICAgICAgfQpAQCAtMzIxMCw3ICszMjI2LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChVTkxJS0VM
WSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHRocm93QXR0cmli
dXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVc
IiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC0zMjI5LDcgKzMyNDUs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAgaWYgKCRz
aG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHtcbiIpOwotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5
cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJs
ZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMzM5Nyw2ICszNDEzLDEwIEBAIEVORAogCiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKIAorICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKKwogICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ0VSZWFjdGlvbnMifSkgewogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztcbiIpOwpAQCAt
MzcxNiw3ICszNzM2LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzCiAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3Qi
fSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRU
aGlzID0gdG8ke2NsYXNzTmFtZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhzdGF0ZSwgTm90
U3RyaWN0TW9kZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpO1xuIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7XG4iKTsKICAgICAg
ICAgbXkgJGNhc3RpbmdIZWxwZXIgPSBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50
ZXJmYWNlKTsKQEAgLTM3MzIsNyArMzc1Miw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVk
VGhpcwogICAgICAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+
R2V0VmlzaWJsZUludGVyZmFjZU5hbWUoJGludGVyZmFjZSk7CiAgICAgICAgIG15ICRkb21GdW5j
dGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwi
JGRvbUZ1bmN0aW9uTmFtZVwiKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJHtjbGFzc05hbWV9
OjppbmZvKCkpO1xuIikgdW5sZXNzICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsK
QEAgLTM4MDAsNyArMzgyMCw3IEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAg
ICBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA+PSAxKQogICAgIHsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgJG51
bU1hbmRhdG9yeVBhcmFtcykpXG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOwogICAgIH0KIH0KIApAQCAtMzkyMiw3ICszOTQyLDcg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBpZiAoIXN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkuaXNPYmplY3QoKSlcbiIpOwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRl
LCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAk
cXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2li
bGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lID0gY3JlYXRlRnVuY3Rpb25Pbmx5
Q2FsbGJhY2s8JHtjYWxsYmFja0NsYXNzTmFtZX0+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KCRhcmd1bWVudEluZGV4KSk7XG4iKTsKQEAgLTM5MzYsNyArMzk1Niw3IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoIXN0YXRl
LT5hcmd1bWVudCgkYXJndW1lbnRJbmRleCkuaXNPYmplY3QoKSkpXG4iKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRl
eCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25O
YW1lKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwg
JHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9u
LT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2Fs
bGJhY2tGdW5jdGlvbi5oIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvICRuYW1lID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8JHtjYWxsYmFj
a0NsYXNzTmFtZX0+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudElu
ZGV4KSk7XG4iKTsKQEAgLTM5NTQsNyArMzk3NCw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKHVuc2ln
bmVkIGkgPSAkYXJndW1lbnRJbmRleCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBp
IDwgY291bnQ7ICsraSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICBhdXRvKiBpdGVtID0gSlMke3R5cGV9Ojp0b1dyYXBwZWQoc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgaWYgKCFpdGVtKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCBpLCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlv
bk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsIGksIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3Rl
ZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUudW5jaGVja2VkQXBwZW5kKGl0ZW0pO1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpCiAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMzk5Nyw3ICs0MDE3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAg
IGlmIChVTkxJS0VMWSghJG9wdGlvbmFsVmFsdWUpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVu
dW1FcnJvcigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRl
cmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8JGNsYXNzTmFtZT4oKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiRpbmRlbnQgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
czwkY2xhc3NOYW1lPigpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
JGluZGVudCAgICAkbmFtZSA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTtcbiIpIGlmICRvcHRpb25h
bFZhbHVlIG5lICRuYW1lOwogCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
fVxuIikgaWYgJGluZGVudCBuZSAiIjsKQEAgLTQwMjEsNyArNDA0MSw3IEBAIHN1YiBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgaWYgKFVOTElLRUxZKCEkbmFtZSkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIs
IFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVc
Iik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7
CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgICAg
IH0gZWxzZSB7CkBAIC00MDY3LDcgKzQwODcsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKIAogICAgICAgICAgICAgaWYgKCRzaG91bGRQYXNzQnlSZWZlcmVuY2UpIHsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCEkbmFtZSkpXG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwg
XCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwi
KTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJ
bmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rp
b25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gJGlzVGVh
ck9mZiA/ICIkbmFtZS0+cHJvcGVydHlSZWZlcmVuY2UoKSIgOiAiKiRuYW1lIjsKICAgICAgICAg
ICAgIH0KIApAQCAtNTI0MywxNCArNTI2MywxNiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
ZmluaXRpb24KICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgPDxFTkQpOwogdGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9
Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBh
dXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oc3Rh
dGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoanNDb25zdHJ1Y3Rvcik7CiAKICAgICBpZiAoIWpz
Q29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3Rh
dGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7CisgICAgICAgIHJldHVybiB0aHJvd0Nv
bnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpOwogCiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKIAogICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmlu
ZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC01
MzI3LDYgKzUzNDksOSBAQCBFTkQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihzdGF0ZS0+Y2Fs
bGVlKCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJU
KGNhc3RlZFRoaXMpO1xuIik7CiAKQEAgLTUzNTYsMTQgKzUzODEsMTQgQEAgRU5ECiAgICAgICAg
ICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKmNvbnRleHQiKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoIWNvbnRl
eHQpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAi
RG9jdW1lbnQiKSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkRvY3VtZW50Lmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiZG9jdW1l
bnQiKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
VU5MSUtFTFkoIWNvbnRleHQpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTtc
biIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpO1xuIik7CiAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgUnVu
dGltZUFycmF5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGlt
ZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVBcnJheSog
dGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3Qt
PmdldExlbmd0aCgpKSk7CiB9CiAKQEAgLTExMyw5ICsxMTYsMTIgQEAgYm9vbCBSdW50aW1lQXJy
YXk6OmdldE93blByb3BlcnR5U2xvdEJ5SQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2Vs
bCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
dW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAKQEAgLTEyNyw5ICsxMzMsMTIgQEAgYm9vbCBSdW50aW1lQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRl
eChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUg
dmFsdWUsIGJvb2wpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNP
YmplY3QtPmdldExlbmd0aCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBl
cnJvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTYsOSArNTYsMTIgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVh
dGlvbihWTSYgdgogCiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFt
aWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV9tZXRob2QtPm51bVBhcmFt
ZXRlcnMoKSkpOwogfQogCkBAIC03NSw2ICs3OCw5IEBAIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0
T3duUHJvcGVydHlTbG90KEoKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
UnVudGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGV4ZWMt
PmNhbGxlZSgpKTsKIAogICAgIGlmICghbWV0aG9kLT5tZXRob2QoKSkKQEAgLTg3LDEzICs5Mywx
MyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAgIFJ1
bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgICAgIGluc3RhbmNlID0gcnVudGltZU9iamVjdC0+
Z2V0SW50ZXJuYWxJbnN0YW5jZSgpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSAKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50
aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBl
bGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6Omlu
Zm8oKSkpCiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hU
TUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlm
ICghaW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9
CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTY0LDExICs2NCwxNCBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogCiBF
bmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nh
c3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQ
dHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICgh
aW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2lu
KCk7CiAKQEAgLTgyLDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0Ojpm
YWxsYmFja09iCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNP
YmogPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAog
ICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFu
Y2UtPmJlZ2luKCk7CiAKQEAgLTEwMSwxMSArMTA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIFJ1bnRp
bWVPYmplY3Q6OmZpZWxkR2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0
aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVj
dCogdGhpc09iaiA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3Rh
bmNlOwogCiAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAKICAg
ICBpbnN0YW5jZS0+YmVnaW4oKTsKIApAQCAtMTE4LDkgKzEyNywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0CiAKIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4ob2Jq
ZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKLSAgICAgICAgdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE2
Myw5ICsxNzUsMTIgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgog
CiBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9
IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2lu
c3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCkBAIC0xOTIsOSArMjA3LDEyIEBAIGJvb2wgUnVudGltZU9iamVj
dDo6ZGVsZXRlUHJvcGVydHkoSlNDZWwKIAogSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpkZWZhdWx0
VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQ
cmltaXRpdmVUeXBlIGhpbnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBjb25zdCBSdW50aW1lT2Jq
ZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwog
ICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Ug
PSB0aGlzT2JqZWN0LT5tX2luc3RhbmNlOwogCkBAIC0yNTgsOSArMjc2LDEyIEBAIENvbnN0cnVj
dFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q29uc3RydWMKIAogdm9pZCBSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9i
amVjdCo+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAg
ICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRB
Y2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3
MSw5ICsyOTIsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAg
ICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVPYmpl
Y3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVz
dHJveWVkIHBsdWctaW4uIikpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZy
b20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVjdCogdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAgICAgREVDTEFS
RV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZvaWQgQ0luc3Rh
bmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9i
YWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhj
ZXB0aW9uU3RyaW5nKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAgICAg
Z2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsxNTcsMTEgQEAg
SlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1ZhbHVlIENJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGlt
ZU1ldGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhv
ZCktPmluaGVyaXRzKENSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBv
biBwbHVnLWluIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4g
b2JqZWN0LiIpOwogCiAgICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8Q01ldGhvZCo+
KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKQEAgLTE4NCw3
ICsxOTAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0CiAgICAg
fQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhv
ZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBO
UE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAg
IF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMTk3LDYgKzIwMyw5IEBA
IEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXQKIAogSlNWYWx1ZSBDSW5z
dGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBDSW5zdGFu
Y2U6Omludm9rZURlZmF1bHRNZXRob2QoRQogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIGZvciAo
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUo
JmNBcmdzW2ldKTsKQEAgLTIzNiw2ICsyNDUsOSBAQCBib29sIENJbnN0YW5jZTo6c3VwcG9ydHND
b25zdHJ1Y3QoKSBjb25zCiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCFfb2JqZWN0LT5fY2xhc3MtPmNvbnN0cnVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKQEAgLTI1OCw3ICsyNzAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlQ29u
c3RydWN0KEV4ZWNTCiAgICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJF
cnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBj
YWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNv
dW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpA
QCAtMzExLDYgKzMyMyw5IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSog
ZXgKIAogYm9vbCBDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBjaGFyKiBuYW1lLCBKU1ZhbHVlJiByZXN1bHRWYWx1ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihuYW1l
KTsKICAgICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI4LDcgKzM0Myw3IEBAIGJvb2wgQ0luc3RhbmNl
Ojp0b0pTUHJpbWl0aXZlKEV4ZWNTdGF0ZSoKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICByZXN1
bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBt
X3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmcmVzdWx0
VmFyaWFudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0JKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOC0yMDA5LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzksNiArNzksOSBAQCB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFs
RXhjZXB0aW9uKE5TCiAKIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9F
eGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFzX2V4
Y2VwdGlvbikgewogICAgICAgICBBU1NFUlQoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQpOwogICAg
ICAgICByZXR1cm47CkBAIC04Niw3ICs4OSw3IEBAIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xv
YmFsRXhjZXB0aW9uVG8KIAogICAgIGlmICghc19leGNlcHRpb25FbnZpcm9ubWVudCB8fCBzX2V4
Y2VwdGlvbkVudmlyb25tZW50ID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkgewogICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBz
X2V4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIHNfZXhjZXB0aW9u
KTsKICAgICB9CiAKICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBAIC0yMDUsOCArMjA4LDEx
IEBAIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGUKIAogSlNDOjpKU1Zh
bHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1l
dGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09i
amVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJB
dHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikp
OwogCiAgICAgT2JqY01ldGhvZCAqbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2JqY01ldGhvZCo+KHJ1
bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQsNiArOTQsOSBAQCBPYmpjRmllbGQ6Ok9i
amNGaWVsZChDRlN0cmluZ1JlZiBuYW1lKQogCiBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVGcm9t
SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAg
ICAgCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0YW5j
ZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3IEBAIEpTVmFsdWUg
T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQogICAgIH0gQGNhdGNo
KE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29u
XSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIFtsb2NhbEV4Y2VwdGlvbiByZWFz
b25dKTsKICAgICB9CiAKICAgICAvLyBXb3JrIGFyb3VuZCBwcm9ibGVtIGluIHNvbWUgdmVyc2lv
bnMgb2YgR0NDIHdoZXJlIHJlc3VsdCBnZXRzIG1hcmtlZCB2b2xhdGlsZSBhbmQKQEAgLTEyNyw2
ICsxMzAsOSBAQCBzdGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTCiAKIGJv
b2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
bnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogeworICAgIEpTQzo6Vk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3Rh
bmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFs
dWVUb09iamNPYmplY3QoZXhlYywgYVZhbHVlKTsKIApAQCAtMTQxLDcgKzE0Nyw3IEBAIGJvb2wg
T2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1MKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFtsb2NhbEV4
Y2VwdGlvbiByZWFzb25dKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzY29wZSwgW2xvY2Fs
RXhjZXB0aW9uIHJlYXNvbl0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpAQCAt
MTU2LDEzICsxNjIsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyIGEs
IAogCiBib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CisgICAgSlNDOjpWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2Vy
dE9iamVjdDphdEluZGV4OildKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQXJyYXkgaXMgbm90IG11dGFibGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5Lmdl
dCgpIGNvdW50XSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJ
bmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIApAQCAtMTc0LDIxICsxODMsMjQgQEAgYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQo
RXhlY1N0YXRlKiBleAogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUu
b2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0g
QGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewotICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNl
cHRpb24uIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhj
ZWVkcyBhcnJheSBzaXplLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUu
IikpOwogICAgIEB0cnkgewogICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0
SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZl
cnRPYmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2Jq
ZWN0LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsK
LSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4
Y2VwdGlvbi4iKSk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMjMy
LDkgKzI0NCwxMiBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCosCiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmpl
Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KE9iakNSdW50aW1lT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNDIsNyArMjU3
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIE9iamNJ
bnN0YW5jZSogb2JqY0luc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxPYmpDSW5z
dGFuY2UoKTsKIAogICAgIGlmICghb2JqY0luc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAgIG9iamNJbnN0YW5jZS0+YmVn
aW4oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgJ
KHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRp
bGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEpTVmFsdWUgY29udmVydE5T
U3RyaW5nVG9TdHJpbmcoRXhlY1N0YXQKIEpTVmFsdWUgY29udmVydE9iamNWYWx1ZVRvVmFsdWUo
RXhlY1N0YXRlKiwgdm9pZCogYnVmZmVyLCBPYmpjVmFsdWVUeXBlLCBSb290T2JqZWN0Kik7CiBP
YmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNvbnN0IGNoYXIgKnR5cGUpOwogCi1K
U09iamVjdCAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOworSlNP
YmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIE5TU3RyaW5nICptZXNz
YWdlKTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMCwxMCArMzEwLDEwIEBAIE9iamNWYWx1ZVR5
cGUgb2JqY1ZhbHVlVHlwZUZvclR5cGUoY29uc3QKICAgICByZXR1cm4gb2JqY1ZhbHVlVHlwZTsK
IH0KIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmluZyAqbWVz
c2FnZSkKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUsIE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAgICBK
U09iamVjdCAqZXJyb3IgPSBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIEpTQzo6Y3Jl
YXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CisgICAgSlNPYmplY3QgKmVycm9yID0g
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5n
KG1lc3NhZ2UpKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0
aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTWV0aG9kKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpjYWxsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2FsbENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6
cHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjptZXRob2RHZXR0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhj
ZXB0aW9uVG9FeGVjU3RhdGUpOgorCiAyMDE2LTA4LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBXZWJQcm9jZXNzUHJveHk6OmZy
b21Db25uZWN0aW9uIGluIFdlYlBhZ2VQcm94eQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSlNO
UE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU05QTWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVj
LT5jYWxsZWUoKSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwpAQCAtNzgsNyArODEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhv
ZChleGVjLCBqc05QTWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIH0KIAogQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOSArMTA3LDEyIEBAIE5QT2JqZWN0
KiBKU05QT2JqZWN0OjpsZWFrTlBPYmplY3QoKQogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxN
ZXRob2QoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAg
IGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFt
ZXRob2ROYW1lKQpAQCAtMTQyLDcgKzE0NSw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNb
aV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24g
TlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAg
IEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9K
U1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlh
bnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE1MSw5ICsxNTQsMTIgQEAgSlNWYWx1ZSBKU05QT2JqZWN0
OjpjYWxsTWV0aG9kKEV4ZWNTdGF0ZQogCiBKU0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9i
amVjdChKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9U
SElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgc2l6ZV90IGFy
Z3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgVmVjdG9yPE5QVmFyaWFu
dCwgOD4gYXJndW1lbnRzKGFyZ3VtZW50Q291bnQpOwpAQCAtMTgyLDcgKzE4OCw3IEBAIEpTQzo6
SlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsT2JqZWN0KEpTQzoKICAgICAgICAgcmVsZWFzZU5QVmFy
aWFudFZhbHVlKCZhcmd1bWVudHNbaV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJy
b3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9u
IE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFw
LT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQp
OwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE5MSw5ICsxOTcsMTIg
QEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogCiBKU1ZhbHVlIEpT
TlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAo
IW1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAg
IFZlY3RvcjxOUFZhcmlhbnQsIDg+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTIxOCw3
ICsyMjcsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjCiAgICAg
fQogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBP
YmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKICAgICAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUo
ZXhlYywgZ2xvYmFsT2JqZWN0KCksIHJlc3VsdCk7CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVl
KCZyZXN1bHQpOwpAQCAtMjY1LDEwICsyNzQsMTMgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0
OjpnZXRDb25zdHJ1Y3REYQogCiBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBPYmplY3Qq
IHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0yOTksMTAgKzMxMSwxMyBAQCBib29s
IEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iCiAKIGJvb2wgSlNOUE9iamVjdDo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxs
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM1Myw2ICszNjgsOSBA
QCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKCiAKIGJvb2wgSlNOUE9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVy
dHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVS
SVRTKGluZm8oKSk7CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KQEAg
LTM2MCw3ICszNzgsNyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9ucE9iamVjdCkgewotICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC0zODksMTAgKzQwNywxMyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNT
dGF0CiAKIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJh
eSwgRW51bWVyYXRpb25Nb2RlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5t
X25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAg
ICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQzNywxMSArNDU4LDE0IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU08KIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlz
T2JqID0ganNDYXN0PEpTTlBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCBpbmZvKCkpOwogICAgIAogICAg
IGlmICghdGhpc09iai0+bV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlm
ICghdGhpc09iai0+bV9ucE9iamVjdC0+X2NsYXNzLT5nZXRQcm9wZXJ0eSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3NywyMyArNTAxLDI2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGUKIAogRW5jb2RlZEpTVmFs
dWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
aiwgaW5mbygpKTsKICAgICAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBPYmplY3QpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMsIHNjb3BlKSk7CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlm
aWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlOYW1lKTsKICAgICAvLyBJZiB0aGUgcHJvcGVydHlO
YW1lIGlzIHN5bWJvbC4KICAgICBpZiAoIW5wSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUp
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElk
ZW50aWZpZXIpKTsKIH0KIAotSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vz
c0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAg
IHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWlu
LiIpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBw
bHVnLWluLiIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIHByb3BlcnR5R2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUq
KTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1h
cCogbV9vYmplY3RNYXA7CiAgICAgTlBPYmplY3QqIG1fbnBPYmplY3Q7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3NCwxMiArMjc0LDE1IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFw
OjpzZXRHbG9iYWxFeGNlcHQKICAgICAKIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xv
YmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4
Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRv
IGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5j
ZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6
Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6aW52
b2tlTWV0aG9kKToKKwogMjAxNi0wOC0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgZG9jdW1lbnQudGl0bGUgc2V0dGVyIGNhbid0IHRocm93LgpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmco
KS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOworICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAg
IGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1Zh
bHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBy
dW50aW1lTWV0aG9kKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoUHJveHlSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9r
ZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBp
bnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAogICAgIFBy
b3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRo
b2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsK
</data>
<flag name="review"
          id="310796"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287349</attachid>
            <date>2016-08-29 16:36:38 -0700</date>
            <delta_ts>2016-08-30 00:09:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>1200900</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1OCBA
QAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgTWlzYyBvdGhlciBjaGFuZ2VzOgorICAgICAgICAt
IGRlbGV0ZWQgdGhlIHVudXNlZCBDQUxMX1RIUk9XKCkgbWFjcm8gZnJvbSBMTEludFNsb3dQYXRo
cy5jcHAuCisgICAgICAgIC0gbW92ZWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoKSBmcm9tIEpT
T2JqZWN0LmggdG8gSlNPYmplY3RJbmxpbmVzLmguCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmN1c3RvbUhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JO
YW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJp
ZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
Ojpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpq
c0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlz
T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFp
bERlbGV0ZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1
c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5Ojps
ZW5ndGhHZXR0ZXIpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAg
KGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1
bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVu
Y3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAg
KGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1
bGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5j
dGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoSlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpj
b25jYXRBcHBlbmRPbmUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uU2xvd1BhdGhzOjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJl
dGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVh
cik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY0dldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChK
U0M6OnNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVG
cm9tRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6
OnRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5n
ZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dWTVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVF
cnJvcik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRo
cm93VHlwZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25GdXp6LmNwcDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJv
d091dE9mTWVtb3J5RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpmdW5jdGlvblByb3RvRnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5n
T3B0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRM
b2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yRm9ySXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cG9wKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6dG9TdHJpbmdTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omdl
dERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0dldHRlckJ1ZmZlcik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVy
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc6OnNldEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0Zyb21JdGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpk
ZWNvZGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZy
b21BcnJheUxpa2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0UHJvbWlzZSk6CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0
eU5hbWVJdGVyYXRvckZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpi
dWlsZCk6CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5l
cjo6am9pbmVkTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0VHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4p
OgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNJdGVyYXRvcj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMp
OgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFw
UHJvdG9GdW5jS2V5cyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6Cisg
ICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJv
dG9GdW5jVG9QcmVjaXNpb24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJv
dG90eXBlT2YpOgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJB
cnJheSk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJs
ZVByb3h5KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJy
b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6
OmNhbGxQcm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZv
cm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
SGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RFbnVtZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToK
KyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0
T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNvbGxlY3RNYXRjaGVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0
RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlND
OjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVy
TXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3Vy
Y2UpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVqZWN0Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToK
KyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNl
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpq
c1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChK
U0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2Rl
UG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlND
Ojp0b0xvY2FsZUNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0JsaW5rKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jSXRhbGljcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1N1cCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQW5jaG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6
CisgICAgICAgIChKU0M6OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25D
aGVja2VyOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1i
b2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0
b3JLZXlGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6
OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhy
b3dFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNr
KToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAg
ICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6OnZtKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6VGhyb3dTY29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OlRocm93U2NvcGUpOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6
CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93
U2NvcGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9u
OjpUaHJvd1Njb3BlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZt
KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAg
ICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vh
a01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAg
KiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFr
U2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgor
ICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdG9TdHJpbmdO
YW1lIGZvciBQcm94aWVzIGFuZCBhZGQgc3VwcG9ydCBmb3Igbm9ybWFsIGluc3RhbmNlcwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04
MTQsNiArODE0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N5
bWJvbE9iamVjdC5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAorICAgIHJ1bnRpbWUvVGhyb3dTY29wZS5jcHAKICAgICBydW50
aW1lL1RlbXBsYXRlUmVnaXN0cnkuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3Bw
CiAgICAgcnVudGltZS9UeXBlTG9jYXRpb25DYWNoZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzY1LDEyICszNjUsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiAgICAgeworICAgICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICAgICAgQ3VzdG9tR2V0dGVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxDdXN0b21HZXR0ZXIqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICBib29sIHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3BlcnR5TmFt
ZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9Cb29sZWFu
KGV4ZWMpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigx
MDApKTsKICAgICB9CiB9OwpAQCAtNDcwLDkgKzQ3MywxMiBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogICAgIHsKKyAgICAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVu
dGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgICAgICBpZiAoIXRo
aXNPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkp
OwogICAgIH0KIApAQCAtMTIzMiwxMSArMTIzOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uQ3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DcmVhdGVFbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOwogICAgIFJvb3QqIHJvb3QgPSBqc0R5bmFtaWNDYXN0PFJv
b3QqPihleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFyb290KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJv
b3QuIikpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVtZW50OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCByb290KSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBS
b290LiIpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoRWxlbWVudDo6Y3JlYXRlKHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHJvb3QpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkdldEVsZW1lbnQoRXhlY1N0YXRlKiBleGVjKQpAQCAt
MTQxNiwyMCArMTQyNSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
VmVyCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZl
Y3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0
ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAotICAgIEdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5n
PigpKTsKKyAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3Jl
YXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0
b3I8U3RyaW5nPigpKTsKIAogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJh
eShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQogICAgICAgICBhcnJheS0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCi0gICAgICAgIGV4
ZWMtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOworICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAK
ICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBTdG9wV2F0Y2ggc3RvcFdh
dGNoOwpAQCAtMTQzOCw3ICsxNDUwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblJ1bgogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDQ3LDIzICsxNDU5LDI2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1blN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJp
bmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0Ojpj
cmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZl
Y3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCiAgICAgICAgIGFycmF5LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgKLSAgICAgICAg
ZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsK
IAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIGV2YWx1YXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBtYWtlU291cmNlKHNvdXJjZSksIEpTVmFsdWUoKSwgZXhj
ZXB0aW9uKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAg
ICAgc2NvcGUudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgfQogICAgIApAQCAtMTQ3MiwyNCArMTQ4NywzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uUnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25Mb2FkKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRG
cm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpOwogICAgIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCBqc2NTb3VyY2Uoc2NyaXB0LCBmaWxlTmFtZSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2Vw
dGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIFN0cmluZyBzb3VyY2VDb2RlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5OCwzMCArMTUxOSwzNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3VyY2Uoc291cmNlQ29kZSksIEpTVmFsdWUo
KSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pCi0g
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXZhbHVhdGlvbkV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBldmFsdWF0aW9uRXhjZXB0
aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFkRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+
IHNjcmlwdDsKICAgICBpZiAoIWZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZU5hbWUs
IHNjcmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5v
dCBvcGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291
bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURihzY3JpcHQpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBTdHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dU
RlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNj
cmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwg
c2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3Vs
ZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKIApAQCAtMTUzMyw3ICsxNTYwLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRjaC5z
dG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHN5bnRheEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBzeW50YXhFeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdldEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE2MzgsMTIg
KzE2NjUsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJlbwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm90IGVu
b3VnaCBhcmd1bWVudHMiKSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJO
b3QgZW5vdWdoIGFyZ3VtZW50cyIpKSkpOwogICAgIAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZl
ciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhw
ZWN0ZWQgYW4gYXJyYXkgYnVmZmVyIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgYW4gYXJyYXkgYnVmZmVyIikpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZm
ZXJDb250ZW50cyBkdW1teUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2Zlcihk
dW1teUNvbnRlbnRzKTsKQEAgLTE4MTAsMjcgKzE4NDAsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvbklzMwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZl
dGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSkpOwogCiAgICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBsb2FkQW5kRXZhbHVhdGVN
b2R1bGUoZXhlYywgZmlsZU5hbWUpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFs
dWUgZXJyb3I7Ci0gICAgSlNGdW5jdGlvbiogZXJyb3JIYW5kbGVyID0gSlNOYXRpdmVTdGRGdW5j
dGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgMSwg
U3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBKU0Z1bmN0aW9uKiBlcnJvckhh
bmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFsmXShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgICAgICAg
ZXJyb3IgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKIAogICAgIHByb21pc2UtPnRoZW4oZXhlYywgbnVs
bHB0ciwgZXJyb3JIYW5kbGVyKTsKLSAgICBleGVjLT52bSgpLmRyYWluTWljcm90YXNrcygpOwor
ICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGVycm9yKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIApAQCAtMTg1OCw2ICsxODkxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkNyZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlY2tN
b2R1bGVTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5n
IHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTE4NzAsNyArMTkwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25DaGUKICAgICBzdG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxp
ZFN5bnRheCkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBqc05vbnRy
aXZpYWxTdHJpbmcoZXhlYywgdG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdl
KCksICI6IiwgZXJyb3IubGluZSgpKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKCJTeW50YXhFcnJvcjogIiwg
ZXJyb3IubWVzc2FnZSgpLCAiOiIsIGVycm9yLmxpbmUoKSkpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCkBAIC0x
OTA3LDEwICsxOTQzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25T
dGEKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmls
ZXJTdGFja1RyYWNlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKCFleGVjLT52bSgpLnNh
bXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
U2FtcGxpbmcgcHJvZmlsZXIgd2FzIG5ldmVyIHN0YXJ0ZWQiKSkpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGlmICghdm0uc2FtcGxpbmdQcm9maWxlcigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIikpKSk7CiAKLSAg
ICBTdHJpbmcganNvblN0cmluZyA9IGV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpLT5zdGFj
a1RyYWNlc0FzSlNPTigpOworICAgIFN0cmluZyBqc29uU3RyaW5nID0gdm0uc2FtcGxpbmdQcm9m
aWxlcigpLT5zdGFja1RyYWNlc0FzSlNPTigpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJlc3VsdCA9
IEpTVmFsdWU6OmVuY29kZShKU09OUGFyc2UoZXhlYywganNvblN0cmluZykpOwogICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxi
YWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsNiArNDQsOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RhdGljIEVuY29kZWRKU1ZhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1Jl
ZihleGVjKTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxl
ZSgpKTsKICAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC02
MSw3ICs2Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2sKICAg
ICAgICAgcmVzdWx0ID0ganNDYXN0PFQqPih0b0pTKGZ1bmN0aW9uUmVmKSktPmZ1bmN0aW9uQ2Fs
bGJhY2soKShleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRDb3VudCwg
YXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbik7CiAgICAgfQogICAgIGlmIChleGNlcHRpb24p
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNl
cHRpb24pKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAKICAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAg
ICAgaWYgKCFyZXN1bHQpCkBAIC03Myw2ICs3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgQVBJQ2FsbGJhY2sKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGV4ZWMtPmNh
bGxlZSgpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVj
dFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTkyLDEyICs5Niwx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrCiAgICAgICAgICAg
ICByZXN1bHQgPSBjYWxsYmFjayhjdHgsIGNvbnN0cnVjdG9yUmVmLCBhcmd1bWVudENvdW50LCBh
cmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhj
ZXB0aW9uKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRv
SlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgfQogICAgICAgICAvLyBy
ZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCiAgICAgICAgIGlmICghcmVzdWx0KQotICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhyZXN1bHQpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEzMyw2ICsxMzMsOSBAQCBTdHJpbmcgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpjbGFzc05hCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0
aGlzT2JqZWN0KTsKQEAgLTE1OSw3ICsxNjIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0T3duUHJvCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNl
cHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RW51bSwganNVbmRlZmluZWQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMCw2
ICsyMDMsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvCiB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyZW50PgogSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgaGludCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IEpTQ2Fs
bGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+
KG9iamVjdCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTIxMCw3ICsyMTYsNyBAQCBK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiAgICAgICAgICAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IGNv
bnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBqc0hpbnQsICZleGNlcHRpb24pOwogICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChyZXN1bHQpCkBAIC0yMjQsNiArMjMwLDkgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlZmF1bAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpOwogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0
b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpc09iamVjdCk7
CkBAIC0yNDIsNyArMjUxLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChK
U0NlbAogICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNS
ZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAg
fQpAQCAtMjU5LDcgKzI2OCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQo
SlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXRQcm9wZXJ0eShj
dHgsIHRoaXNSZWYsIGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhj
ZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNl
cHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMjczLDcgKzI4Miw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpwdXQoSlNDZWwKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQYXJl
bnQ6OnB1dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVzICYga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6cHV0RGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQg
YXMgb3ZlcnJpZGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yODUsNiArMjk0LDkgQEAgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJv
b2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29s
IHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0
UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0
aGlzT2JqZWN0KTsKQEAgLTMwMyw3ICszMTUsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6cHV0QnlJbmRlCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHkoY3R4
LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksIHZhbHVlUmVmLCAmZXhjZXB0aW9uKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtMzIwLDcgKzMzMiw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3Bl
cnR5TmFtZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhj
ZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAgICAgICAgIH0KQEAgLTM0Miw2ICszNTQsOSBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRlCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0Kj4oY2VsbCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpT
T2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTM1OSw3ICszNzQsNyBA
QCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRlUHJvCiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRlbGV0ZVByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1l
UmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC00MDgsNiArNDIzLDkgQEAgQ29uc3Ry
dWN0VHlwZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVu
dD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ciA9IGV4ZWMtPmNhbGxlZSgpOwogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhl
Yyk7CiAgICAgSlNPYmplY3RSZWYgY29uc3RydWN0b3JSZWYgPSB0b1JlZihjb25zdHJ1Y3Rvcik7
CkBAIC00MjYsNyArNDQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRvSlMoY2FsbEFzQ29uc3RydWN0b3IoZXhl
Y1JlZiwgY29uc3RydWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDM4LDYgKzQ1Niw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxi
YWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4
ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTQ1
Miw3ICs0NzMsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFzSW5zdGFuY2UoZXhlY1JlZiwgdGhpc1JlZiwgdmFs
dWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4Y2Vw
dGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRv
SlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CiAgICAgfQpAQCAtNDc1LDYgKzQ5Niw5IEBAIENhbGxUeXBlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q2EKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVj
KTsKICAgICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGV4ZWMtPmNhbGxlZSgpKTsK
ICAgICBKU09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKSk7CkBAIC00OTMsNyAr
NTE3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FsbEFzRnVuY3Rpb24oZXhlY1JlZiwgZnVu
Y3Rpb25SZWYsIHRoaXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZl
eGNlcHRpb24pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTcwLDYgKzU5NCw5IEBAIGJvb2wg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojppbmhlcml0cygKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CiBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhdGljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAogICAgIGlmIChT
dHJpbmdJbXBsKiBuYW1lID0gcHJvcGVydHlOYW1lLnVpZCgpKSB7CkBAIC01ODQsNyArNjExLDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0UHJvcGVydHkodG9SZWYoZXhlYyksIHRoaXNSZWYs
IGVudHJ5LT5wcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTYw
MSw2ICs2MjgsOSBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0U3RhCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGNhY2hlZCBvciBvdmVycmlkZSBwcm9wZXJ0
eS4KQEAgLTYxMyw3ICs2NDMsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46CiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
KiBzdGF0aWNGdW5jdGlvbnMgPSBqc0NsYXNzLT5zdGF0aWNGdW5jdGlvbnMoZXhlYykpIHsKICAg
ICAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50cnkgPSBzdGF0aWNGdW5j
dGlvbnMtPmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RDYWxs
QXNGdW5jdGlvbkNhbGxiYWNrIGNhbGxBc0Z1bmN0aW9uID0gZW50cnktPmNhbGxBc0Z1bmN0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG8gPSBKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIGNhbGxBc0Z1bmN0aW9uLCBuYW1lKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1l
LCBvLCBlbnRyeS0+YXR0cmlidXRlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG8pOwpAQCAtNjIzLDEyICs2NTIsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiIpKSkpOwogfQogCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHRoaXNWYWx1ZSk7
CiAgICAgCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwpAQCAtNjQ2
LDcgKzY3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eSh0b1JlZihleGVjKSwgdGhpc1Jl
ZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCAmZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMs
IGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUpCkBAIC02NTUsNyArNjg3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3Ig
YSBwcm9wZXJ0eSB0aGF0IGRvZXNuJ3QgZXhpc3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVlIGZv
ciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iKSkpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRB
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw5ICsxMDAsMTEgQEAgaW5saW5lIFR5cGVk
QXJyYXlUeXBlIHRvVHlwZWRBcnJheVR5cGUoSgogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVR5
cGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGVkQXJyYXlUeXBlIHR5cGUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBzd2l0Y2ggKHR5cGUp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjA5Niw4ICsyMDk2LDEwIEBACiAJCUZFMUMwRkZG
MUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2Vw
dGlvbi5jcHAgKi87IH07CiAJCUZFMjBDRTlEMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29w
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBD
RTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLzsgfTsKIAkJRkUyMENFOUUx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlDMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENM
b29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RkUyRTZBN0IxRDZFQTYyQzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2
IC8qIFRocm93U2NvcGUuY3BwICovOyB9OwogCQlGRTMxOEZERjFDQUM5ODI3MDBERkNDNTQgLyog
RUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAgKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4
MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBE
RkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovOyB9OworCQlGRTM0
MjIxMjFENkI4MUMzMDAzMkJFODggLyogVGhyb3dTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRo
cm93U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlGRTM4NEVFNTFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMTFBRERCN0FEMDA1
NURFMkMgLyogSlNEb2xsYXJWTS5jcHAgKi87IH07CiAJCUZFMzg0RUU2MUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU3MUFEREI3
QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBK
U0RvbGxhclZNUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIxMjQsNiArMjEyNiw3IEBACiAJCUZF
NTA2ODY3MUFFMjVFMjgwMDA5REFCNyAvKiBEZWZlcnJlZFNvdXJjZUR1bXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1MDY4NjYxQUUyNUUyODAw
MDlEQUI3IC8qIERlZmVycmVkU291cmNlRHVtcC5jcHAgKi87IH07CiAJCUZFNTkzMkE3MTgzQzVB
MjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTUxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5jcHAgKi87IH07CiAJCUZFNTkzMkE4MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNTkz
MkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTYwMjlEOTFENkUxRTRGMDAzMDIwNEQg
LyogVGhyb3dTY29wZUxvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2OEM2MzcxQjkwREUwNDAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzYxQjkwRERE
OTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjhDNjM4MUI5MERFMEIwMDQyQkNCMyAv
KiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1i
bGVyUHJpbnRlci5jcHAgKi87IH07CiAJCUZFN0JBNjBGMUExQTdDRUMwMEYxRjdCNCAvKiBIZWFw
VmVyaWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU3QkE2MEQxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi87IH07CkBA
IC00Mzk4LDggKzQ0MDEsMTAgQEAKIAkJRkUxQzBGRkUxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2Vw
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QjE1RjA0QTk1MDBERjM0
MzAgLyogTExJbnRDTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludENMb29wLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTIwQ0U5QzE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9v
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENMb29wLmg7IHBhdGgg
PSBsbGludC9MTEludENMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkU2
QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01B
U2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxG
dW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0
MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUaHJvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9sbGFyVk0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvbGxhclZNLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUzMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9s
bGFyVk1Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyNiw2
ICs0NDMxLDcgQEAKIAkJRkU1MDY4NjYxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVycmVkU291cmNl
RHVtcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZFNv
dXJjZUR1bXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTU5MzJBNTE4M0M1
QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFZNRW50cnlTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFNTkzMkE2MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVk1FbnRyeVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFNjAyOUQ4MUQ2RTFFMzMwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyb3dTY29wZUxvY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNjhDNjM1MUI5MERERDkwMDQyQkNC
MyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU2OEM2MzYxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclBy
aW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU3QkE2MEQxQTFBN0NFQzAw
RjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIZWFwVmVyaWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NjEyOSw2ICs2MTM1LDkgQEAKIAkJCQk3MEVDQTYwNDFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeUtleS5oICovLAogCQkJCTBGQTJDMTc5MTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuY3BwICovLAogCQkJCTBGQTJDMTdBMTdEN0NGODQwMDlEMDE1RiAvKiBUZXN0
UnVubmVyVXRpbHMuaCAqLywKKwkJCQlGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dT
Y29wZS5jcHAgKi8sCisJCQkJRkUzNDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUu
aCAqLywKKwkJCQlGRTYwMjlEODFENkUxRTMzMDAzMDIwNEQgLyogVGhyb3dTY29wZUxvY2F0aW9u
LmggKi8sCiAJCQkJMEY1NTk4OTcxN0M4NkM1NjAwQTFFNTQzIC8qIFRvTmF0aXZlRnJvbVZhbHVl
LmggKi8sCiAJCQkJMEYyQjY2RDgxN0I2QjVBQjAwQTdBRTNGIC8qIFR5cGVkQXJyYXlBZGFwdG9y
cy5oICovLAogCQkJCTBGMkI2NkQ5MTdCNkI1QUIwMEE3QUUzRiAvKiBUeXBlZEFycmF5Q29udHJv
bGxlci5jcHAgKi8sCkBAIC03NjM1LDYgKzc2NDQsNyBAQAogCQkJCUJDMThDNDA1MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJEMkQz
OTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLAorCQkJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0JFMkNBRTE0RTk4NUFBMDAwNTkzQUQgLyogR0NBc3NlcnRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMDE1QThEQ0UyMDA4RjM2M0UgLyogR0NB
d2FyZUpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBQzE3QjZCNTNG
MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFkZXJzICovLApAQCAtNzY3
Niw2ICs3Njg2LDcgQEAKIAkJCQkwRkUwNTAxQTFBQTkwOTExMDBEMzNCMzMgLyogR2VuZXJpY0Fy
Z3VtZW50c0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFM0EwNkMwMUMxMTA0MUEwMDM5
MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MDhF
QkUyNDFDRThGMzU4MDA0NTMxNDYgLyogSW50bE9iamVjdElubGluZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRTA1MDFCMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMDE3QjZCNUFCMDBBN0FFM0YgLyogR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFMTE3QjZCNUFC
MDBBN0FFM0YgLyogR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MTc3LDYgKzkxODgsNyBAQAogCQkJCTBGQ0VGQUFCMTgwNEMxM0UwMDQ3MkNFNCAvKiBG
VExTYXZlUmVzdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1
MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYx
MUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUyRTZBN0IxRDZFQTYyQzAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyNUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNv
ZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2
MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDggKzEzOCwxMCBAQCBjaGFyKiBuZXdUeXBlZEFy
cmF5V2l0aFNpemUoRXhlY1N0YXRlKiBlCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAg
ICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIikpKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4
ZWMsIHN0cnVjdHVyZSwgc2l6ZSkpOwpAQCAtNzI1LDEyICs3MjcsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZQogICAgIAogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1
ZSBiYXNlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKICAgICBKU1ZhbHVlIGFyZ3Vt
ZW50ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudCk7CiAgICAgCiAgICAgaWYgKCFi
YXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIEpTU3RyaW5nKiBpbnB1dCA9IGFyZ3VtZW50LnRvU3RyaW5nT3JOdWxs
KGV4ZWMpOwogICAgIGlmICghaW5wdXQpCkBAIC03NjksMTIgKzc3MiwxMyBAQCBzaXplX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25SZWdFeHBUZXN0CiAgICAgCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1Zh
bHVlIGJhc2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50KTsKIAogICAgIGlmICghYmFz
ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTMzLDkgKzkzNywxMCBAQCBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXpl
IDwgMCkpCi0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFy
cmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIikpKSk7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKIAogICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZSgqdm0sIGFycmF5U3RydWN0dXJlLCBzaXplKTsKICAg
ICByZXN1bHQtPmJ1dHRlcmZseSgpOyAvLyBFbnN1cmUgdGhhdCB0aGUgYmFja2luZyBzdG9yZSBp
cyBpbiB0by1zcGFjZS4KQEAgLTEzODgsOSArMTM5MywxMCBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTWFrZVJvcGUyCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90
PihsZWZ0LT5sZW5ndGgoKSwgcmlnaHQtPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTQwMSw5ICsxNDA3
LDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTMKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGEtPmxlbmd0aCgpLCBiLT5sZW5ndGgoKSwgYy0+
bGVuZ3RoKCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC0xNDE0LDYgKzE0MjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3RyQ2F0MihFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNTdHJpbmcqIHN0cjEgPSBKU1ZhbHVl
OjpkZWNvZGUoYSkudG9TdHJpbmcoZXhlYyk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
IC8vIEltcG9zc2libGUsIHNpbmNlIHdlIG11c3QgaGF2ZSBiZWVuIGdpdmVuIHByaW1pdGl2ZXMu
CkBAIC0xNDIxLDcgKzE0MjksNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3Ry
Q2F0MihFCiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICBpZiAoc3VtT3ZlcmZs
b3dzPGludDMyX3Q+KHN0cjEtPmxlbmd0aCgpLCBzdHIyLT5sZW5ndGgoKSkpIHsKLSAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0
MzIsNiArMTQ0MCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBKU1N0cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhl
eGVjKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ug
d2UgbXVzdCBoYXZlIGJlZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0NDEsNyArMTQ1MCw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQzKEUKICAgICBBU1NFUlQoIXZt
LmV4Y2VwdGlvbigpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVu
Z3RoKCksIHN0cjItPmxlbmd0aCgpLCBzdHIzLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1NDUsNyAr
MTU1NCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKLSAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYywgc2NvcGUpOwogfQogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
U2l6ZU9mVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1
bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCkBAIC0xNzMyLDEzICsxNzQyLDE0IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAg
ICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8oZ2V0
UHV0SW5mb0JpdHMpOwogICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9
PSBUaHJvd0lmTm90Rm91bmQpCi0gICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICB9CiAKQEAgLTE3NDYsNyArMTc1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3Rh
dGljYWxseSBwcm92ZSB3ZSBuZWVkIGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNo
ZWNrIG9uIHRoZSBzbG93IHBhdGguCiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaWRlbnQpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBqc1REWlZh
bHVlKCkpIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMTc2MCw2ICsxNzcxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dER5bmFtaWNWYQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpOwogICAgIEdldFB1dEluZm8gZ2V0UHV0SW5m
byhnZXRQdXRJbmZvQml0cyk7CkBAIC0xNzcxLDEzICsxNzgzLDEzIEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXREeW5hbWljVmEKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Qoc2Nv
cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogICAgICAgICBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KHNjb3BlLCBleGVjLCBp
ZGVudCwgc2xvdCk7CiAgICAgICAgIGlmIChzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA9PSBq
c1REWlZhbHVlKCkpIHsKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9
PSBUaHJvd0lmTm90Rm91bmQgJiYgIWhhc1Byb3BlcnR5KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBp
ZGVudCkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsOSArOTUsMTIgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6
ZXZhbHVhdGUoRQogCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHNjcmlwdFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1
ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmly
c3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4i
KSk7CiAKICAgICBTdHJpbmcgcHJvZ3JhbSA9IHNjcmlwdFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMDcsNyArMTEw
LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaQogICAgIEpTT2Jq
ZWN0KiBzY29wZUV4dGVuc2lvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldE9iamVjdCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gSlNDOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjLCBt
YWtlU291cmNlKHByb2dyYW0pLCBzY29wZUV4dGVuc2lvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03NywxMjAgKzc3LDE1NiBAQCB2b2lkIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90
eXBlOjpmaW5pCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlw
dEhvc3RQcm90b3R5cGVBdHRyaWJ1dGVFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVj
dGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5ldmFsdWF0ZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0
b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmludGVybmFsQ29uc3RydWN0
b3JOYW1lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXNIVE1MQWxsQ29sbGVjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pc0hUTUxBbGxDb2xsZWN0aW9uKGV4ZWMpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZUZ1bmN0aW9uV2Vha01hcFNpemUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVj
dGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlw
dEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
d2Vha01hcFNpemUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwRW50cmllcyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwRW50cmllcyhleGVjKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbldlYWtTZXRTaXplKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtT
ZXRTaXplKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldEVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25JdGVyYXRvckVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2Ny
aXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3Qq
Pih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aXRlcmF0
b3JFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0
ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25TdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
SW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhc3RlZFRoaXMtPnN1YnR5cGUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkRldGFp
bHMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwog
ICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+ZnVuY3Rpb25EZXRhaWxzKGV4ZWMp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9z
dFByb3RvdHlwZUZ1bmN0aW9uR2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPmdldEludGVybmFsUHJvcGVydGllcyhleGVjKSk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3Jp
cHRDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3
LDkgKzc3LDEyIEBAIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6fkpTSmF2YVNjcmlwdENhbGwKIAog
SlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9u
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFs
dWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTSmF2
YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVu
dCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdp
dGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAog
ICAgIFN0cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtODksNyArOTIsNyBAQCBKU1Zh
bHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXCiAgICAgSlNPYmplY3QqIHNjb3Bl
RXh0ZW5zaW9uID0gZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBpbXBsKCkuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oc2NyaXB0LCBzY29wZUV4
dGVuc2lvbiwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzYsMTEwICs3NiwxNDMgQEAgdm9pZCBKU0ph
dmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGU6OmZpbgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZUZ1bmN0aW9uRXZhbHVhdGVXaXRo
U2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxs
RnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5ldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0
aW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnNjb3BlRGVzY3JpcHRpb25z
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVBdHRyaWJ1dGVDYWxsZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENh
bGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5jYWxsZXIoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0ph
dmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+c291cmNlSUQoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUxpbmUoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5saW5lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVDb2x1bW4oRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jb2x1bW4oZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9u
TmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmZ1bmN0aW9uTmFtZShleGVj
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZy
YW1lQXR0cmlidXRlU2NvcGVDaGFpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNj
cmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2Fs
bEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PnNjb3BlQ2hhaW4oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVRoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT50aGlzT2JqZWN0KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUeXBlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+dHlwZShleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lSXNUYWlsRGVsZXRlZChFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzVGFpbERlbGV0ZWQoZXhlYykpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5o
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FjaGVkQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMiArNDQsMTUgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAsIG1faW50ZXJwcmV0ZXIoY2FsbEZyYW1lLT5pbnRlcnByZXRl
cigpKQogICAgICAgICAgICAgLCBtX2VudHJ5U2NvcGUoY2FsbEZyYW1lLT52bSgpLCBmdW5jdGlv
bi0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCkpCiAgICAgICAgIHsKKyAgICAgICAgICAgIFZNJiB2
bSA9IG1fZW50cnlTY29wZS52bSgpOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUt
PnZtKCkuaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KHZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50
cy5yZXNpemUoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9p
bnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgp
LCBjYWxsRnJhbWUsICZtX3Byb3RvQ2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJndW1lbnRDb3VudCAr
IDEsIGZ1bmN0aW9uLT5zY29wZSgpLCBtX2FyZ3VtZW50cy5kYXRhKCkpOwogICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNj
b3BlKTsKICAgICAgICAgICAgIG1fdmFsaWQgPSAhY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKTsK
ICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAxMCwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJs
b28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMjcsNiArMTI3LDkgQEAgU3RyaW5nIFN0YWNr
RnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIAogCiBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1
bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0xMzQsMTAg
KzEzNywxMCBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgaWYgKCFw
cm9ncmFtLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBwcm9ncmFtOwogCi0gICAgVG9wQ2Fs
bEZyYW1lU2V0dGVyIHRvcENhbGxGcmFtZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZSk7Cisg
ICAgVG9wQ2FsbEZyYW1lU2V0dGVyIHRvcENhbGxGcmFtZSh2bSwgY2FsbEZyYW1lKTsKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKLSAgICAgICAg
Y2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlRXZhbEVycm9y
KGNhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3Io
Y2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KICAgICBTdHJpbmcgcHJvZ3JhbVNv
dXJjZSA9IGFzU3RyaW5nKHByb2dyYW0pLT52YWx1ZShjYWxsRnJhbWUpOwpAQCAtMTgxLDcgKzE4
NCw3IEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgLy8gSWYgdGhlIGxpdGVyYWwgcGFyc2VyIGJhaWxlZCwgaXQgc2hvdWxk
IG5vdCBoYXZlIHRocm93biBleGNlcHRpb25zLgotICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
dm0oKS5leGNlcHRpb24oKSk7CisgICAgICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAg
ICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNh
bGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29u
dGV4dCwgcHJvZ3JhbVNvdXJjZSwgY2FsbGVyU2NvcGVDaGFpbik7CiAKQEAgLTE5MCwxNyArMTkz
LDIwIEBAIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB9CiAKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxlckZyYW1lLT50aGlzVmFsdWUoKTsKLSAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjYWxsRnJhbWUtPnZtKCkuaW50ZXJwcmV0ZXI7CisgICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyID0gdm0uaW50ZXJwcmV0ZXI7CiAgICAgcmV0dXJuIGludGVy
cHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29wZUNo
YWluKTsKIH0KIAogdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIFZN
JiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cy5pc0NlbGwoKSkpIHsKICAg
ICAgICAgaWYgKGFyZ3VtZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIAotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxG
cmFtZSwgYXJndW1lbnRzKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgc2Nv
cGUsIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBh
cmd1bWVudHMpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAtMjE1LDcgKzIy
MSw3IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnIKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTdHJpbmdUeXBlOgogICAgIGNhc2UgU3ltYm9sVHlwZToKLSAgICAg
ICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxp
ZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0
aW9uQXBwbHlQYXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsICBhcmd1bWVudHMpKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CkBAIC0yMzcsMjEgKzI0MywyNSBAQCB1
bnNpZ25lZCBzaXplT2ZWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyCiAKIHVuc2lnbmVkIHNpemVG
cmFtZUZvckZvcndhcmRBcmd1bWVudHMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZNJiB2bSwgdW5z
aWduZWQgbnVtVXNlZFN0YWNrU2xvdHMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNhbGxlZUZyYW1lRm9yVmFy
YXJncyhjYWxsRnJhbWUsIG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKICAgICBpZiAo
VU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVy
cygpKSkpCi0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CisgICAg
ICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogCiAgICAgcmV0
dXJuIGxlbmd0aDsKIH0KIAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgVk0mIHZtLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0
YWNrU2xvdHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQogeworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVP
ZlZhcmFyZ3MoY2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAK
ICAgICBDYWxsRnJhbWUqIGNhbGxlZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxG
cmFtZSwgbnVtVXNlZFN0YWNrU2xvdHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWShs
ZW5ndGggPiBtYXhBcmd1bWVudHMgfHwgIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoY2FsbGVl
RnJhbWUtPnJlZ2lzdGVycygpKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTgyMiwxNSArODMyLDE2
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKIHsKICAgICBKU1Nj
b3BlKiBzY29wZSA9IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZSgpOwogICAg
IFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOworICAgIEFTU0VS
VCghdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1
c3koKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxv
Y2soKSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQogICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0g
ICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxG
cmFtZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRo
ZSAicHJvZ3JhbSIgaXMgYWN0dWFsbHkganVzdCBhIEpTT04gb2JqZWN0LiBJZiBzbywKICAgICAv
LyB3ZSdsbCBoYW5kbGUgdGhlIEpTT04gb2JqZWN0IGhlcmUuIEVsc2UsIHdlJ2xsIGhhbmRsZSBy
ZWFsIEpTIGNvZGUKQEAgLTg3MSwyMiArODgyLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBKU09OUFBh
dGhbaV0ubV9wYXRoRW50cnlOYW1lLCBzbG90KSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZW50cnkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVVbmRlZmluZWRW
YXJpYWJsZUVycm9yKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oY2Fs
bEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGNhbGxGcmFt
ZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdvdG8gZmFpbGVkSlNPTlA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUs
IEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChj
YWxsRnJhbWUsIEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlTG9va3Vw
OiB7CiAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3QgPSBiYXNlT2JqZWN0LmdldChjYWxs
RnJhbWUsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU09OUFBhdGhbaV0ubV9wYXRoSW5kZXgpKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTg5OSwyOSArOTEwLDI5IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoUHJvZ3JhbUV4ZWMKICAgICAgICAgICAgIHN3aXRjaCAoSlNP
TlBQYXRoLmxhc3QoKS5tX3R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlU
eXBlQ2FsbDogewogICAgICAgICAgICAgICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBiYXNlT2JqZWN0
LmdldChjYWxsRnJhbWUsIEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lKTsKLSAgICAg
ICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAg
ICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
ICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2Fs
bERhdGEpOwogICAgICAgICAgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlv
bihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGNhbGxGcmFtZSwgZnVuY3Rpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikp
OwogICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGpzb25Bcmc7CiAgICAgICAg
ICAgICAgICAganNvbkFyZy5hcHBlbmQoSlNPTlBWYWx1ZSk7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBKU09OUFBhdGguc2l6ZSgpID09IDEgPyBqc1VuZGVmaW5lZCgpOiBi
YXNlT2JqZWN0OwogICAgICAgICAgICAgICAgIEpTT05QVmFsdWUgPSBKU0M6OmNhbGwoY2FsbEZy
YW1lLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGpzb25BcmcpOwot
ICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgSlNPTlBQYXRoRW50cnlUeXBlRG90OiB7CiAgICAgICAgICAg
ICAgICAgYmFzZU9iamVjdC5wdXQoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEVu
dHJ5TmFtZSwgSlNPTlBWYWx1ZSwgc2xvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFt
ZS0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBh
dGhFbnRyeVR5cGVMb29rdXA6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dEJ5SW5k
ZXgoY2FsbEZyYW1lLCBKU09OUFBhdGgubGFzdCgpLm1fcGF0aEluZGV4LCBKU09OUFZhbHVlLCBz
bG90LmlzU3RyaWN0TW9kZSgpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC05NDEsMTggKzk1MiwyMCBAQCBmYWlsZWRKU09O
UDoKIAogICAgIC8vIENvbXBpbGUgc291cmNlIHRvIGJ5dGVjb2RlIGlmIG5lY2Vzc2FyeToKICAg
ICBpZiAoSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRp
ZXModm0sIGNhbGxGcmFtZSwgc2NvcGUpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihj
YWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2Nv
cGUsIGVycm9yKSk7CiAKICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewog
ICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIGlmIChKU09iamVjdCog
ZXJyb3IgPSBwcm9ncmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihj
YWxsRnJhbWUsIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jaykpCi0g
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNl
cHRpb24oY2FsbEZyYW1lLCBlcnJvcikpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBwcm9n
cmFtLT5wcmVwYXJlRm9yRXhlY3V0aW9uPFByb2dyYW1FeGVjdXRhYmxlPihjYWxsRnJhbWUsIG51
bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEFTU0VS
VCghdGhyb3dTY29wZS5leGNlcHRpb24oKSB8fCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGpz
RHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4oZXJyb3IpKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBlcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8UHJvZ3JhbUNv
ZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChVTkxJS0VMWSh2bS5z
aG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUp
OwogCiAgICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKQEAgLTk3MSw2
ICs5ODQsOCBAQCBmYWlsZWRKU09OUDoKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxs
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNhbGxU
eXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2Fs
bEZyYW1lLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3ko
KSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtOTkzLDEzICsxMDA4LDE0IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIAogICAgIFZNRW50cnlT
Y29wZSBlbnRyeVNjb3BlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwog
CiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAg
ICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwg
anNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29k
ZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNh
bGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOwor
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1l
LCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2Rl
QmxvY2spOwogICAgICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0g
ZmFsc2U7CkBAIC0xMDA3LDcgKzEwMjMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRl
Q2FsbChDYWxsRnJhCiAgICAgICAgIG5ld0NvZGVCbG9jayA9IDA7CiAKICAgICBpZiAoVU5MSUtF
TFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1
cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJv
d1Njb3BlKTsKIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3Rv
Q2FsbEZyYW1lLmluaXQobmV3Q29kZUJsb2NrLCBmdW5jdGlvbiwgdGhpc1ZhbHVlLCBhcmdzQ291
bnQsIGFyZ3MuZGF0YSgpKTsKQEAgLTEwMTUsMTEgKzEwMzEsMTIgQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIHsKICAg
ICAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKLSAgICAgICAgaWYgKGlzSlNDYWxsKQorICAgICAg
ICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxEYXRhLmpzLmZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS0+ZXhlY3V0ZSgmdm0sICZw
cm90b0NhbGxGcmFtZSk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUodm1FbnRyeVRvTmF0aXZlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNhbGxEYXRh
Lm5hdGl2ZS5mdW5jdGlvbiksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBp
ZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIGlmICh0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVsbCgpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTAzMCwxMiArMTA0NywxNCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlQ2FsbChDYWxsRnJhCiBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1
Y3QoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlLCBjb25zdCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsKICAgICBWTSYgdm0gPSBj
YWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+aGFkRXhjZXB0aW9uKCkpOwogICAgIEFT
U0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwogICAgIC8vIFdlIHRocm93IGluIHRoaXMgY2Fz
ZSBiZWNhdXNlIHdlIGhhdmUgdG8gcmV0dXJuIHNvbWV0aGluZyAidmFsaWQiIGJ1dCB3ZSdyZQog
ICAgIC8vIGFscmVhZHkgaW4gYW4gaW52YWxpZCBzdGF0ZS4KICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIGJvb2wgaXNK
U0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBK
U1Njb3BlKiBzY29wZSA9IG51bGxwdHI7CkBAIC0xMDU0LDEzICsxMDczLDEzIEBAIEpTT2JqZWN0
KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKIAogICAgIFZNRW50cnlTY29wZSBlbnRy
eVNjb3BlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgaWYg
KGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAg
ICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPihjYWxsRnJhbWUs
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLCBzY29wZSwgQ29kZUZvckNvbnN0cnVj
dCwgbmV3Q29kZUJsb2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkK
LSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4
Y2VwdGlvbihjYWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxl
RXJyb3IpKTsKIAogICAgICAgICBBU1NFUlQoISFuZXdDb2RlQmxvY2spOwogICAgICAgICBuZXdD
b2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID0gZmFsc2U7CkBAIC0xMDY4LDcgKzEw
ODcsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgICAg
IG5ld0NvZGVCbG9jayA9IDA7CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRl
cm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIFByb3Rv
Q2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobmV3Q29k
ZUJsb2NrLCBjb25zdHJ1Y3RvciwgbmV3VGFyZ2V0LCBhcmdzQ291bnQsIGFyZ3MuZGF0YSgpKTsK
QEAgLTEwOTUsNiArMTExNCw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0
cnVjdCgKIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBlYXRDYWxs
KEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlLCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvQ2FsbEZyYW1lLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKU1Njb3BlKiBzY29wZSwgSlNWYWx1
ZSogYXJncykKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24o
KSk7CiAgICAgCiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgpKQpAQCAtMTEwNCw3ICsxMTI0
LDcgQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogICAgIENvZGVC
bG9jayogbmV3Q29kZUJsb2NrOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwg
ZnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKICAgICBpZiAoZXJy
b3IpIHsKLSAgICAgICAgY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwg
ZXJyb3IpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVy
cm9yKTsKICAgICAgICAgcmV0dXJuIENhbGxGcmFtZUNsb3N1cmUoKTsKICAgICB9CiAgICAgbmV3
Q29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTEyMCw3ICsx
MTQwLDggQEAgQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvcgogSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlKSAKIHsKICAg
ICBWTSYgdm0gPSAqY2xvc3VyZS52bTsKLSAgICAKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkp
OwogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKQEAgLTExMjksNyArMTE1MCw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKICAgICBTdGFja1N0YXRzOjpD
aGVja1BvaW50IHN0YWNrQ2hlY2tQb2ludDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRU
cmlnZ2VyVGVybWluYXRpb24oY2xvc3VyZS5vbGRDYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2xvc3Vy
ZS5vbGRDYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNsb3N1cmUuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgY2xvc3VyZS5wcm90b0NhbGxGcmFtZSk7
CkBAIC0xMTQwLDcgKzExNjEsOCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxG
cmFtZUNsCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTU2NvcGUqIHNjb3Bl
KQogewogICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKLSAgICAKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVChzY29wZS0+dm0oKSA9
PSAmY2FsbEZyYW1lLT52bSgpKTsKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKQEAgLTExNTAsNyArMTE3Miw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKIAogICAgIFZNRW50cnlTY29wZSBl
bnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSgh
dm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7ICAgICAgICAKKyAgICAgICAgcmV0
dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJv
d1Njb3BlKSk7CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMgPSBldmFsLT5udW1WYXJpYWJs
ZXMoKTsKICAgICBpbnQgbnVtRnVuY3Rpb25zID0gZXZhbC0+bnVtYmVyT2ZGdW5jdGlvbkRlY2xz
KCk7CkBAIC0xMTgxLDcgKzEyMDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhCiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNP
YmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb248RXZhbEV4ZWN1
dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJs
b2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAgICAg
IHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsKICAg
ICAgICAgY29kZUJsb2NrID0ganNDYXN0PEV2YWxDb2RlQmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsK
ICAgICB9CiAKQEAgLTExOTIsNyArMTIxNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT52YXJpYWJsZShpKTsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZN
SW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6Omdl
dE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgaWRl
bnQsIHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGds
b2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGlkZW50LmltcGwoKSksICInIikpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xv
YmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEyMDAsNyArMTIyMiw3IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAgICAgICAgICBpZiAoSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwgc2xvdCkpIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2
YWw6ICciLCBTdHJpbmcoZnVuY3Rpb24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCB0
aHJvd1Njb3BlLCBtYWtlU3RyaW5nKCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJp
YWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTIyOSw3ICsxMjUxLDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIH0KIAogICAgIGlm
IChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJh
bWUsIHRocm93U2NvcGUpOwogCiAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgogCkBAIC0xMjQ1LDYgKzEyNjcsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhCiBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCiB7CiAgICAgVk0m
IHZtID0gKnNjb3BlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkp
OwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwpAQCAtMTI1NSwxOSArMTI3OCwxOSBAQCBK
U1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKE1vZHVsZVByb2dyCiAKICAgICBWTUVudHJ5U2Nv
cGUgZW50cnlTY29wZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtF
TFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpCi0gICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSkpOworICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2Nv
cGUpKTsKIAogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAg
ICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKICAgICAgICAgSlNPYmplY3QqIGNvbXBp
bGVFcnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29k
ZUJsb2NrKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKLSAgICAgICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNvbXBpbGVFcnJvcikpOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4odGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjb21waWxlRXJyb3IpKTsK
ICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqPih0ZW1w
Q29kZUJsb2NrKTsKICAgICB9CiAKICAgICBpZiAoVU5MSUtFTFkodm0uc2hvdWxkVHJpZ2dlclRl
cm1pbmF0aW9uKGNhbGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0
ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKIAogICAgIGlmIChz
Y29wZS0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNj
b3BlLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDYgKzg5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgog
ewogICAgIC8vIFdlIHBhc3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxs
ZnJhbWUgaGFzbid0IGJlZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgVk1F
bnRyeUZyYW1lKiB2bUVudHJ5RnJhbWUgPSB2bS0+dG9wVk1FbnRyeUZyYW1lOwogICAgIENhbGxG
cmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwpAQCAt
OTgsNDMgKzk5LDQ4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YK
ICAgICB9CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0s
IHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxlckZyYW1lKTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwg
c2NvcGUpOwogfQogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRocm93RGl2aWRlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2
bSk7CisKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJh
bWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1lKHZtRW50
cnlGcmFtZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIo
dm0sIHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBl
cnJvclNjb3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBjcmVh
dGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6ZXJvIG9yIGRp
dmlzaW9uIG92ZXJmbG93LiIpKSk7CisgICAgdGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIHNj
b3BlLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJEaXZpc2lvbiBieSB6
ZXJvIG9yIGRpdmlzaW9uIG92ZXJmbG93LiIpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvd091dE9mQm91bmRzQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKCp2bSk7CisKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BW
TUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZy
YW1lKHZtRW50cnlGcmFtZSk7CiAKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9y
ZSB0cmFjZXIodm0sIHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwogICAgIEVycm9ySGFuZGxp
bmdTY29wZSBlcnJvclNjb3BlKCp2bSk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGNhbGxlckZy
YW1lLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRlcmFsKCJPdXQtb2YtYm91bmRz
IGFjY2Vzcy4iKSkpOworICAgIHRocm93RXhjZXB0aW9uKGNhbGxlckZyYW1lLCBzY29wZSwgY3Jl
YXRlRXJyb3IoY2FsbGVyRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiT3V0LW9mLWJvdW5kcyBhY2Nlc3Mu
IikpKTsKIH0KICNlbmRpZgogCiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2FsbEFy
aXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAKICAgICBpbnQzMl90
IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAq
dm0sIENvZGVGb3JDYWxsKTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAg
ICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAg
ICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJh
bWUpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0s
IHZtRW50cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsZXJGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxl
ckZyYW1lLCBzY29wZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAg
LTE0MywxMyArMTQ5LDE0IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJp
dHkKIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgaW50MzJfdCBtaXNzaW5nQXJn
Q291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgKnZtLCBDb2RlRm9y
Q29uc3RydWN0KTsKICAgICBpZiAobWlzc2luZ0FyZ0NvdW50IDwgMCkgewogICAgICAgICBWTUVu
dHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50b3BWTUVudHJ5RnJhbWU7CiAgICAgICAgIENh
bGxGcmFtZSogY2FsbGVyRnJhbWUgPSBleGVjLT5jYWxsZXJGcmFtZSh2bUVudHJ5RnJhbWUpOwog
ICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXJXaXRoUmVzdG9yZSB0cmFjZXIodm0sIHZtRW50
cnlGcmFtZSwgY2FsbGVyRnJhbWUpOwotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsZXJGcmFtZSk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1l
LCBzY29wZSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKQEAgLTI1NCw5
ICsyNjEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAg
IAogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOwotICAgIAorICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKCp2bSk7CisKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJh
c2UpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJ
blBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0yODMsMTEgKzI5MSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7Ci0gICAgCisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwog
ICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOwogCiAgICAgaWYgKCFiYXNlLT5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlk
SW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC03OTQsNiArODAzLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKIApAQCAtODE5
LDcgKzgyOSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAg
ICAgICAgfQogICAgIAogICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUp
OwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFGdW5j
dGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
LAogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBA
IC04NDYsNyArODU2LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2Fs
bAogICAgIH0KICAgICAKICAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlv
bkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpLAog
ICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg1Niw2
ICs4NjYsOCBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiB7CiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKCp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBjYWxsTGlua0lu
Zm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOwogICAgIApAQCAtODY1LDYgKzg3Nyw3IEBAIFNsb3dQYXRoUmV0dXJuVHlw
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjYWNo
ZSB0aGVzZSBraW5kcyBvZiBjYWxscy4gVGhleSBjYW4gYmUgY29tbW9uIGFuZCBjdXJyZW50bHkg
dGhleSBhcmUKICAgICAgICAgLy8gZXhwZW5zaXZlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NDU4CisgICAgICAgIHRocm93U2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgY2FsbGVl
QXNWYWx1ZSwgY2FsbExpbmtJbmZvKTsKICAgICB9CiAKQEAgLTg5Miw3ICs5MDUsNyBAQCBTbG93
UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoZXhlYywgY2FsbGVlKSk7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAog
ICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC05MDAsOCArOTEz
LDkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogCiAgICAgICAg
IENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxv
Y2soKTsKICAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVw
YXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oZXhlY0NhbGxlZSwgY2FsbGVlLCBz
Y29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOworICAgICAgICBBU1NFUlQodGhyb3dTY29wZS5l
eGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7CiAgICAg
ICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBlcnJvcik7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KAogICAgICAgICAgICAg
ICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRv
cikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC05MjcsNiArOTQxLDggQEAgaW5saW5l
IFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kID0gY2FsbExpbmtJbmZvLT5zcGVjaWFsaXphdGlv
bktpbmQoKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKIApA
QCAtOTQ3LDcgKzk2Myw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldp
dGgKICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAg
ICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJp
bGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCkgewotICAgICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVj
dG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5j
dGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAg
ICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdl
bmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTU2LDcgKzk3Miw3
IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgICAg
IENvZGVCbG9jayoqIGNvZGVCbG9ja1Nsb3QgPSBleGVjQ2FsbGVlLT5hZGRyZXNzT2ZDb2RlQmxv
Y2soKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KGV4ZWNDYWxsZWUsIGZ1bmN0
aW9uLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwogICAgICAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJv
cik7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXJy
b3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAg
ICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVy
YXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpAQCAtOTY0LDcgKzk4MCw3IEBA
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgdmlydHVhbEZvcldpdGgKICAgICAgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5k
KSkgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JF
cnJvcihleGVjLCBmdW5jdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1
bHQoCiAgICAgICAgICAgICAgICAgICAgIHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJv
bUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEtlZXBUaGVGcmFtZSkpOwpA
QCAtMTEzOSw5ICsxMTU1LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmUKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgUmVnRXhwKiByZWdleHAgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihyZWdleHBQdHIpOwog
ICAgIGlmICghcmVnZXhwLT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnZXhwLT5lcnJvck1lc3NhZ2UoKSkpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgcmVnZXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApAQCAtMTE1Niw5ICsxMTc0LDEwIEBAIFVudXNl
ZFB0ciBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhbmRsZVcKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtF
TFkodm0uc2hvdWxkVHJpZ2dlclRlcm1pbmF0aW9uKGV4ZWMpKSkKLSAgICAgICAgdm0udGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVRlcm1pbmF0ZWRFeGVj
dXRpb25FeGNlcHRpb24oJnZtKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTExNjcs
MTMgKzExODYsMTUgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhdGljRQog
ewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgZXJyb3JNZXNzYWdlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChlcnJvck1lc3NhZ2VWYWx1ZS5pc1N0cmlu
ZygpKTsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gYXNTdHJpbmcoZXJyb3JNZXNzYWdlVmFs
dWUpLT52YWx1ZShleGVjKTsKICAgICBpZiAocmVmZXJlbmNlRXJyb3JGbGFnKQotICAgICAgICB2
bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBlcnJvck1l
c3NhZ2UpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOwogICAgIGVsc2UKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EZWJ1ZyhFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgZGVidWdIb29rSUQpCkBAIC0xODcxLDEz
ICsxODkyLDE0IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQKIHsK
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSku
dG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCFiYXNlT2JqKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iaiwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHVpZCkpOwog
ICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICByZXR1cm4g
Y291bGREZWxldGU7CiB9CiAKQEAgLTE4OTAsNiArMTkxMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlbGV0ZUJ5VmEKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogYmFzZU9iaiA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkudG9PYmplY3QoZXhlYyk7CiAgICAgSlNWYWx1ZSBr
ZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CkBAIC0xOTA5LDcgKzE5MzIsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWxldGVCeVZhCiAgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBl
eGVjLCBwcm9wZXJ0eSk7CiAgICAgfQogICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29k
ZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKQEAgLTIwMjYsNiArMjA0
OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgSW5z
dHJ1Y3Rpb24qIHBjID0gYnl0ZWNvZGVQQzsKIApAQCAtMjAzOSw3ICsyMDY0LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc2NvcGUtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5k
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7
CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RG
b3VuZCkKLSAgICAgICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihl
eGVjLCBpZGVudCkpOwogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAg
IH0KIApAQCAtMjA0OCw3ICsyMDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogICAgICAgICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3Zl
IHdlIG5lZWQgYSBURFogY2hlY2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNs
b3cgcGF0aC4KICAgICAgICAgICAgIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQp
OwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBqc1REWlZhbHVlKCkpIHsKLSAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVERaRXJy
b3IoZXhlYykpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0yMDY1LDYgKzIwOTAsOCBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnN0cnVjdGlvbiogcGMg
PSBieXRlY29kZVBDOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKQEAgLTIwOTIsMjAgKzIxMTksMjAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dFRvU2NvcGUoRQogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsK
ICAgICAgICAgaWYgKHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkg
ewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpF
cnJvcihleGVjKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3Bl
LCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RG
b3VuZCAmJiAhaGFzUHJvcGVydHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlh
YmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHNjb3BlLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0LCBpc0luaXRpYWxpemF0aW9uKGdldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpKTsKICAgICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNj
b3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNsb3QpOwogICAgIAotICAgIGlmIChleGVjLT52bSgp
LmV4Y2VwdGlvbigpKQorICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoZXhlYywgY29k
ZUJsb2NrLCBwYywgc2NvcGUsIGdldFB1dEluZm8sIHNsb3QsIGlkZW50KTsKQEAgLTIxMTUsOSAr
MjE0MiwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsK
IAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEV4
Y2VwdGlvblZhbHVlKTsKLSAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFs
dWUpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb25WYWx1ZSk7CiAK
ICAgICAvLyBSZXN1bHRzIHN0b3JlZCBvdXQtb2YtYmFuZCBpbiB2bS50YXJnZXRNYWNoaW5lUENG
b3JUaHJvdyAmIHZtLmNhbGxGcmFtZUZvckNhdGNoCiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhl
Yyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDggQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQkVHSU5fTk9fU0VU
X1BDKCkgXAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7ICAgICAgXAotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKQorICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsgXAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pCiAKICNpZm5kZWYgTkRFQlVHCiAjZGVmaW5lIExMSU5UX1NFVF9QQ19GT1JfU1RV
QlMoKSBkbyB7IFwKQEAgLTkyLDE0ICs5MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKICNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCAw
KQogCiAjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
blRvVGhyb3cpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHRocm93U2NvcGUsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICBcCiAgICAgICAgIHBjID0gcmV0
dXJuVG9UaHJvdyhleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKICNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBkb0V4Y2VwdGlvbkZ1enpp
bmdJZkVuYWJsZWQoZXhlYywgIkxMSW50U2xvd1BhdGhzIiwgcGMpOyAgICBcCi0gICAgICAgIGlm
IChVTkxJS0VMWSh2bS5leGNlcHRpb24oKSkpIHsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKSB7ICAgICAgICAgXAogICAgICAg
ICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAgICAgICBcCiAgICAg
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApA
QCAtMTUyLDcgKzE1Myw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCiAj
ZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRocm93RXhjZXB0
aW9uKF9fY3RfZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHRocm93RXhjZXB0aW9uKF9fY3RfZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJv
dyk7ICAgICAgICBcCiAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoMCwgY2FsbFRvVGhyb3co
X19jdF9leGVjKSk7ICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoZmFsc2UpCiAKQEAg
LTE2MCw3ICsxNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKICAgICAg
ICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjQ2FsbGVlID0gKGV4ZWND
YWxsZWUpOyAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZG9FeGNlcHRpb25GdXp6aW5n
SWZFbmFibGVkKF9fY2NlX2V4ZWMsICJMTEludFNsb3dQYXRocy9jYWxsIiwgbnVsbHB0cik7IFwK
LSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0NB
TExfRU5EX0lNUEwoMCwgY2FsbFRvVGhyb3coX19jY2VfZXhlY0NhbGxlZSkpOyAgICAgIFwKICAg
ICB9IHdoaWxlIChmYWxzZSkKIApAQCAtNDY2LDYgKzQ2Nyw4IEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHJlcGxhY2UpCiBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFja19jaGVjaykKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgVk1FbnRyeUZyYW1lKiB2bUVudHJ5RnJhbWUgPSB2bS50b3BWTUVu
dHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxlckZyYW1l
KHZtRW50cnlGcmFtZSk7CiAgICAgaWYgKCFjYWxsZXJGcmFtZSkgewpAQCAtNDgyLDkgKzQ4NSw5
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIGRhdGFMb2dGKCJOdW0g
Y2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVl
TG9jYWxzKTsKICAgICBkYXRhTG9nRigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpLT5tX251bVZhcnMpOwogCi0gICAgZGF0YUxvZ0YoIkN1cnJlbnQgT1Mgc3RhY2sgZW5kIGlz
IGF0ICVwLlxuIiwgZXhlYy0+dm0oKS5zb2Z0U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigi
Q3VycmVudCBPUyBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCB2bS5zb2Z0U3RhY2tMaW1pdCgpKTsK
ICNpZiAhRU5BQkxFKEpJVCkKLSAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5k
IGlzIGF0ICVwLlxuIiwgZXhlYy0+dm0oKS5jbG9vcFN0YWNrTGltaXQoKSk7CisgICAgZGF0YUxv
Z0YoIkN1cnJlbnQgQyBMb29wIHN0YWNrIGVuZCBpcyBhdCAlcC5cbiIsIHZtLmNsb29wU3RhY2tM
aW1pdCgpKTsKICNlbmRpZgogCiAjZW5kaWYKQEAgLTUwMiw3ICs1MDUsNyBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzdGFja19jaGVjaykKICNlbmRpZgogCiAgICAgRXJyb3JIYW5kbGluZ1Njb3Bl
IGVycm9yU2NvcGUodm0pOwotICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1l
KTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsZXJGcmFtZSwgdGhyb3dTY29wZSk7
CiAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGNhbGxlckZyYW1lKTsKICAgICBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKTsKIH0KQEAgLTc4NCwxMCArNzg3LDExIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxk
RGVsZXRlKSk7CiB9CiAKLWlubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQorc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBnZXRCeVZhbChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1
YnNjcmlwdC5pc1N0cmluZygpKSkgewotICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
ICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSk7CiAgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1
Y3R1cmUpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0
aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0
cmluZyhleGVjKSkgewpAQCAtODA2LDEwICs4MTAsMTAgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlW
YWwoRXhlY1N0YXRlKiBleGVjLAogICAgIH0KIAogICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0
Q29lcmNpYmxlKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAo
c2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGF1
dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKLSAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9w
ZXJ0eSk7CiB9CkBAIC04MTcsNyArODIxLDcgQEAgaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhl
Y1N0YXRlKiBleGVjLAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0
X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpKSk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92
YWwsIGdldEJ5VmFsKHZtLCBleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKTsKIH0KIAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV92YWwpCkBAIC04MjcsNiArODMxLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YQogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCk7CiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgYm9vbCBp
c1N0cmljdE1vZGUgPSBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCk7CiAgICAgCiAg
ICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwpAQCAtODM1LDE2ICs4NDAsMTYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YQogICAgICAgICAgICAgaWYgKG9iamVjdC0+
Y2FuU2V0SW5kZXhRdWlja2x5KGkpKQogICAgICAgICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhR
dWlja2x5KHZtLCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaSwgdmFsdWUsIGlz
U3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBMTElOVF9FTkQoKTsKICAgICAgICAgfQotICAgICAg
ICBiYXNlVmFsdWUucHV0QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwg
dmFsdWUsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAogICAg
IGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKLSAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoYmFzZVZhbHVlLCBpc1N0cmljdE1vZGUpOwogICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywg
cHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICBMTElOVF9FTkQoKTsKIH0KQEAgLTExODYsNiAr
MTE5MSw3IEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwKICAgICAK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CiAgICAgZXhlY0Nh
bGxlZS0+Y2xlYXJSZXR1cm5QQygpOwpAQCAtMTIzOCwxOCArMTI0NCwyMCBAQCBzdGF0aWMgU2xv
d1BhdGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWND
YWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogI2lmIExMSU5UX1NMT1df
UEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZ0YoIlBlcmZvcm1pbmcgY2FsbCB3aXRoIHJlY29yZGVk
IFBDID0gJXBcbiIsIGV4ZWMtPmN1cnJlbnRWUEMoKSk7CiAjZW5kaWYKICAgICAKICAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsK
LSAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgIGlmICghY2FsbGVlQXNGdW5jdGlv
bkNlbGwpIHsKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBo
YW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7Ci0gICAg
CisgICAgfQogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gY2FsbGVlLT5zY29wZVVu
Y2hlY2tlZCgpOwotICAgIFZNJiB2bSA9ICpzY29wZS0+dm0oKTsKICAgICBFeGVjdXRhYmxlQmFz
ZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwogCiAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvZGVQdHI7CkBAIC0xMzM1LDEyICsxMzQzLDE0IEBAIGlubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXgKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jYWxsKQogewogICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHRocm93U2NvcGUu
cmVsZWFzZSgpOwogICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwp
OwogfQogCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0KQogewogICAg
IExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAg
IHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAKQEAg
LTE0OTgsNiArMTUwOCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5kbGVfZXhjZXB0aW9uKQogewogICAg
IExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBnZW5lcmljVW53aW5kKCZ2bSwgZXhlYyk7CiAgICAgTExJTlRfRU5EX0lNUEwoKTsKIH0K
QEAgLTE1MDUsNyArMTUxNiw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9oYW5k
bGVfZXgKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJvbV9zY29wZSkKIHsK
ICAgICBMTElOVF9CRUdJTigpOwotCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOwogICAgIEpTT2JqZWN0
KiBzY29wZSA9IGpzQ2FzdDxKU09iamVjdCo+KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CiAgICAg
R2V0UHV0SW5mbyBnZXRQdXRJbmZvKHBjWzRdLnUub3BlcmFuZCk7CkBAIC0xNTE2LDcgKzE1MjYs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgTExJTlRf
UkVUVVJOKHNjb3BlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3Vu
ZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKCFmb3VuZCkg
ewogICAgICAgICAgICAgaWYgKGdldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSA9PSBUaHJvd0lmTm90
Rm91bmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0xNTI1LDcgKzE1MzUsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2Zyb21fCiAgICAgICAgICAgICAvLyBXaGVuIHdl
IGNhbid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBwZXJm
b3JtIHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpzVERa
VmFsdWUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVH
bG9iYWwoZXhlYywgdm0sIHBjLCBzY29wZSwgc2xvdCwgaWRlbnQpOwpAQCAtMTU4Miw5ICsxNTky
LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF90b19zYwogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9h
bmRfbm90aWZ5X3Byb2ZpbGVyKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgUkVMRUFTRV9B
U1NFUlQoISF2bS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoISF0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKIAotICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
dm0uZXhjZXB0aW9uKCkpKQorICAgIGlmIChpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSkpOwogICAgIExMSU5U
X1JFVFVSTl9UV08ocGMsIDApOwogfQpAQCAtMTYxOSw5ICsxNjI5LDExIEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJh
bWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFt
ZTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgaWYg
KCFleGVjKQogICAgICAgICBleGVjID0gcHJvdG9GcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCk7Ci0gICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcs
IDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNy0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3Au
Y29tKQogICoKQEAgLTczLDE4ICs3MywyMCBAQCB2b2lkIEFycmF5Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlv
bnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJh
eVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBw
cm9maWxlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxlbmd0aCwgSlNW
YWx1ZSBuZXdUYXJnZXQpCitKU1ZhbHVlIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVj
U3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBpZiAoIWxlbmd0aC5pc051bWJlcigpKQogICAgICAgICByZXR1cm4g
Y29uc3RydWN0QXJyYXlOZWdhdGl2ZUluZGV4ZWQoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0
LCAmbGVuZ3RoLCAxLCBuZXdUYXJnZXQpOwogICAgIAogICAgIHVpbnQzMl90IG4gPSBsZW5ndGgu
dG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKG4gIT0gbGVuZ3RoLnRvTnVtYmVyKGV4ZWMpKQotICAg
ICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2gg
cG9zaXRpdmUgaW50ZWdlci4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBzaXpl
IGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CiAgICAgcmV0dXJu
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgcHJvZmlsZSwgZ2xvYmFsT2JqZWN0LCBuLCBuZXdU
YXJnZXQpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5l
d1RhcmdldCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVp
cmsoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBKU1ZhbHVlIG5ld1Rhcmdl
dCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwNy0yMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1
ZGUgIlRocm93U2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDcgKzYxLDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERh
dGEmKTsKIH07CiAKLUpTT2JqZWN0KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0
YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBs
ZW5ndGgsIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKK0pTVmFsdWUgY29uc3RydWN0
QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSosIEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFs
dWUoKSk7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHJ1Y3RvclBy
aXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCkBAIC02OCw2ICs2OSw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlDb25zdHIKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXkKIGlubGluZSBib29sIGlzQXJyYXko
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFyZ3VtZW50VmFsdWUpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoIWFyZ3VtZW50VmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC04MSw3ICs4NSw3IEBAIGlubGluZSBib29sIGlzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBKU1YKIAogICAgICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3Qq
Pihhcmd1bWVudCk7CiAgICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNBcnJheSBjYW5u
b3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkuaXNB
cnJheSBjYW5ub3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGFyZ3VtZW50
ID0gcHJveHktPnRhcmdldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjUsNiArMjY1LDkgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJ
bgogdGVtcGxhdGU8SlNBcnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lk
IHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVkIGhlYWRl
ciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5zaWduZWQg
bGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudENvdW50
ID4gcmVzdWx0Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0gY3VycmVudENvdW50IC0gcmVz
dWx0Q291bnQ7CiAKQEAgLTI4NiwxNCArMjg5LDE0IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGgKICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUo
ZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNP
YmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCB0bykpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsg
ayA+IGxlbmd0aCAtIGNvdW50OyAtLWspIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsg
LSAxKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkp
IHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzAyLDYgKzMwNSw5IEBAIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGgKIHRlbXBsYXRlPEpTQXJyYXk6OlNoaWZ0Q291bnRNb2RlIHNoaWZ0
Q291bnRNb2RlPgogdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNP
YmosIHVuc2lnbmVkIGhlYWRlciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1
bHRDb3VudCwgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0Q291bnQgPiBjdXJyZW50Q291bnQpOwogICAgIHVuc2lnbmVkIGNvdW50ID0g
cmVzdWx0Q291bnQgLSBjdXJyZW50Q291bnQ7CiAKQEAgLTMxMCw3ICszMTYsNyBAQCB2b2lkIHVu
c2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogCiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0
IG92ZXJmbG93LgogICAgIGlmIChjb3VudCA+IChVSU5UX01BWCAtIGxlbmd0aCkpIHsKLSAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMjcsOCAr
MzMzLDggQEAgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIAogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIHRoaXNPYmotPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgdG8sIHZhbHVlLCB0
cnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRl
bGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMzYxLDcgKzM2Nyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgY3VzdG9tSm9pbkNhc2Ug
PSB0cnVlOwogCiAgICAgaWYgKFVOTElLRUxZKGN1c3RvbUpvaW5DYXNlKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0
ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09i
amVjdCksICJdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOwogCiAgICAgLy8gNC4gUmV0dXJuIHRoZSBy
ZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0aG9kIG9mIGZ1bmMgcHJv
dmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0eSBhcmd1bWVudHMgbGlz
dC4KICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlw
ZTo6SG9zdCB8fCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gIT0gYXJyYXlQcm90b0Z1bmNKb2lu
KQpAQCAtNjc0LDYgKzY4MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0YKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1BvcChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsKIAogICAgIGlmIChp
c0pTQXJyYXkodGhpc1ZhbHVlKSkKQEAgLTY5NCw4ICs3MDMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChl
eGVjLCBsZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
aWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgcHV0TGVuZ3RoKGV4ZWMsIHRoaXNPYmosIGpzTnVtYmVyKGxl
bmd0aCAtIDEpKTsKQEAgLTc0MCwxMSArNzQ5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0YKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0
TW9kZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdldExlbmd0aChleGVjLCB0aGlzT2JqZWN0KTsKICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC04MTIsNyArODIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
dm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgbG93ZXIpKSB7CiAg
ICAgICAgICAgICBpZiAoIXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KIApAQCAtODIyLDcgKzgzMyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
IXRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmplY3QsIGV4ZWMsIHVwcGVyKSkgewogICAgICAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtOTAyLDYgKzkxMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0YKICAgICAvLyAxNS40LjQuMTIKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlNP
YmplY3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9k
ZSkudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCF0aGlzT2JqKQpAQCAtOTY2LDcgKzk3OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
dm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIGRlbGV0ZUNvdW50KTsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgZGVs
ZXRlQ291bnQ7ICsraykgewogICAgICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGdldFByb3BlcnR5
KGV4ZWMsIHRoaXNPYmosIGsgKyBiZWdpbik7CkBAIC0xMTIzLDYgKzExMzUsOCBAQCBzdGF0aWMg
Ym9vbCBtb3ZlRWxlbWVudHMoRXhlY1N0YXRlKiBleGVjCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBjb25jYXRBcHBlbmRPbmUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGZpcnN0
LCBKU1ZhbHVlIHNlY29uZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBBU1NFUlQoIWlzSlNBcnJheShzZWNvbmQpKTsKICAgICBBU1NFUlQoIXNo
b3VsZFVzZVNsb3dQdXQoZmlyc3QtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgQnV0dGVyZmx5KiBm
aXJzdEJ1dHRlcmZseSA9IGZpcnN0LT5idXR0ZXJmbHkoKTsKQEAgLTExMzUsNyArMTE0OSw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjb25jYXRBcHBlbmRPbmUoRXgKICAgICBTdHJ1Y3R1cmUq
IHJlc3VsdFN0cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OmNyZWF0ZSh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5
U2l6ZSArIDEpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAo
IXJlc3VsdC0+YXBwZW5kTWVtY3B5KGV4ZWMsIHZtLCAwLCBmaXJzdCkpIHsKICAgICAgICAgaWYg
KCFtb3ZlRWxlbWVudHMoZXhlYywgdm0sIHJlc3VsdCwgMCwgZmlyc3QsIGZpcnN0QXJyYXlTaXpl
KSkgewpAQCAtMTE1NCw2ICsxMTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvUAogewogICAgIEFTU0VSVChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMik7CiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAKICAgICBKU0FycmF5KiBmaXJzdEFycmF5ID0ganNDYXN0PEpTQXJyYXkqPihl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAKQEAgLTExOTcsNyArMTIxMiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b1AKICAgICBTdHJ1Y3R1cmUqIHJlc3Vs
dFN0cnVjdHVyZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKHR5cGUpOwogICAgIEpTQXJyYXkqIHJlc3Vs
dCA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIHJlc3VsdFN0cnVjdHVyZSwg
Zmlyc3RBcnJheVNpemUgKyBzZWNvbmRBcnJheVNpemUpOwogICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAodHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAg
ICAgZG91YmxlKiBidWZmZXIgPSByZXN1bHQtPmJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91Ymxl
KCkuZGF0YSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Qm9vbGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4
LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTY4LDYgKzY4LDcgQEAgdm9pZCBCb29sZWFuUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbihWTQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlID09IGpzQm9v
bGVhbihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3Ry
aW5ncy5mYWxzZVN0cmluZygpKTsKQEAgLTc2LDcgKzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBib29sZWFuUHJvdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZt
LT5zbWFsbFN0cmluZ3MudHJ1ZVN0cmluZygpKTsKIAogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBpZiAoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSA9
PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZtLT5z
bWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKSk7CkBAIC04NywxMiArODgsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNCb29s
ZWFuKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAg
IGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKEJvb2xlYW5PYmplY3Q6OmluZm8oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzQm9v
bGVhbk9iamVjdCh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVlKCkpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2RlZmluZSBFTkRfSU1QTCgpIFJFVFVSTl9UV08ocGMsIGV4ZWMpCiAKICNkZWZpbmUgVEhS
T1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgIFwK
KyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOyAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvblRvVGhy
b3cpOyAgICAgIFwKICAgICAgICAgUkVUVVJOX1RPX1RIUk9XKGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKQEAgLTE0MCwxMyAr
MTQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNkZWZpbmUgQ0FMTF9FTkRfSU1QTChleGVjLCBj
YWxsVGFyZ2V0KSBSRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQogCi0jZGVmaW5lIENB
TExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgIEV4ZWNTdGF0ZSogY3RFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEluc3RydWN0aW9uKiBjdFBDID0gKHBj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIENBTExfRU5EX0lNUEwoY3RFeGVjLCBMTEludDo6Y2FsbFRvVGhyb3coY3RF
eGVjKSk7ICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoZmFsc2UpCi0KICNkZWZpbmUgQ0FM
TF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgRXhlY1N0YXRlKiBjY2VFeGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGNjZVBDID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsOCArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0Zv
cihFeGVjU3RhdAogCiBpbmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
cm9wTmFtZSwgSlNWYWx1ZSBiYXNlVmFsKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghYmFzZVZh
bC5pc09iamVjdCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZVZhbCkpOworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3Io
ZXhlYywgYmFzZVZhbCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC04NSw3
ICs4Nyw3IEBAIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHUKICAgICAg
ICAgcmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIGkpOwogCiAgICAgYXV0byBwcm9w
ZXJ0eSA9IHByb3BOYW1lLnRvUHJvcGVydHlLZXkoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPnZtKCku
ZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIGJhc2VPYmotPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5KTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRoc0V4Y2Vw
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRoc0V4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHNFeGNlcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNyArMzgsOSBAQCB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihF
eGVjU3RhdGUqCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMs
IGVycm9yKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOworCisg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKTsKICNpZiBMTElOVF9TTE9XX1BB
VEhfVFJBQ0lORwogICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAiLCB2bS0+ZXhjZXB0
aW9uKCksICIuXG4iKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NywxMCArMzcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbnN0cnVjdG9yT2JqZWN0LCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBl
ID0gZ2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7CiAg
ICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIAogICAgIHJldHVybiBj
b25zdHJ1Y3QoZXhlYywgY29uc3RydWN0b3JPYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVj
dERhdGEsIGFyZ3MsIGNvbnN0cnVjdG9yT2JqZWN0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmls
ZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMjAsOSAr
MzIwLDEwIEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXQKIAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGZvcm1hdGVEYXRlSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBE
YXRlVGltZUZvcm1hdCBmb3JtYXQsIGJvb2wgYXNVVENWYXJpYW50KQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7CiAK
QEAgLTUyMiwxMyArNTIzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9JU09T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIERhdGVJbnN0YW5jZSog
dGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBpZiAoIXN0ZDo6
aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJ
bnZhbGlkIERhdGUiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBEYXRlIikpKTsK
IAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IHRoaXNE
YXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdyZWdvcmlhbkRh
dGVUaW1lKQpAQCAtNTY4LDkgKzU3MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5j
ZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRo
aXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlQW5kVGltZSkpOwpAQCAtNTc4
LDkgKzU4MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0ZVN0
cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+
aW50ZXJuYWxOdW1iZXIoKSwgTG9jYWxlRGF0ZSkpOwpAQCAtNTg4LDkgKzU5MiwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvTG9jYWxlVGltZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmb3JtYXRMb2Nh
bGVEYXRlKGV4ZWMsIHRoaXNEYXRlT2JqLCB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSwg
TG9jYWxlVGltZSkpOwpAQCAtNTk4LDEzICs2MDMsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90b3R5cGVb
U3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4i
KTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1
ZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0g
ZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4
cGVjdGVkIGEgZmlyc3QgYXJndW1lbnQuIik7CiAKICAgICBKU1ZhbHVlIGhpbnRWYWx1ZSA9IGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdHlw
ZSA9IHRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZShleGVjLCBoaW50VmFsdWUpOwpAQCAtNjE5LDE4
ICs2MjUsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNl
KHRoaXNWYWx1ZSk7IAogCkBAIC02NDIsOSArNjUwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRl
UHJvdG9GdW5jR2V0VVRDRnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC02NTYsOSArNjY1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TW9u
dGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0
ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02NzAsOSArNjgwLDEwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDTW9udGgoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7IAogCkBAIC02ODQsOSArNjk1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTY5OCw5ICs3MTAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVP
YmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzEyLDkgKzcyNSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsgCiAKQEAgLTcyNiw5ICs3NDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90
b0Z1bmNHZXRVVENEYXkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNl
OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3Rh
bmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NDAs
OSArNzU1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMt
PnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFz
RGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCkBAIC03NTQsOSArNzcwLDEwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNW
YWx1ZSk7IAogCkBAIC03NjgsOSArNzg1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0TWludXRlcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFu
Y2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc4Miw5
ICs4MDAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmog
PSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzk2LDkgKzgxNSwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogCkBAIC04MTAsOSArODMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VVRDU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTgyNCw5ICs4NDUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaWxsaVNl
Y29uZHMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlz
RGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogICAgIGRvdWJsZSBtaWxsaSA9
IHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpOwpAQCAtODQwLDkgKzg2MiwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRo
aXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5z
dGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVy
bmFsTnVtYmVyKCk7CkBAIC04NTYsOSArODc5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0VGltZXpvbmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC04NzAsOSArODk0LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGlt
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg4NCw5ICs5MDksMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbnVt
QXJnc1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRl
SW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBE
YXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAg
ICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTkyMyw5
ICs5NDksMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHNldE5ld1ZhbHVlRnJvbVRpbQogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgbnVtQXJnc1RvVXNlLCBXVEY6OlRpbWVUeXBlIGlucHV0VGltZVR5cGUpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhp
c1ZhbHVlKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewpAQCAtMTAzNSw5ICsx
MDYyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0WWVhcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0o
KSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIERhdGVJbnN0
YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwpAQCAtMTA3OCw5
ICsxMTA2LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0WWVhcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTEwOTQsNiArMTEyMyw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBqc0Nh
c3Q8SlNPYmplY3QqPih0aGlzVmFsdWUudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMTEyLDEzICsxMTQyLDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvSVNPVmFsdWUsIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90
IGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIikpOwogCiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0KHRvSVNPVmFsdWUpLCBjYWxs
VHlwZSwgY2FsbERhdGEsIG9iamVjdCwgZXhlYy0+ZW1wdHlMaXN0KCkpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEg
cHJpbWl0aXZlIHZhbHVlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJ0b0lTT1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1p
dGl2ZSB2YWx1ZSIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk4LDM0ICsxOTgsMzQgQEAgYm9vbCBoYXNFcnJvckluZm8oRXhlY1N0YXRl
KiBleGVjLCBKU09iagogICAgICAgICB8fCBlcnJvci0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhleGVjLCBzb3VyY2VVUkxQcm9wZXJ0eU5hbWUpKTsKIH0KIAotSlNP
YmplY3QqIHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitKU09iamVjdCog
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUp
CiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoImNhbGxpbmcg
IiwgY29uc3RydWN0b3JOYW1lLCAiIGNvbnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQi
KSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJj
YWxsaW5nICIsIGNvbnN0cnVjdG9yTmFtZSwgIiBjb25zdHJ1Y3RvciB3aXRob3V0IG5ldyBpcyBp
bnZhbGlkIikpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
KQorSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2UpCitKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlM
aXRlcmFsIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywg
U3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtZXNzYWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQog
Ci1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCog
dGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewot
ICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKKyAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiU3ludGF4IGVycm9yIikpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOworICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwog
fQogCiBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9u
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAogCkBAIC03MSwyMSAr
NzIsMjEgQEAgSlNPYmplY3QqIGFkZEVycm9ySW5mbyhFeGVjU3RhdGUqLCBKU09iagogLy8gTWV0
aG9kcyB0byB0aHJvdyBFcnJvcnMuCiAKIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCBjcmVhdGUg
YW4gdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggYSBkZWZhdWx0IG1lc3NhZ2UuCi1KU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSopOwotSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
VHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLUpTX0VY
UE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSopOwotSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJy
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJu
IHN0YXRlLT52bSgpLnRocm93RXhjZXB0aW9uKHN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKHN0YXRl
LCBlcnJvck1lc3NhZ2UpKTsgfQorSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93Q29u
c3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhy
b3dTY29wZSYsIGNvbnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CitKU19FWFBPUlRfUFJJVkFU
RSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKK2lubGluZSBKU09iamVjdCogdGhyb3dSYW5nZUVycm9yKEV4
ZWNTdGF0ZSogc3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgeyByZXR1cm4gdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywg
d3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCi1pbmxpbmUgdm9pZCB0aHJvd1ZNRXJy
b3IoRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0
aHJvd1ZNRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcikpOyB9Ci1p
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7IH0KLWlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRl
cmFsIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIGVycm9yTWVzc2FnZSkpOyB9Ci1pbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5
cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7
IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNUmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93UmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSB2b2lkIHRo
cm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBFeGNlcHRpb24q
IGV4Y2VwdGlvbikgeyB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsgfQor
aW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93
U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIGVycm9yKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOyB9Citp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9
CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2Up
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSog
c3RhdGUsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihzdGF0ZSwgc2NvcGUsIGVycm9y
TWVzc2FnZSkpOyB9CiAKIGNsYXNzIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbiA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKIHByaXZhdGU6CkBAIC0xMDksNyArMTEwLDkgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0VGhy
b3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc3RhdGljX2Nhc3Q8U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpLT5tX21lc3NhZ2UpOworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpOwogICAgIH0KIApAQCAtMTIxLDcgKzEyNCw5IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5
cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxs
ZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlv
bio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDEyICs2NywxNSBAQCB2b2lkIEVycm9yUHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbihWTSYgCiAvLyBFQ01BLTI2MiA1LjEsIDE1LjExLjQuNAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIC8vIDEuIExldCBPIGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAKICAgICAvLyAyLiBJZiBUeXBlKE8p
IGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoIXRo
aXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKIAogICAgIC8vIEd1YXJkIGFn
YWluc3QgcmVjdXJzaW9uIQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uRnV6ei5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uRnV6ei5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwxNyAr
MzgsMTggQEAgdW5zaWduZWQgbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCkgewogLy8gQ2Fs
bCB0aGlzIG9ubHkgaWYgeW91IGtub3cgdGhhdCBleGNlcHRpb24gZnV6emluZyBpcyBlbmFibGVk
Lgogdm9pZCBkb0V4Y2VwdGlvbkZ1enppbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiB3
aGVyZSwgdm9pZCogcmV0dXJuUEMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKE9wdGlvbnM6
OnVzZUV4Y2VwdGlvbkZ1enooKSk7CiAKLSAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MoZXhl
Yy0+dm0oKS5oZWFwKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0Modm0uaGVhcCk7CiAg
ICAgCiAgICAgc19udW1iZXJPZkV4Y2VwdGlvbkZ1enpDaGVja3MrKzsKICAgICAKICAgICB1bnNp
Z25lZCBmaXJlVGFyZ2V0ID0gT3B0aW9uczo6ZmlyZUV4Y2VwdGlvbkZ1enpBdCgpOwogICAgIGlm
IChmaXJlVGFyZ2V0ID09IHNfbnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKSB7CiAgICAgICAg
IHByaW50ZigiSlNDIEVYQ0VQVElPTiBGVVpaOiBUaHJvd2luZyBmdXp6IGV4Y2VwdGlvbiB3aXRo
IGNhbGwgZnJhbWUgJXAsIHNlZW4gaW4gJXMgYW5kIHJldHVybiBhZGRyZXNzICVwLlxuIiwgZXhl
Yywgd2hlcmUsIHJldHVyblBDKTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbigK
LSAgICAgICAgICAgIGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhjZXB0
aW9uIEZ1enoiKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CiAgICAgfQogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjg5
LDIzICsyODksMjMgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEV4ZWNTdGF0ZSogZXhlYwog
ICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ2Fubm90IGFjY2VzcyB1bmlu
aXRpYWxpemVkIHZhcmlhYmxlLiIpOwogfQogCi1KU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IoZXhlYykpOwogfQogCi1KU09iamVjdCogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0
YXRlKiBleGVjKQorSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgcmV0dXJuIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
ZXhlYykpOwogfQogCi1KU09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKLSAg
ICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbigmdm0pKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oJnZtKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC01Miw5
ICs1Myw5IEBAIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihFeGVjU3QKIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYpOwogSlNTdHJpbmcqIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlKTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihFeGVjU3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKik7CitKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSos
IFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBK
U09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIFRo
cm93U2NvcGUmKTsKIAogCiBjbGFzcyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2
ICsyNjgsNyBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29w
ZSogc2NvcGUsIEpTT2JqZWN0KiYgZXhjZXB0aW9uKQogewogICAgIFZNKiB2bSA9IHNjb3BlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAog
ICAgIEFTU0VSVCh2bS0+aGVhcC5pc0RlZmVycmVkKCkpOwogICAgIEFTU0VSVChzdGFydENvbHVt
bigpICE9IFVJTlRfTUFYKTsKQEAgLTMxOSw4ICszMjAsOCBAQCBDb2RlQmxvY2sqIFNjcmlwdEV4
ZWN1dGFibGU6Om5ld0NvZGVCbG9jCiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVj
dXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygpLCBmaXJzdExpbmUoKSwgCiAgICAgICAgIGxh
c3RMaW5lKCksIHN0YXJ0Q29sdW1uKCksIGVuZENvbHVtbigpKTsgCiAgICAgaWYgKCF1bmxpbmtl
ZENvZGVCbG9jaykgewotICAgICAgICBleGNlcHRpb24gPSB2bS0+dGhyb3dFeGNlcHRpb24oCi0g
ICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwKKyAgICAgICAgZXhjZXB0aW9u
ID0gdGhyb3dFeGNlcHRpb24oCisgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgdGhyb3dTY29wZSwKICAgICAgICAgICAgIGVycm9yLnRvRXJyb3JPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBleGVjdXRhYmxlLT5tX3NvdXJjZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC00MjksMjAgKzQzMCwyMyBAQCBjb25zdCBDbGFzc0luZm8gRXZhbEV4ZWN1dGFibGU6
OnNfaW5mbyA9CiAKIEV2YWxFeGVjdXRhYmxlKiBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250
ZXh0LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dG
dW5jdGlvbkNvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9i
YWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5l
dmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
ICAgICBFdmFsRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEV2YWxFeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRXZhbEV4ZWN1dGFibGUoZXhlYywg
c291cmNlLCBpc0luU3RyaWN0Q29udGV4dCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0Fycm93RnVu
Y3Rpb25Db250ZXh0LCBldmFsQ29udGV4dFR5cGUpOwotICAgIGV4ZWN1dGFibGUtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKHZtKTsK
IAogICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRFdmFsQ29kZSA9IGdsb2JhbE9i
amVjdC0+Y3JlYXRlRXZhbENvZGVCbG9jayhleGVjLCBleGVjdXRhYmxlLCB2YXJpYWJsZXNVbmRl
clREWik7CiAgICAgaWYgKCF1bmxpbmtlZEV2YWxDb2RlKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldChleGVjLT52bSgpLCBl
eGVjdXRhYmxlLCB1bmxpbmtlZEV2YWxDb2RlKTsKKyAgICBleGVjdXRhYmxlLT5tX3VubGlua2Vk
RXZhbENvZGVCbG9jay5zZXQodm0sIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwogCiAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCwgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC03Niw4ICs3NiwxMSBAQCBDYWxsVHlwZSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
CiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKIEpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIEpTVmFsdWUg
bmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxF
bmFibGVkKCkpCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVz
c2FnZSgpKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdl
KCkpKTsKICAgICByZXR1cm4gY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hl
Y2soZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBmdW5jdGlvbk5hbWUsIHNvdXJjZVVSTCwgcG9z
aXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5ld1RhcmdldCk7CiB9CiAKQEAg
LTg2LDYgKzg5LDkgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRQog
ICAgIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIAogICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVO
dW1iZXIsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUs
IEpTVmFsdWUgbmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gSG93IHdlIHN0cmlu
Z2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNvbXBhdGliaWxp
dHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKQEAgLTExNiwxNCArMTIyLDE0IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEUKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5h
bWUsICpleGVjLCBzb3VyY2UsIGV4Y2VwdGlvbiwgb3ZlcnJpZGVMaW5lTnVtYmVyKTsKICAgICBp
ZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgICAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCiAg
ICAgU3RydWN0dXJlKiBzdWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0
ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG5ld1RhcmdldCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgp
LCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVy
ZSk7CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9i
amVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwogfQogCiAvLyBFQ01BIDE1
LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBDYWxsVHlwZSBGdW5jdGlvblByb3Rv
dHlwZTo6Z2V0Q2FsbERhdGEoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVl
LmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CkBAIC0xMTIsMTkgKzExNCwy
MSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOwogICAgICAgICBpZiAob2JqZWN0
LT5pbmxpbmVUeXBlRmxhZ3MoKSAmIFR5cGVPZlNob3VsZENhbGxHZXRDYWxsRGF0YSkgewogICAg
ICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgICAgICAgICBpZiAob2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2Fs
bFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXV0byogY2xhc3NJbmZvID0gb2JqZWN0LT5jbGFzc0luZm8oKSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBjbGFzc0luZm8tPmNsYXNzTmFtZSwgIigpIHtcbiAg
ICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogfQogCiAvLyAxNS4zLjQuNSBGdW5jdGlvbi5wcm90b3R5
cGUuYmluZCAodGhpc0FyZyBbLCBhcmcxIFssIGFyZzIsIC4uLl1dKQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY0JpbmQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAvLyBMZXQgVGFyZ2V0IGJlIHRoZSB0aGlzIHZh
bHVlLgpAQCAtMTM0LDExICsxMzgsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvblBybwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEodGFyZ2V0LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIC8vIFByaW1p
dGl2ZSB2YWx1ZXMgYXJlIG5vdCBjYWxsYWJsZS4KICAgICBBU1NFUlQodGFyZ2V0LmlzT2JqZWN0
KCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAKICAgICAvLyBMZXQgQSBiZSBhIG5ldyAocG9zc2libHkg
ZW1wdHkpIGludGVybmFsIGxpc3Qgb2YgYWxsIG9mIHRoZSBhcmd1bWVudCB2YWx1ZXMgcHJvdmlk
ZWQgYWZ0ZXIgdGhpc0FyZyAoYXJnMSwgYXJnMiBldGMpLCBpbiBvcmRlci4KICAgICBzaXplX3Qg
bnVtQm91bmRBcmdzID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSA/IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSAtIDEgOiAwOwpAQCAtMTQ2LDcgKzE0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuY3Rpb25Qcm8KICAgICBpZiAobnVtQm91bmRBcmdzKSB7CiAgICAgICAgIGJv
dW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aENvbnRpZ3VvdXMpLCBudW1Cb3VuZEFyZ3MpOwogICAgICAgICBpZiAoIWJvdW5kQXJncykKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgICAgIAogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bUJvdW5kQXJnczsgKytpKQogICAgICAgICAgICAgYm91bmRBcmdzLT5pbml0aWFs
aXplSW5kZXgodm0sIGksIGV4ZWMtPmFyZ3VtZW50KGkgKyAxKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHJldmlzaW9uIDIwNTE0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOSwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODcsMTEgKzg3LDE0IEBA
IEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogYm9vbCBjYWxsU2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIGdldHRlclNldHRlciwg
SlNWYWx1ZSB2YWx1ZSwgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBH
ZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlck9iaiA9IGpzQ2FzdDxHZXR0ZXJTZXR0ZXIqPihnZXR0
ZXJTZXR0ZXIpOwogCiAgICAgaWYgKGdldHRlclNldHRlck9iai0+aXNTZXR0ZXJOdWxsKCkpIHsK
ICAgICAgICAgaWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEw
MSw3ICsxMDQsNyBAQCBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlCiAg
ICAgYXJncy5hcHBlbmQodmFsdWUpOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxs
RGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+
bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxs
KGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDExICszNjcs
MTQgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmNyZWF0ZUNvbGxhdG9yKEV4ZWNTdAogCiBKU1ZhbHVl
IEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhlY1N0YXRlJiBzdGF0ZSwgU3RyaW5nVmll
dyB4LCBTdHJpbmdWaWV3IHkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMC4zLjQgQ29tcGFy
ZVN0cmluZ3MgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAgICAgaWYgKCFtX2Nv
bGxhdG9yKSB7CiAgICAgICAgIGNyZWF0ZUNvbGxhdG9yKHN0YXRlKTsKICAgICAgICAgaWYgKCFt
X2NvbGxhdG9yKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBh
cmUgc3RyaW5ncy4iKSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gY29t
cGFyZSBzdHJpbmdzLiIpKSk7CiAgICAgfQogCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CkBAIC0zNzksNyArMzgyLDcgQEAgSlNWYWx1ZSBJbnRsQ29sbGF0b3I6OmNvbXBh
cmVTdHJpbmdzKEV4ZQogICAgIFVDaGFySXRlcmF0b3IgaXRlcmF0b3JZID0gY3JlYXRlSXRlcmF0
b3IoeSk7CiAgICAgYXV0byByZXN1bHQgPSB1Y29sX3N0cmNvbGxJdGVyKG1fY29sbGF0b3IuZ2V0
KCksICZpdGVyYXRvclgsICZpdGVyYXRvclksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGNvbXBhcmUgc3Ry
aW5ncy4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwg
Y3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmlu
Z3MuIikpKTsKICAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTYgKzEw
NiwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBlR2V0dGVyQ29tcGFy
ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEwLjMuMyBJbnRs
LkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4gTGV0
IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIEludGxDb2xsYXRvciogY29s
bGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5j
b21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIENvbGxhdG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBDb2xsYXRvciIpKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFy
ZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBhcmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2Jv
dW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5lZCwKICAgICBpZiAoIWJvdW5kQ29tcGFyZSkgewotICAg
ICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGNvbGxhdG9yLT5nbG9iYWxPYmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYg
YmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40Lgog
ICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCkBA
IC0xMzQsMTAgKzEzNiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxDb2xs
YXRvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG9yUHJvdG90eXBl
RnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAo
RUNNQS00MDIgMi4wKQogICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0
PEludGxDb2xsYXRvcio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVND
SUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3Ii
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgQ29sbGF0b3IiKSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+
cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjAsNiArNDIwLDkgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OnNldEZvcm1hdHNGcm9tUAogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbGVzLCBKU1Zh
bHVlIG9yaWdpbmFsT3B0aW9ucykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTIuMS4xIEluaXRp
YWxpemVEYXRlVGltZUZvcm1hdCAoZGF0ZVRpbWVGb3JtYXQsIGxvY2FsZXMsIG9wdGlvbnMpIChF
Q01BLTQwMiAyLjApCiAgICAgLy8gMS4gSWYgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFsaXplZElu
dGxPYmplY3RdXSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8g
Mi4gU2V0IGRhdGVUaW1lRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1ZS4K
QEAgLTQ0MCw3ICs0NDMsNiBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURh
dGVUCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbG9jYWxlT3B0OwogCiAgICAgLy8gOC4g
TGV0IG1hdGNoZXIgYmUgR2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmlu
ZyIsIMKrImxvb2t1cCIsICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgVk0mIHZtID0g
ZXhlYy52bSgpOwogICAgIFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihl
eGVjLCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAi
LCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIg
b3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CiAgICAgLy8gOS4gUmV0dXJuSWZBYnJ1cHQo
bWF0Y2hlcikuCiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODcsNyArNDg5LDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgICAgICAvLyBk
LiBMZXQgdHogYmUgQ2Fub25pY2FsaXplVGltZVpvbmVOYW1lKHR6KS4KICAgICAgICAgdHogPSBj
YW5vbmljYWxpemVUaW1lWm9uZU5hbWUob3JpZ2luYWxUeik7CiAgICAgICAgIGlmICh0ei5pc051
bGwoKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKCZleGVjLCBTdHJpbmc6OmZvcm1h
dCgiaW52YWxpZCB0aW1lIHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7Cisg
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgi
aW52YWxpZCB0aW1lIHpvbmU6ICVzIiwgb3JpZ2luYWxUei51dGY4KCkuZGF0YSgpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNjQ3LDcgKzY0OSw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBVRGF0ZVRpbWVQYXR0ZXJuR2VuZXJhdG9y
KiBnZW5lcmF0b3IgPSB1ZGF0cGdfb3BlbihkYXRhTG9jYWxlLnV0ZjgoKS5kYXRhKCksICZzdGF0
dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1h
dCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
ImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC02NjMsNyArNjY1LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVAogICAgIH0KICAgICB1ZGF0cGdfY2xvc2UoZ2VuZXJhdG9yKTsKICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiKSk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNjc0LDcgKzY3Niw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0
ZVQKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBtX2RhdGVG
b3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9ybWF0RGVsZXRlcj4o
dWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBtX2xvY2FsZS51dGY4KCkuZGF0
YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5s
ZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgo
KSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
VGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04ODMsNiArODg1LDkgQEAgSlNPYmplY3QqIEludGxEYXRl
VGltZUZvcm1hdDo6cmVzb2x2ZWRPcAogCiBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9y
bWF0KEV4ZWNTdGF0ZSYgZXhlYywgZG91YmxlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyAxMi4zLjQgRm9ybWF0RGF0ZVRpbWUgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjAp
CiAgICAgaWYgKCFtX2luaXRpYWxpemVkRGF0ZVRpbWVGb3JtYXQpIHsKICAgICAgICAgaW5pdGlh
bGl6ZURhdGVUaW1lRm9ybWF0KGV4ZWMsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwpA
QCAtODkxLDcgKzg5Niw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhl
Y1MKIAogICAgIC8vIDEuIElmIHggaXMgbm90IGEgZmluaXRlIE51bWJlciwgdGhlbiB0aHJvdyBh
IFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZGF0ZSB2
YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdCgpIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJkYXRl
IHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiKSk7CiAKICAg
ICAvLyBEZWxlZ2F0ZSByZW1haW5pbmcgc3RlcHMgdG8gSUNVLgogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwpAQCAtOTAzLDcgKzkwOCw3IEBAIEpTVmFsdWUgSW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1MKICAgICAgICAgdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0
LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBudWxscHRyLCAmc3Rh
dHVzKTsKICAgICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBkYXRl
IHZhbHVlIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSIpKTsKIAogICAgIHJldHVy
biBqc1N0cmluZygmZXhlYywgU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCkpOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbSkKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMCw2ICsxMTEsOSBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTIuMy4zIEludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExldCBkdGYgYmUgdGhpcyBE
YXRlVGltZUZvcm1hdCBvYmplY3QuCiAgICAgSW50bERhdGVUaW1lRm9ybWF0KiBkdGYgPSBqc0R5
bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CkBAIC0x
MTcsMjMgKzEyMSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGlt
CiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGgg
RUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlmICghZHRmKQotICAgICAgICBk
dGYgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUo
KS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlu
dGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGR0ZiA9IGpzRHluYW1p
Y0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwg
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZh
dGVOYW1lKCkpKTsKIAogICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKCFk
dGYpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1l
Rm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5
cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRG
b3JtYXQgPSBkdGYtPmJvdW5kRm9ybWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3Jt
YXRdXSBpbnRlcm5hbCBzbG90IG9mIHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVm
aW5lZCwKICAgICBpZiAoIWJvdW5kRm9ybWF0KSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxP
YmplY3QoKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQogICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgQVNDSUlMaXRlcmFsKCJm
b3JtYXQiKSwgSW50bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNp
Yyk7CiAgICAgICAgIEpTQXJyYXkqIGJvdW5kQXJncyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCksIDApOwogICAgICAgICBpZiAoIWJv
dW5kQXJncykKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1l
bW9yeUVycm9yKHN0YXRlKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0ZSwgc2NvcGUpKTsKIAogICAgICAgICAvLyBjLiBMZXQg
YmYgYmUgQm91bmRGdW5jdGlvbkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJv
dW5kRm9ybWF0ID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIHN0YXRlLCBnbG9iYWxPYmpl
Y3QsIHRhcmdldE9iamVjdCwgZHRmLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0
IikpOwpAQCAtMTQ4LDE2ICsxNTEsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsRGF0ZVRpbQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICAvLyAxMi4zLjUgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXQq
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0
ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJvdmlkZSBj
b21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMuCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQogICAgIGlm
ICghZGF0ZVRpbWVGb3JtYXQpCi0gICAgICAgIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2Fz
dDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0
ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVl
UHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8
SW50bERhdGVUaW1lRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1l
KCkpKTsKIAogICAgIGlmICghZGF0ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5EYXRlVGlt
ZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERhdGVUaW1lRm9ybWF0IikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIERh
dGVUaW1lRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVG
b3JtYXQtPnJlc29sdmVkT3B0aW9ucygqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQW5keSBWYW5XYWdvbmVyICh0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20pCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwuY29tKQor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTU5LDYgKzE2MCw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckYKIHsKICAgICAvLyAxMS4xLjEgSW5pdGlh
bGl6ZU51bWJlckZvcm1hdCAobnVtYmVyRm9ybWF0LCBsb2NhbGVzLCBvcHRpb25zKSAoRUNNQS00
MDIgMi4wKQogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gSWYgbnVtYmVyRm9ybWF0IGhhcyBhbiBb
W2luaXRpYWxpemVkSW50bE9iamVjdF1dIGludGVybmFsIHNsb3Qgd2l0aCB2YWx1ZSB0cnVlLCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgLy8gMi4gU2V0IG51bWJlckZvcm1hdC5b
W2luaXRpYWxpemVkSW50bE9iamVjdF1dIHRvIHRydWUuCkBAIC0xODYsNyArMTg4LDcgQEAgdm9p
ZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+IG9wdDsKIAogICAgIC8vIDguIExldCBtYXRjaGVyIGJlIEdldE9wdGlvbihvcHRp
b25zLCAibG9jYWxlTWF0Y2hlciIsICJzdHJpbmciLCDCqyJsb29rdXAiLCAiYmVzdCBmaXQiwrss
ICJiZXN0IGZpdCIpLgotICAgIFN0cmluZyBtYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihzdGF0
ZSwgb3B0aW9ucywgc3RhdGUudm0oKS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJs
b29rdXAiLCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9v
a3VwXCIgb3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgU3RyaW5nIG1hdGNoZXIg
PSBpbnRsU3RyaW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2Nh
bGVNYXRjaGVyLCB7ICJsb29rdXAiLCAiYmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3Qg
YmUgZWl0aGVyIFwibG9va3VwXCIgb3IgXCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CiAgICAg
Ly8gOS4gUmV0dXJuSWZBYnJ1cHQobWF0Y2hlcikuCiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm47CkBAIC0yMzAsNyArMjMyLDcgQEAgdm9pZCBJbnRsTnVtYmVy
Rm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsK
ICAgICAgICAgLy8gYS4gSWYgdGhlIHJlc3VsdCBvZiBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUo
YyksIGlzIGZhbHNlLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAg
IGlmIChjdXJyZW5jeS5sZW5ndGgoKSAhPSAzIHx8ICFjdXJyZW5jeS5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQVNDSUlBbHBoYT4oKSkgewotICAgICAgICAgICAgc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1
cnJlbmN5IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiKSkpOworICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29k
ZSIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzksNyAr
MjQxLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRgogICAgIGlm
IChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICAvLyAyMi4gSWYgcyBpcyAi
Y3VycmVuY3kiIGFuZCBjIGlzIHVuZGVmaW5lZCwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9u
LgogICAgICAgICBpZiAoY3VycmVuY3kuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBtdXN0IGJlIGEgc3RyaW5nIikp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJjdXJyZW5jeSBtdXN0IGJlIGEgc3RyaW5nIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTQyMywxMSArNDI1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Y3Jl
YXRlTnVtYmVyRm9ybWEKIAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXROdW1iZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgZG91YmxlIG51bWJlcikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8v
IDExLjMuNCBGb3JtYXROdW1iZXIgYWJzdHJhY3Qgb3BlcmF0aW9uIChFQ01BLTQwMiAyLjApCiAg
ICAgaWYgKCFtX251bWJlckZvcm1hdCkgewogICAgICAgICBjcmVhdGVOdW1iZXJGb3JtYXQoc3Rh
dGUpOwogICAgICAgICBpZiAoIW1fbnVtYmVyRm9ybWF0KQotICAgICAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CiAgICAgfQogCiAgICAg
Ly8gTWFwIG5lZ2F0aXZlIHplcm8gdG8gcG9zaXRpdmUgemVyby4KQEAgLTQ0Myw3ICs0NDgsNyBA
QCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFCiAgICAgICAgIHVudW1f
Zm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBudW1iZXIsIGJ1ZmZlci5kYXRhKCks
IGxlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7CiAgICAgfQogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iKSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3Jl
YXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
IikpKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmc3RhdGUsIFN0cmluZyhidWZmZXIuZGF0YSgp
LCBsZW5ndGgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0KEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTEuMy4zIEludGwuTnVtYmVyRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXQgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgbmYgYmUgdGhpcyBO
dW1iZXJGb3JtYXQgb2JqZWN0LgogICAgIEludGxOdW1iZXJGb3JtYXQqIG5mID0ganNEeW5hbWlj
Q2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTEwNywyMiAr
MTEwLDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckYKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFuZikKLSAgICAgICAgbmYgPSBqc0R5
bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRl
LCBzdGF0ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0
ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51
bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAK
ICAgICBpZiAoIW5mKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TnVtYmVyRm9ybWF0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQucHJv
dG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOwogICAgIAogICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGb3JtYXQgPSBuZi0+Ym91bmRGb3JtYXQoKTsKICAgICAvLyAyLiBJZiBuZi5bW2JvdW5k
Rm9ybWF0XV0gaXMgdW5kZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsKLSAgICAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBuZi0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1
aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8g
Yi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBwcm9wZXJ0eSBpcyAxLgogICAgICAgICBKU0Z1
bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSwgSW50bE51bWJlckZvcm1hdEZ1bmNGb3JtYXRO
dW1iZXIsIE5vSW50cmluc2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdzID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNpZGVkKSwgMCk7
CiAgICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29wZSkpOwogCiAg
ICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1
ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwg
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBuZiwgYm91bmRBcmdzLCAxLCBBU0NJ
SUxpdGVyYWwoImZvcm1hdCIpKTsKQEAgLTEzNywxNiArMTM5LDE5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bE51bWJlckYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDExLjMuNSBJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIuMCkKICAgICBJbnRsTnVt
YmVyRm9ybWF0KiBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQq
PihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgLy8gRklYTUU6IFdvcmthcm91bmQgdG8gcHJv
dmlkZSBjb21wYXRpYmlsaXR5IHdpdGggRUNNQS00MDIgMS4wIGNhbGwvYXBwbHkgcGF0dGVybnMu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzY3OQog
ICAgIGlmICghbnVtYmVyRm9ybWF0KQotICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWND
YXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCBzdGF0
ZS0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVl
UHJpdmF0ZU5hbWUoKSkpOworICAgICAgICBudW1iZXJGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PElu
dGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkp
OwogCiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5OdW1iZXJGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBv
YmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIp
KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+cmVzb2x2ZWRP
cHRpb25zKCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYy
LDkgQEAgYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLAogCiBTdHJpbmcg
aW50bFN0cmluZ09wdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1
ZXMsIGNvbnN0IGNoYXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDkuMi45IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGUs
IHZhbHVlcywgZmFsbGJhY2spCiAgICAgLy8gRm9yIHR5cGU9InN0cmluZyIuCiAKQEAgLTE5NSw3
ICsxOTgsNyBAQCBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihFeGVjU3RhdGUmIHN0YXRlCiAgICAg
ICAgIC8vIGQuIElmIHZhbHVlcyBpcyBub3QgdW5kZWZpbmVkLCB0aGVuCiAgICAgICAgIC8vIGku
IElmIHZhbHVlcyBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgZXF1YWwgdG8gdmFsdWUsIHRo
cm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpICYm
IHN0ZDo6ZmluZCh2YWx1ZXMuYmVnaW4oKSwgdmFsdWVzLmVuZCgpLCBzdHJpbmdWYWx1ZSkgPT0g
dmFsdWVzLmVuZCgpKSB7Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIG5vdEZvdW5kKSk7CisgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgbm90
Rm91bmQpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMjA5LDYg
KzIxMiw5IEBAIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKIAogdW5z
aWduZWQgaW50bE51bWJlck9wdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIG9wdGlvbnMs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11
bSwgdW5zaWduZWQgZmFsbGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyA5LjIuOSBHZXRO
dW1iZXJPcHRpb24gKG9wdGlvbnMsIHByb3BlcnR5LCBtaW5pbXVtLCBtYXhpbXVtLCBmYWxsYmFj
aykgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgb3B0cyBiZSBUb09iamVjdChvcHRpb25z
KS4KICAgICBKU09iamVjdCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoJnN0YXRlKTsKQEAgLTIz
Myw3ICsyMzksNyBAQCB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0ZSYgc3RhCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgLy8gMS4gSWYgdmFsdWUgaXMgTmFOIG9yIGxl
c3MgdGhhbiBtaW5pbXVtIG9yIGdyZWF0ZXIgdGhhbiBtYXhpbXVtLCB0aHJvdyBhIFJhbmdlRXJy
b3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAoIShkb3VibGVWYWx1ZSA+PSBtaW5pbXVtICYmIGRv
dWJsZVZhbHVlIDw9IG1heGltdW0pKSB7Ci0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNO
YW1lKCkgKyAiIGlzIG91dCBvZiByYW5nZSIpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCAqcHJvcGVydHkucHVibGlj
TmFtZSgpICsgIiBpcyBvdXQgb2YgcmFuZ2UiKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogCkBAIC01MjQsNiArNTMwLDggQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdChFeAogewogICAgIC8vIDkuMi4xIENhbm9uaWNhbGl6ZUxvY2FsZUxpc3QgKGxv
Y2FsZXMpCiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZlY3RvcjxTdHJpbmc+IHNlZW47
CiAKQEAgLTU4Nyw3ICs1OTUsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVM
aXN0KEV4CiAKICAgICAgICAgICAgIC8vIGlpaS4gSWYgVHlwZShrVmFsdWUpIGlzIG5vdCBTdHJp
bmcgb3IgT2JqZWN0LCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgICAgICBp
ZiAoIWtWYWx1ZS5pc1N0cmluZygpICYmICFrVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUg
bXVzdCBiZSBhIHN0cmluZyBvciBvYmplY3QiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJsb2NhbGUgdmFsdWUgbXVzdCBiZSBh
IHN0cmluZyBvciBvYmplY3QiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CiAgICAgICAgICAgICB9CiAKQEAgLTYwMiw3ICs2MTAsNyBAQCBWZWN0b3I8U3RyaW5n
PiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiAgICAgICAgICAgICAvLyB2aWkuIExldCBjYW5v
bmljYWxpemVkVGFnIGJlIENhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZykuCiAgICAgICAgICAg
ICBTdHJpbmcgY2Fub25pY2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHRhZy0+
dmFsdWUoJnN0YXRlKSk7CiAgICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwo
KSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQoImludmFsaWQgbGFuZ3VhZ2Ug
dGFnOiAlcyIsIHRhZy0+dmFsdWUoJnN0YXRlKS51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0
YXRlLCBTdHJpbmc6OmZvcm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1
ZSgmc3RhdGUpLnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7CiAgICAgICAgICAgICB9CiAKQEAgLTg3MCw2ICs4NzgsOSBAQCBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiByZXNvbHZlTG9jYWxlKEV4CiAKIHN0YXRpYyBKU0FycmF5KiBsb29r
dXBTdXBwb3J0ZWRMb2NhbGVzKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2Fs
ZXMpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyA5LjIuNiBMb29rdXBTdXBwb3J0ZWRMb2NhbGVz
IChhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKQogCiAgICAgLy8gMS4gTGV0IHJM
b2NhbGVzIGJlIENyZWF0ZUFycmF5RnJvbUxpc3QocmVxdWVzdGVkTG9jYWxlcykuCkBAIC04Nzks
MTEgKzg5MCwxMCBAQCBzdGF0aWMgSlNBcnJheSogbG9va3VwU3VwcG9ydGVkTG9jYWxlcyhFCiAg
ICAgc2l6ZV90IGxlbiA9IHJlcXVlc3RlZExvY2FsZXMuc2l6ZSgpOwogCiAgICAgLy8gMy4gTGV0
IHN1YnNldCBiZSBhbiBlbXB0eSBMaXN0LgotICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmpl
Y3QoKTsKICAgICBKU0FycmF5KiBzdWJzZXQgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxp
emVkKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICBpZiAoIXN1YnNldCkgewot
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRl
cmF0b3JPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDE0ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogSlNWYWx1ZSBpdGVyYXRvck5leHQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGl0ZXJhdG9yLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIEpT
VmFsdWUgbmV4dEZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVy
dHlOYW1lcy0+bmV4dCk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIG5leHRGdW5jdGlvbiA9
IGl0ZXJhdG9yLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAg
Q2FsbERhdGEgbmV4dEZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgbmV4dEZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShuZXh0RnVuY3Rpb24sIG5leHRGdW5jdGlvbkNhbGxEYXRh
KTsKICAgICBpZiAobmV4dEZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG5leHRGdW5j
dGlvbkFyZ3VtZW50czsKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKQEAgLTUzLDcgKzU3LDcg
QEAgSlNWYWx1ZSBpdGVyYXRvck5leHQoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIikpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTg5
LDE4ICs5MywyMSBAQCBKU1ZhbHVlIGl0ZXJhdG9yU3RlcChFeGVjU3RhdGUqIGV4ZWMsIEpTCiAK
IHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3IpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4
Y2VwdGlvbigpOwogICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KLSAgICBK
U1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+cmV0dXJuS2V5d29yZCk7CisgICAgSlNWYWx1ZSByZXR1cm5GdW5jdGlvbiA9
IGl0ZXJhdG9yLmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChy
ZXR1cm5GdW5jdGlvbi5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA4LDkgKzExNSw5IEBAIHZvaWQgaXRlcmF0b3JDbG9z
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBDYWxsVHlwZSByZXR1cm5GdW5jdGlvbkNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEocmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbERhdGEp
OwogICAgIGlmIChyZXR1cm5GdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CiAg
ICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOCw3ICsxMjUsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xv
c2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgSlNWYWx1ZSBpbm5lclJlc3VsdCA9IGNhbGwo
ZXhlYywgcmV0dXJuRnVuY3Rpb24sIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUsIHJldHVybkZ1bmN0
aW9uQ2FsbERhdGEsIGl0ZXJhdG9yLCByZXR1cm5GdW5jdGlvbkFyZ3VtZW50cyk7CiAKICAgICBp
ZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlv
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNiw3ICsxMzMsNyBAQCB2b2lkIGl0
ZXJhdG9yQ2xvc2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghaW5uZXJSZXN1bHQuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9i
amVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xNDcsMTQgKzE1NCwxOCBAQCBTdHJ1Y3R1cmUqIGNy
ZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0U3RyCiAKIEpTT2JqZWN0KiBjcmVhdGVJdGVyYXRvclJl
c3VsdE9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIGJvb2wgZG9uZSkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiByZXN1bHRPYmplY3QgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPml0
ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlKCkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGly
ZWN0KGV4ZWMtPnZtKCksIGRvbmVQcm9wZXJ0eU9mZnNldCwganNCb29sZWFuKGRvbmUpKTsKLSAg
ICByZXN1bHRPYmplY3QtPnB1dERpcmVjdChleGVjLT52bSgpLCB2YWx1ZVByb3BlcnR5T2Zmc2V0
LCB2YWx1ZSk7CisgICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3Qodm0sIGRvbmVQcm9wZXJ0eU9m
ZnNldCwganNCb29sZWFuKGRvbmUpKTsKKyAgICByZXN1bHRPYmplY3QtPnB1dERpcmVjdCh2bSwg
dmFsdWVQcm9wZXJ0eU9mZnNldCwgdmFsdWUpOwogICAgIHJldHVybiByZXN1bHRPYmplY3Q7CiB9
CiAKIEpTVmFsdWUgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHN0YXRlLCBKU1ZhbHVl
IGl0ZXJhYmxlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAKICAgICBKU1ZhbHVlIGl0ZXJhdG9yRnVu
Y3Rpb24gPSBpdGVyYWJsZS5nZXQoc3RhdGUsIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0
b3JTeW1ib2wpOwogICAgIGlmIChzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CkBAIC0xNjIsNyArMTczLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJh
YmxlKEV4ZWNTdGF0ZSogcwogICAgIENhbGxEYXRhIGl0ZXJhdG9yRnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBpdGVyYXRvckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpdGVy
YXRvckZ1bmN0aW9uLCBpdGVyYXRvckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChpdGVyYXRv
ckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTcyLDcgKzE4Myw3IEBAIEpTVmFs
dWUgaXRlcmF0b3JGb3JJdGVyYWJsZShFeGVjU3RhdGUqIHMKICAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKIAogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9y
dGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEyLCAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNy0yMDA5LCAyMDEyLTIwMTMsIDIwMTUtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9z
a3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqCkBAIC03NSw2ICs3NSw5IEBAIHZvaWQgSlNBcnJh
eTo6c2V0TGVuZ3RoV3JpdGFibGUoRXhlY1N0YXQKIC8vIERlZmluZWQgaW4gRVM1LjEgMTUuNC41
LjEKIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU0FycmF5KiBhcnJheSA9IGpzQ2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKIAogICAg
IC8vIDMuIElmIFAgaXMgImxlbmd0aCIsIHRoZW4KQEAgLTEwNiw3ICsxMDksNyBAQCBib29sIEpT
QXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0CiAgICAgICAgIHVuc2lnbmVkIG5ld0xl
biA9IGRlc2NyaXB0b3IudmFsdWUoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgLy8gZC4gSWYg
bmV3TGVuIGlzIG5vdCBlcXVhbCB0byBUb051bWJlciggRGVzYy5bW1ZhbHVlXV0pLCB0aHJvdyBh
IFJhbmdlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAobmV3TGVuICE9IGRlc2NyaXB0b3Iu
dmFsdWUoKS50b051bWJlcihleGVjKSkgewotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgSlNDOjp0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBA
IC0xOTEsNiArMTk0LDkgQEAgYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmpl
YwogLy8gRUNNQSAxNS40LjUuMQogYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZKGlzVGhp
c1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC0xOTksNyArMjA1LDcgQEAgYm9v
bCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdAogICAgIGlmIChwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICB1bnNpZ25lZCBu
ZXdMZW5ndGggPSB2YWx1ZS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKHZhbHVlLnRvTnVt
YmVyKGV4ZWMpICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnNldExlbmd0aChleGVjLCBu
ZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtMzkzLDYgKzM5OSw4IEBAIGJvb2wg
SlNBcnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjphcHBl
bmRNZW1jcHkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIEpT
Qzo6SlNBcnJheSogb3RoZXJBcnJheSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNhbkZhc3RDb3B5KHZtLCBvdGhlckFycmF5KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MTgsNyArNDI2LDcgQEAgYm9vbCBKU0FycmF5Ojph
cHBlbmRNZW1jcHkoRXhlY1N0YXRlKiBleAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIWVuc3VyZUxlbmd0aCh2bSwgbmV3TGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUKGNvcHlUeXBlID09
IGluZGV4aW5nVHlwZSgpKTsKQEAgLTQzMyw2ICs0NDEsOSBAQCBib29sIEpTQXJyYXk6OmFwcGVu
ZE1lbWNweShFeGVjU3RhdGUqIGV4CiAKIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgbmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsK
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgpAQCAt
NDQxLDkgKzQ1Miw5IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywK
ICAgICAgICAgaWYgKG5ld0xlbmd0aCA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CiAgICAg
ICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAg
ICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAgICAgICAgICAgICAgIGVuc3Vy
ZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlT
dG9yYWdlKHZtKSk7CiAgICAgICAgIH0KLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChl
eGVjLT52bSgpLCBuZXdMZW5ndGgpOworICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKHZt
LCBuZXdMZW5ndGgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBB
cnJheVdpdGhVbmRlY2lkZWQ6CkBAIC00NTcsMTEgKzQ2OCwxMSBAQCBib29sIEpTQXJyYXk6OnNl
dExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICAgICAgJiYgIWlzRGVuc2VFbm91
Z2hGb3JWZWN0b3IobmV3TGVuZ3RoLCBjb3VudEVsZW1lbnRzKCkpKSkgewogICAgICAgICAgICAg
cmV0dXJuIHNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAgICAgICAgICAgICAgICAgZXhlYywg
bmV3TGVuZ3RoLCB0aHJvd0V4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0
b3JhZ2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZSh2
bSkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChuZXdMZW5ndGggPiBidXR0ZXJmbHktPnB1Ymxp
Y0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBu
ZXdMZW5ndGgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
OworICAgICAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIG5ld0xlbmd0aCkpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNDcwLDcgKzQ4MSw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoVG9DbGVhciA9IGJ1dHRlcmZseS0+cHVi
bGljTGVuZ3RoKCkgLSBuZXdMZW5ndGg7CiAgICAgICAgIHVuc2lnbmVkIGNvc3RUb0FsbG9jYXRl
TmV3QnV0dGVyZmx5ID0gNjQ7IC8vIGEgaGV1cmlzdGljLgogICAgICAgICBpZiAobGVuZ3RoVG9D
bGVhciA+IG5ld0xlbmd0aCAmJiBsZW5ndGhUb0NsZWFyID4gY29zdFRvQWxsb2NhdGVOZXdCdXR0
ZXJmbHkpIHsKLSAgICAgICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJmbHkoZXhlYy0+
dm0oKSwgbmV3TGVuZ3RoKTsKKyAgICAgICAgICAgIHJlYWxsb2NhdGVBbmRTaHJpbmtCdXR0ZXJm
bHkodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
CkBAIC00OTcsNiArNTA4LDkgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBl
eGVjLAogCiBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAg
IAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKQEAgLTU0OCw3ICs1NjIsNyBAQCBKU1Zh
bHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAg
ICAgaWYgKCFpc0xlbmd0aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
ICAgICB9CiAKQEAgLTU4MCw3ICs1OTQsNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIC8vIENhbGwgdGhl
IFtbRGVsZXRlXV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMgaW5keCBhbmQg
dHJ1ZS4KICAgICBpZiAoIWRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzLCBleGVjLCBpbmRleCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KICAgICAvLyBDYWxsIHRoZSBbW1B1dF1dIGludGVy
bmFsIG1ldGhvZCBvZiBPIHdpdGggYXJndW1lbnRzICJsZW5ndGgiLCBpbmR4LCBhbmQgdHJ1ZS4K
QEAgLTU5NCwyMyArNjA4LDI2IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhl
YykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBzdG9yZXMgdGhl
IHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJyYXk6OnB1c2go
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7Ci0gICAgICAgIGNyZWF0
ZUluaXRpYWxVbmRlY2lkZWQoZXhlYy0+dm0oKSwgMCk7CisgICAgICAgIGNyZWF0ZUluaXRpYWxV
bmRlY2lkZWQodm0sIDApOwogICAgICAgICBGQUxMVEhST1VHSDsKICAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOiB7Ci0gICAgICAgIGNvbnZlcnRVbmRlY2lkZWRG
b3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRGb3JW
YWx1ZSh2bSwgdmFsdWUpOwogICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjogewogICAgICAg
ICBpZiAoIXZhbHVlLmlzSW50MzIoKSkgewotICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFs
dWUoZXhlYy0+dm0oKSwgdmFsdWUpOworICAgICAgICAgICAgY29udmVydEludDMyRm9yVmFsdWUo
dm0sIHZhbHVlKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC02MjQsOSArNjQxLDkgQEAgdm9pZCBKU0FycmF5OjpwdXNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
bGVuZ3RoID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgs
IHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjM4LDE1ICs2NTUsMTUgQEAgdm9p
ZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogICAgICAgICBBU1NFUlQobGVuZ3Ro
IDw9IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICBpZiAobGVuZ3RoIDwgYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkgewotICAgICAgICAgICAgYnV0dGVyZmx5LT5jb250aWd1
b3VzKClbbGVuZ3RoXS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgdmFsdWUpOworICAgICAgICAgICAg
YnV0dGVyZmx5LT5jb250aWd1b3VzKClbbGVuZ3RoXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAg
ICAgICAgICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4g
TUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAg
IG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0
cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNjU2LDEzICs2NzMsMTMgQEAgdm9pZCBKU0FycmF5
OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0
aERvdWJsZTogewogICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAg
IGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoZXhlYy0+dm0oKSk7CisgICAgICAgICAgICBjb252
ZXJ0RG91YmxlVG9Db250aWd1b3VzKHZtKTsKICAgICAgICAgICAgIHB1c2goZXhlYywgdmFsdWUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvdWJsZSB2YWx1ZUFz
RG91YmxlID0gdmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaWYgKHZhbHVlQXNEb3VibGUgIT0g
dmFsdWVBc0RvdWJsZSkgewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhl
eGVjLT52bSgpKTsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwog
ICAgICAgICAgICAgcHVzaChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTY3Niw5ICs2OTMsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhf
QVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0
aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUp
OwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCkBAIC03MDMsNyArNzIwLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNo
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICAvLyBGYXN0IGNhc2UgLSBwdXNoIHdpdGhp
biB2ZWN0b3IsIGFsd2F5cyB1cGRhdGUgbV9sZW5ndGggJiBtX251bVZhbHVlc0luVmVjdG9yLgog
ICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKICAgICAgICAgaWYg
KGxlbmd0aCA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdG9yYWdl
LT5tX3ZlY3RvcltsZW5ndGhdLnNldChleGVjLT52bSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAg
ICAgICBzdG9yYWdlLT5tX3ZlY3RvcltsZW5ndGhdLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAg
ICAgICAgICAgc3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCArIDEpOwogICAgICAgICAgICAgKytz
dG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzEx
LDEwICs3MjgsMTAgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQog
CiAgICAgICAgIC8vIFB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5ndGggKDJeMzEt
MSkgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9yLgogICAgICAg
ICBpZiAoc3RvcmFnZS0+bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2Ut
Pmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1
dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAg
ICAgICAgICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMu
ZC4KICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOworICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTk2Myw2ICs5ODAsOSBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRX
aXRoQW55SW5kZXhpbmdUCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHVuc2hpZnQgY2FuIGJlIGhh
bmRsZWQsIGZhbHNlIHRvIGZhbGxiYWNrLiAgICAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50
V2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVu
c2lnbmVkIGNvdW50LCBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBzdG9yYWdlLT5sZW5ndGgoKTsKIAogICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXJ0SW5kZXggPD0gbGVuZ3RoKTsKQEAgLTk4MSwxMyArMTAwMSwxMyBAQCBib29sIEpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAgICAgICAgIHN0b3JhZ2UgPSBuZXdC
dXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyAt
PSBjb3VudDsKICAgICAgICAgc3RvcmFnZS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCAr
IGNvdW50KTsKLSAgICAgICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKGV4
ZWMtPnZtKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIHNldEJ1dHRlcmZseVdpdGhvdXRDaGFu
Z2luZ1N0cnVjdHVyZSh2bSwgbmV3QnV0dGVyZmx5KTsKICAgICB9IGVsc2UgaWYgKCFtb3ZlRnJv
bnQgJiYgdmVjdG9yTGVuZ3RoIC0gbGVuZ3RoID49IGNvdW50KQogICAgICAgICBzdG9yYWdlID0g
c3RvcmFnZS0+YnV0dGVyZmx5KCktPmFycmF5U3RvcmFnZSgpOwotICAgIGVsc2UgaWYgKHVuc2hp
ZnRDb3VudFNsb3dDYXNlKGV4ZWMtPnZtKCksIG1vdmVGcm9udCwgY291bnQpKQorICAgIGVsc2Ug
aWYgKHVuc2hpZnRDb3VudFNsb3dDYXNlKHZtLCBtb3ZlRnJvbnQsIGNvdW50KSkKICAgICAgICAg
c3RvcmFnZSA9IGFycmF5U3RvcmFnZSgpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTAwNyw2ICsxMDI3LDkg
QEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNp
Z25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1
dHRlcmZseSogYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewpAQCAtMTAyMiwxMCArMTA0NSwxMCBAQCBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZlIHRvIHdh
bGsgdGhlIGVudGlyZSBhcnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGluZyB0byBk
byBzbwogICAgICAgICAvLyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAgICAgICAg
IGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpCi0g
ICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFy
dEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAg
ICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgs
IGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAgIGlmICgh
ZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAgICAgICAg
ICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgb2xkTGVuZ3RoICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTAzNSw3ICsxMDU4
LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAgICAgICAg
ICAgICBKU1ZhbHVlIHYgPSBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghdikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRD
b3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5
U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3Vu
dFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3Rv
cmFnZSh2bSkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkTGVu
Z3RoOyBpLS0gPiBzdGFydEluZGV4OykgewpAQCAtMTA1OCwxMCArMTA4MSwxMCBAQCBib29sIEpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIC8vIFdlIG1heSBoYXZl
IHRvIHdhbGsgdGhlIGVudGlyZSBhcnJheSB0byBkbyB0aGUgdW5zaGlmdC4gV2UncmUgd2lsbGlu
ZyB0byBkbyBzbwogICAgICAgICAvLyBvbmx5IGlmIGl0J3Mgbm90IGhvcnJpYmx5IHNsb3cuCiAg
ICAgICAgIGlmIChvbGRMZW5ndGggLSBzdGFydEluZGV4ID49IE1JTl9TUEFSU0VfQVJSQVlfSU5E
RVgpCi0gICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVj
LCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0
SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG9sZExlbmd0aCArIGNvdW50KSkgewotICAg
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICBpZiAoIWVuc3Vy
ZUxlbmd0aCh2bSwgb2xkTGVuZ3RoICsgY291bnQpKSB7CisgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgICAgIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwpAQCAtMTA3MSw3
ICsxMDk0LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CiAg
ICAgICAgICAgICBkb3VibGUgdiA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKHYgIT0gdikpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVu
c3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVu
c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3Vy
ZUFycmF5U3RvcmFnZSh2bSkpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gb2xkTGVuZ3RoOyBpLS0gPiBzdGFydEluZGV4OykgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw5
IEBAIFN0cnVjdHVyZSogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpjcmUKIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9CiAgICAgICAgIGpzQ2FzdDxKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgCkBAIC05NiwxOSArOTksMjEgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIAogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShsZW5ndGgsIDEpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKSk7CiAKICAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVyU3RydWN0dXJlID0gSW50ZXJuYWxG
dW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCks
IGNvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7Ci0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFycmF5QnVmZmVyU3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZl
cikpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2
bSwgYXJyYXlCdWZmZXJTdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsQXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCAiQXJyYXlCdWZmZXIiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0
aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIiKSk7CiB9CiAKIENvbnN0cnVj
dFR5cGUgSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywx
NCArMzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24q
PihleGVjLT5jYWxsZWUoKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBvZiBzbGljZSBtdXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CiAgICAg
CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIp
KTsKICAgICAKICAgICBpbnQzMl90IGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02MCwxMSArNjMsMTEgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYQogICAgIAogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZShiZWdp
biwgZW5kKTsKICAgICBpZiAoIW5ld0J1ZmZlcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoKTsKICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBuZXdCdWZmZXIpOworICAgIEpT
QXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJl
LCBuZXdCdWZmZXIpOwogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0lubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUgIldlYWtHQ01h
cElubGluZXMuaCIKIAogI2VuZGlmIC8vIEpTQ0lubGluZXNfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA3LTIwMDgsIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk0LDYgKzk0LDggQEAgT3B0aW9uYWw8ZG91Ymxl
PiBKU1ZhbHVlOjp0b051bWJlckZyb21QcgogCiBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RT
bG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKCFpc0NlbGwoKSk7CiAKICAgICBpZiAoaXNJ
bnQzMigpIHx8IGlzRG91YmxlKCkpCkBAIC0xMDIsOCArMTA0LDcgQEAgSlNPYmplY3QqIEpTVmFs
dWU6OnRvT2JqZWN0U2xvd0Nhc2UoRXhlYwogICAgICAgICByZXR1cm4gY29uc3RydWN0Qm9vbGVh
bkZyb21JbW1lZGlhdGVCb29sZWFuKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXNWYWx1ZSgpKTsKIAog
ICAgIEFTU0VSVChpc1VuZGVmaW5lZE9yTnVsbCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwotICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhl
YywgKnRoaXMpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5P
YmplY3RFcnJvcihleGVjLCAqdGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0x
MjQsNiArMTI1LDkgQEAgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXNTbG93Q2FzZShFeGVjU3RhdAog
CiBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoaXNDZWxsKCkpIHsKICAgICAgICAgaWYg
KGlzU3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5zdHJpbmdQcm90b3R5cGUoKTsKQEAgLTEzNyw4ICsxNDEsNyBAQCBKU09iamVjdCogSlNW
YWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmJvb2xlYW5Qcm90b3R5cGUoKTsKIAogICAgIEFTU0VSVChpc1VuZGVm
aW5lZE9yTnVsbCgpKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAq
dGhpcykpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0xNDYsNiArMTQ5LDcgQEAgSlNP
YmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogYm9vbCBKU1ZhbHVlOjpwdXRU
b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkp
CiAgICAgICAgIHJldHVybiBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhlYywgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtMTYwLDcgKzE2NCw3IEBAIGJvb2wg
SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICAgICAgICAgIHByb3RvdHlw
ZSA9IG9iai0+Z2V0UHJvdG90eXBlRGlyZWN0KCk7CiAgICAgICAgICAgICBpZiAocHJvdG90eXBl
LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTcyLDcgKzE3Niw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAK
ICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAo
YXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJp
Y3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIApA
QCAtMTk2LDEyICsyMDAsMTUgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgIH0KICAgICAKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpTVmFs
dWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoKnRoaXMsIHNob3VsZFRocm93KTsKICAgICAgICAgcmV0dXJuIHB1
dFRvUHJpbWl0aXZlKGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwg
dmFsdWUsIHNsb3QpOwpAQCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgSlNWYWx1ZTo6cHV0VG9Qcmlt
aXRpdmVCeUluZGV4KEV4ZWMKICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAKICAgICBp
ZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMzM4LDEzICszNDUsMTUgQEAgYm9vbCBKU1ZhbHVlOjppc1ZhbGlk
Q2FsbGVlKCkKIAogSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UoRXhlY1N0YXRl
KiBleGVjLCBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcikgY29uc3QKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGF1dG8gZXJyb3JWYWx1ZSA9IFsmXSAoKSAtPiBKU1N0cmluZyogewogICAgICAg
ICBpZiAocmV0dXJuRW1wdHlTdHJpbmdPbkVycm9yKQogICAgICAgICAgICAgcmV0dXJuIGpzRW1w
dHlTdHJpbmcoZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH07CiAgICAgCi0g
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBBU1NFUlQoIWlzU3RyaW5nKCkpOwogICAgIGlm
IChpc0ludDMyKCkpIHsKICAgICAgICAgYXV0byBpbnRlZ2VyID0gYXNJbnQzMigpOwpAQCAtMzYz
LDcgKzM3Miw3IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Nsb3dDYXNlKEV4ZWMKICAg
ICBpZiAoaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRl
ZmluZWRTdHJpbmcoKTsKICAgICBpZiAoaXNTeW1ib2woKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3Ry
aW5nIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIHN0cmluZyIpKTsKICAgICAgICAgcmV0dXJu
IGVycm9yVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC02MzMsOCArNjMzLDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OnRvUHJpbWl0aXZlKEV4ZWMKIAogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVm
ZXJyZWRQcmltaXRpdmVUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmlu
Zy4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iKSk7CiAgICAgICAgIHJldHVybiBOb1By
ZWZlcmVuY2U7CiAgICAgfQogCkBAIC02NDksNyArNjUyLDcgQEAgaW5saW5lIFByZWZlcnJlZFBy
aW1pdGl2ZVR5cGUgdG9QcmVmZXJyZQogICAgIGlmIChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJz
dHJpbmciKSkKICAgICAgICAgcmV0dXJuIFByZWZlclN0cmluZzsKIAotICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2gg
b25lIG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiIpKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBwcmltaXRpdmUgaGludCB0
byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0cmluZycuIikpOwogICAgIHJl
dHVybiBOb1ByZWZlcmVuY2U7CiB9CiAKQEAgLTEwMzEsOSArMTAzNCwxMiBAQCBpbmxpbmUgVHJp
U3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU1Zh
bHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmICghaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBbk9i
amVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDE2ICs0NywxOCBAQCBKU0RhdGFW
aWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0
LCBieXRlTGVuZ3RoLCBzaXplb2YodWludDhfdCkpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBvZiBy
YW5nZSBvZiBidWZmZXIiKSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9m
IGJ1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBpZiAoIUFy
cmF5QnVmZmVyVmlldzo6dmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXpl
b2YodWludDhfdCkpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5dGUgb2Zmc2V0IGlzIG5vdCBh
bGlnbmVkIikpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIp
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCgKICAgICAgICAgc3RydWN0dXJl
LCBidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRh
dGFWaWV3KTsKICAgICBBU1NFUlQoY29udGV4dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMiwxMiArMTIyLDE1IEBAIFN0cnVjdHVyZSogSlNE
YXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRlU3QKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBF
bmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhl
Yy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0
aG9kIG11c3QgYmUgYSBEYXRhVmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9k
IG11c3QgYmUgYSBEYXRhVmlldyIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291
bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJOZWVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVk
IGF0IGxlYXN0IG9uZSBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQpIikpOwogICAgIAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMihl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDMsNyArMTQ2LDcgQEAg
RW5jb2RlZEpTVmFsdWUgZ2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVudFNpemUg
PiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNpemUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFT
aXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE2
NywxMiArMTcwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRlKiBleGVjKQog
dGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBq
c0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFk
YXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAg
IAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3Vt
ZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQgdmFsdWUpIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWVkIGF0IGxlYXN0IHR3byBh
cmd1bWVudCAodGhlIGJ5dGVPZmZzZXQgYW5kIHZhbHVlKSIpKTsKICAgICAKICAgICB1bnNpZ25l
ZCBieXRlT2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTk4LDcgKzIwNCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0
ZUxlbmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJPdXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJP
dXQgb2YgYm91bmRzIGFjY2VzcyIpKSk7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0y
MjAsMjcgKzIyNiwzNiBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEV4ZWNTdGF0ZSogZXhlYykK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3RvR2V0dGVyQnVmZmVy
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcg
PSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcu
cHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3
LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3Qi
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmlldy0+anNCdWZmZXIoZXhlYykpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcq
IHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0
YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9i
amVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRh
dGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBv
YmplY3QiKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+bGVu
Z3RoKCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRhVmlld1Byb3Rv
R2V0dGVyQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0RhdGFWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0RhdGFWaWV3Kj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghdmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZmZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBE
YXRhVmlldyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8IHRvIGJlIGEg
RGF0YVZpZXcgb2JqZWN0Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHZpZXctPmJ5dGVPZmZzZXQoKSkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3
ICs1MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMs
IGV4ZWMtPmNhbGxlZSgpKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVl
KCkpKTsKIH0KIAogY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OnNfaW5mbyA9IHsgIkZ1bmN0
aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Z1bmN0aW9uKSB9
OwpAQCAtMzIxLDYgKzMyMyw5IEBAIHN0YXRpYyBKU1ZhbHVlIHJldHJpZXZlQ2FsbGVyRnVuY3Rp
b24oRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTRnVuY3Rpb24qPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RG
dW5jdGlvbigpKTsKICAgICBKU1ZhbHVlIGNhbGxlciA9IHJldHJpZXZlQ2FsbGVyRnVuY3Rpb24o
ZXhlYywgdGhpc09iaik7CkBAIC0zMzUsNyArMzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNGdW5j
dGlvbjo6Y2FsbGVyR2V0dGVyKAogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpT
RnVuY3Rpb24qPihjYWxsZXIpOwogICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVu
Y3Rpb24oKSB8fCAhZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsZXIpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJGdW5jdGlvbi5jYWxs
ZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyIikpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZ1bmN0
aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxsZXIiKSkpOwogfQogCiBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
QEAgLTQyMyw2ICs0MjgsOSBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOCiAKIGJvb2wgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTRnVuY3Rpb24qPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1
ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQpAQCAtNDM3LDI1ICs0NDUsMjggQEAgYm9vbCBK
U0Z1bmN0aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBNYWtlIHN1cmUg
cHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVy
d3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0y
NjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAg
ICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJv
cGVydHkgb2YgYSBmdW5jdGlvbiIpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJl
IGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAg
UHV0UHJvcGVydHlTbG90IGRvbnRDYWNoZSh0aGlzT2JqZWN0KTsKKyAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIGRvbnRDYWNoZSk7CiAgICAgfQogICAgIGlmICh0aGlzT2JqZWN0LT5q
c0V4ZWN1dGFibGUoKS0+aXNTdHJpY3RNb2RlKCkgJiYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuY2FsbGVyKSkgewogICAgICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgcHJv
cGVydHkgdG8gYmUgcmVpZmllZCwgaWYgdGhpcyBpcyBub3QgYWxyZWFkeSB0aGUgY2FzZSEKICAg
ICAgICAgYm9vbCBva2F5ID0gdGhpc09iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChva2F5LCBva2F5KTsKKyAgICAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIH0KICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgdGhpc09iamVjdC0+cmVpZnlMYXp5UHJvcGVydHlJZk5lZWRl
ZChleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4g
QmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwog
fQogCkBAIC00ODAsNiArNDkxLDkgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShK
U0NlbGwqIAogCiBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3Qg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRocm93RXhjZXB0aW9uKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4ob2JqZWN0KTsKICAgICBpZiAodGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGluRnVuY3Rp
b24oKSkgewogICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUJvdW5kTmFtZUlmTmVlZGVkKGV4ZWMs
IHByb3BlcnR5TmFtZSk7CkBAIC00OTAsNyArNTA0LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iagogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBi
ZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAg
ICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAg
ICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkKICAgICAgICAgICAgIHRoaXNPYmplY3Qt
Pm1fcmFyZURhdGEtPmNsZWFyKCJTdG9yZSB0byBwcm90b3R5cGUgcHJvcGVydHkgb2YgYSBmdW5j
dGlvbiIpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKQEAgLTUyMCwy
NyArNTM0LDI3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAg
ICAgCiAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSBjb25maWd1cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIp
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlm
IChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxl
KCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNBY2Nl
c3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9w
ZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFu
Z2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFi
bGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxl
IGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICghdmFsdWVDaGVjaykgewogICAg
ICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkg
cHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9w
ZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNHZW5lcmljVHlwZWRBcnJheVZpZXdfaAogCiAjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlLmgiCiAjaW5j
bHVkZSAiVG9OYXRpdmVGcm9tVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xNjgsMTIg
KzE2OSwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBzZXRJbmRleChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUganNWYWx1ZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgICAgICB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9t
VmFsdWU8QWRhcHRvcj4oZXhlYywganNWYWx1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoaXNOZXV0
ZXJlZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVj
dG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDggKzgwLDEx
IEBAIFN0cnVjdHVyZSogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHIKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpZXdDbGFzcz4KIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVk
QXJyYXlWaWV3RnJvbUl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTVmFsdWUgaXRlcmF0b3IpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWl0ZXJhdG9y
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlN5bWJvbC5JdGVyYXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0
dXJuIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVu
dCBkaWQgbm90IHJldHVybiBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgc3RvcmFnZTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTE4LDggKzEyMSwxMCBAQCBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aWV3Q2xhc3M+CiBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmll
d1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRW5j
b2RlZEpTVmFsdWUgZmlyc3RBcmd1bWVudCwgdW5zaWduZWQgb2Zmc2V0LCBPcHRpb25hbDx1bnNp
Z25lZD4gbGVuZ3RoT3B0KQogewotICAgIEpTVmFsdWUgZmlyc3RWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShmaXJzdEFyZ3VtZW50KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgZmlyc3RWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShmaXJzdEFyZ3VtZW50KTsKIAogICAgIGlmIChKU0FycmF5QnVm
ZmVyKiBqc0J1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KGZpcnN0VmFsdWUp
KSB7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0ganNCdWZmZXItPmltcGwo
KTsKQEAgLTEyOSw3ICsxMzQsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFyCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5ndGhPcHQudmFsdWUoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAl
IFZpZXdDbGFzczo6ZWxlbWVudFNpemUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93UmFu
Z2VFcnJvcihleGVjLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlz
IG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1p
bnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUi
KTsKICAgICAgICAgICAgIGxlbmd0aCA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkg
LyBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplOwogCiAgICAgICAgIH0KQEAgLTEzOSw3ICsxNDQsNyBA
QCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgQVNTRVJUKCFv
ZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCiAgICAgaWYgKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgQXJyYXlCdWZmZXIgZm9yIHRoZSBmaXJz
dCBhcmd1bWVudC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3Vt
ZW50LiIpKTsKICAgICAKICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdlIGFs
bG93IGNvbnN0cnVjdGlvbiB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXkuIFRo
aXMgY3JlYXRlcyBhIGNvcHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc5LDcg
QEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICAgICAg
ICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbFR5cGUg
Y2FsbFR5cGUgPSBnZXRDYWxsRGF0YShpdGVyYXRvckZ1bmMsIGNhbGxEYXRhKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3lt
Ym9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQg
Y2Fubm90IGJlIGNhbGxlZC4iKSk7CiAKICAgICAgICAgICAgICAgICAgICAgQXJnTGlzdCBhcmd1
bWVudHM7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgaXRlcmF0b3IgPSBjYWxsKGV4ZWMs
IGl0ZXJhdG9yRnVuYywgY2FsbFR5cGUsIGNhbGxEYXRhLCBvYmplY3QsIGFyZ3VtZW50cyk7CkBA
IC0yMDYsMTUgKzIxMSwxNSBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFyCiAgICAgaWYgKGZpcnN0VmFsdWUuaXNJbnQzMigpKQogICAgICAgICBsZW5ndGggPSBmaXJz
dFZhbHVlLmFzSW50MzIoKTsKICAgICBlbHNlIGlmICghZmlyc3RWYWx1ZS5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlk
IGFycmF5IGxlbmd0aCBhcmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50
IikpOwogICAgIGVsc2UgewogICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KGZpcnN0
VmFsdWUuYXNOdW1iZXIoKSk7CiAgICAgICAgIGlmIChsZW5ndGggIT0gZmlyc3RWYWx1ZS5hc051
bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0aW9uYWwgbGVuZ3RocyBu
b3QgYWxsb3dlZCkiKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQgKGZyYWN0
aW9uYWwgbGVuZ3RocyBub3QgYWxsb3dlZCkiKSk7CiAgICAgfQogCiAgICAgaWYgKGxlbmd0aCA8
IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgIlJlcXVlc3RlZCBsZW5n
dGggaXMgbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihleGVjLCBz
Y29wZSwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiKTsKICAgICByZXR1cm4gVmlld0Ns
YXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBsZW5ndGgpOwogfQogCkBAIC0yMjQsNiArMjI5
LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBhc0ludGVybmFsRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpOwogICAgIFN0cnVjdHVyZSogcGFyZW50U3RydWN0dXJlID0gZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgpLT50eXBlZEFycmF5U3RydWN0dXJlKFZpZXdDbGFzczo6VHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBwYXJl
bnRTdHJ1Y3R1cmUpOwpAQCAtMjM0LDcgKzI0Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY29uc3RydWN0R2UKIAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYgKFZp
ZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcg
Y29uc3RydWN0b3IgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkRh
dGFWaWV3IGNvbnN0cnVjdG9yIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudC4iKSk7CiAK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBz
dHJ1Y3R1cmUsIDApKTsKICAgICB9CkBAIC0yNjgsNyArMjc2LDkgQEAgQ29uc3RydWN0VHlwZSBK
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEdlbmVyaWNUeXBlZEFycmF5
VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIFZpZXdD
bGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIFZpZXdDbGFzczo6aW5mbygpLT5jbGFzc05hbWUpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNSAr
NDgsMTcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAog
ICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0
aCkKIHsKLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoZXhlYy0+dm0oKSwgc3RydWN0
dXJlLCBsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSk7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKLSAg
ICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PihleGVjLT52bSgpLmhlYXAp
KQotICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyhleGVjLT52bSgpLCBjb250ZXh0KTsK
LSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCkpOworICAgICAgICBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCisg
ICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KHZtLCBjb250ZXh0KTsKKyAgICByZXN1bHQt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC02NCwxNyAr
NjYsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5p
bml0aWFsaXplZCgKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1
bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBj
b250ZXh0KAotICAgICAgICBleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5
cGVuYW1lIEFkYXB0b3I6OlR5cGUpLAorICAgICAgICB2bSwgc3RydWN0dXJlLCBsZW5ndGgsIHNp
emVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSwKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4
dDo6RG9udEluaXRpYWxpemUpOwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+
ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgzLDIyICs4NywyNCBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lCiAgICAgRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVm
ZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAg
ICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKICAgICBpZiAo
IUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgsIHNpemUpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIi
KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGV4ZWMsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zm
c2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemUpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQgaXMg
bm90IGFsaWduZWQiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4
dChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAg
ICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpOwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogcmVzdWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+Zmlu
aXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXcodm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyOCwxMCArMTM0LDEyIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp2YWxpZGF0ZVJhbmdlKAogICAgIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgb2Zmc2V0
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGNhbkFjY2Vzc1Jhbmdl
UXVpY2tseShvZmZzZXQsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAi
UmFuZ2UgY29uc2lzdGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5kcyIp
KTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCAiUmFuZ2UgY29uc2lzdGluZyBvZiBvZmZzZXQgYW5kIGxlbmd0aCBhcmUgb3V0IG9mIGJvdW5k
cyIpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTI5MCw4ICsyOTgsMTAgQEAgQXJyYXlC
dWZmZXIqIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYQogdGVtcGxhdGU8dHlwZW5hbWUgQWRh
cHRvcj4KIEVuY29kZWRKU1ZhbHVlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0
aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIG9iamVjdCwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVF9V
TlVTRUQob2JqZWN0LCBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihKU1ZhbHVlOjpk
ZWNvZGUob2JqZWN0KSktPmlzTmV1dGVyZWQoKSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9u
cy5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBleGVtcGxhciwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3Ms
IGNvbnN0IEZ1bmN0b3ImIGRlZmF1bHRDb25zdHJ1Y3RvcikKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgY29uc3RydWN0b3IgPSBleGVtcGxhci0+Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5jb25zdHJ1Y3Rvcik7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU3LDcgQEAgaW5saW5lIEpTQXJyYXlCdWZm
ZXJWaWV3KiBzcGVjaWVzQ29uc3RydQogICAgIGlmIChjb25zdHJ1Y3Rvci5pc1VuZGVmaW5lZCgp
KQogICAgICAgICByZXR1cm4gZGVmYXVsdENvbnN0cnVjdG9yKCk7CiAgICAgaWYgKCFjb25zdHJ1
Y3Rvci5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiY29uc3RydWN0b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQ
cm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtNzMsMTEgKzc2LDExIEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3Bl
Y2llc0NvbnN0cnUKICAgICAgICAgaWYgKCF2aWV3LT5pc05ldXRlcmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdmlldzsKIAotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4g
YSBUeXBlZEFycmF5IFZpZXciKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgic3BlY2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJy
YXkgVmlldyIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtOTYsNDMgKzk5LDQ1IEBA
IGlubGluZSB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb20KIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIyCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAotICAgIGlmICghZXhlYy0+
YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpID49IDIpIHsKICAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgaWYgKG9mZnNldE51bWJlciA8IDApCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJh
bmdlRXJyb3IoZXhlYywgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAg
IGlmIChVTkxJS0VMWShvZmZzZXROdW1iZXIgPCAwKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZl
Iik7CiAgICAgICAgIG9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbihvZmZz
ZXROdW1iZXIsIHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKSkpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwogCi0gICAgaWYg
KHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Cisg
ICAgaWYgKFVOTElLRUxZKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIEpTT2JqZWN0KiBzb3VyY2VBcnJheSA9IGpzRHlu
YW1pY0Nhc3Q8SlNPYmplY3QqPihleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYg
KCFzb3VyY2VBcnJheSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgIGlm
IChVTkxJS0VMWSghc291cmNlQXJyYXkpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4g
b2JqZWN0IikpOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIGlmIChpc1R5cGVkVmlldyhz
b3VyY2VBcnJheS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKICAgICAg
ICAgSlNBcnJheUJ1ZmZlclZpZXcqIHNvdXJjZVZpZXcgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZp
ZXcqPihzb3VyY2VBcnJheSk7Ci0gICAgICAgIGlmIChzb3VyY2VWaWV3LT5pc05ldXRlcmVkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHNv
dXJjZVZpZXctPmlzTmV1dGVyZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKICAgICAgICAgbGVuZ3RoID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oc291
cmNlQXJyYXkpLT5sZW5ndGgoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbGVuZ3RoID0gc291cmNl
QXJyYXktPmdldChleGVjLCBleGVjLT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50
MzIoZXhlYyk7CisgICAgICAgIGxlbmd0aCA9IHNvdXJjZUFycmF5LT5nZXQoZXhlYywgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKIAotICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdGhpc09iamVj
dC0+c2V0KGV4ZWMsIG9mZnNldCwgc291cmNlQXJyYXksIDAsIGxlbmd0aCwgQ29weVR5cGU6OlVu
b2JzZXJ2YWJsZSk7CkBAIC0xNDAsMTMgKzE0NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlXaXRoaW4oVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy41Ci0gICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0Ns
YXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVk
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9y
TWVzc2FnZSk7CiAKICAgICBsb25nIGxlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogICAg
IGxvbmcgdG8gPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIGxl
bmd0aCk7CkBAIC0xNjUsNyArMTcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZQogICAgIGxvbmcgY291bnQgPSBzdGQ6Om1pbihsZW5ndGggLSBzdGQ6Om1heCh0
bywgZnJvbSksIGZpbmFsIC0gZnJvbSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJl
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlwZSogYXJyYXkg
PSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIG1lbW1vdmUoYXJyYXkgKyB0bywgYXJy
YXkgKyBmcm9tLCBjb3VudCAqIHRoaXNPYmplY3QtPmVsZW1lbnRTaXplKTsKQEAgLTE3NCwxMiAr
MTgxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luY2x1ZGVzKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpz
Q2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3Qt
Pmxlbmd0aCgpOwogCkBAIC0xOTMsNyArMjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAg
IHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVjdC0+dHlw
ZWRWZWN0b3IoKTsKICAgICBhdXRvIHRhcmdldE9wdGlvbiA9IFZpZXdDbGFzczo6dG9BZGFwdG9y
TmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKHZhbHVlVG9GaW5kKTsKQEAgLTIxOSwxNiAr
MjI4LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jSW5kZXhPZihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgLy8gMjIuMi4zLjEzCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3Mq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVk
IGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmplY3QtPmxlbmd0aCgpOwogCkBAIC0yMzgsNyArMjQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsK
IAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFt
ZSBWaWV3Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9y
KCk7CiAgICAgYXV0byB0YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZy
b21WYWx1ZVdpdGhvdXRDb2VyY2lvbih2YWx1ZVRvRmluZCk7CkBAIC0yNTYsMTEgKzI2NywxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4oVk0m
IHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZpZXdDbGFzcyog
dGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIDIyLjIuMy4xNAog
ICAgIGF1dG8gam9pbldpdGhTZXBhcmF0b3IgPSBbJl0gKFN0cmluZ1ZpZXcgc2VwYXJhdG9yKSAt
PiBFbmNvZGVkSlNWYWx1ZSB7CkBAIC0yODksMjEgKzMwMywyMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OwogICAgIHJldHVybiBqb2luV2l0aFNlcGFyYXRvcihzZXBhcmF0b3JTdHJpbmctPnZpZXcoZXhl
YykuZ2V0KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRl
eE9mKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoVk0mIHZtLCBFeGVjU3RhdGUqIGV4
ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIuMy4xNgotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25l
IGFyZ3VtZW50IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMzI2LDcgKzM0
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3Qt
PmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRl
dGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGF1dG8gdGFyZ2V0T3B0aW9uID0gVmlld0NsYXNz
Ojp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24odmFsdWVUb0ZpbmQpOwog
ICAgIGlmICghdGFyZ2V0T3B0aW9uKQpAQCAtMzQ1LDcgKzM2MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0Ns
YXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoVk0m
LCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjMKICAgICBWaWV3Q2xhc3MqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzU0
LDcgKzM3MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoRXhlY1N0YXRl
KiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoVk0mLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8g
MjIuMi4zLjE3CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKQEAgLTM2Myw3ICszNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFz
cz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5n
dGgoVk0mLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjIKICAgICBWaWV3Q2xh
c3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpA
QCAtMzcyLDcgKzM4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0
KEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChWTSYsIEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICAvLyAyMi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zODEsMTIgKzM5NywxNSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2Uo
Vk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDIyLjIu
My4yMQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVj
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsK
IAogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhpc09iamVj
dC0+dHlwZWRWZWN0b3IoKTsKICAgICBzdGQ6OnJldmVyc2UoYXJyYXksIGFycmF5ICsgdGhpc09i
amVjdC0+bGVuZ3RoKCkpOwpAQCAtMzk1LDEyICs0MTQsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChWTSYgdm0sIEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjI1CiAgICAgVmlld0NsYXNz
KiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJy
YXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdGhpc09iamVjdC0+
c29ydCgpOwogCkBAIC00MDgsMTUgKzQzMCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xp
Y2UoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsK
Ky8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjI2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNh
bGxlZSgpKTsKIAogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIHVuc2lnbmVkIHRoaXNMZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsK
IApAQCAtNDI4LDcgKzQ1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGUKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAKICAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgLy8gQ2xhbXAgZW5kIHRvIGJlZ2luLgog
ICAgIGVuZCA9IHN0ZDo6bWF4KGJlZ2luLCBlbmQpOwpAQCAtNDQ4LDcgKzQ3Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIAogICAgIEFTU0VSVCghcmVzdWx0
LT5pc05ldXRlcmVkKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKICAgICAvLyBXZSByZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBh
IGJhY2tpbmcgc3RvcmUgaWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBu
dWxscHRycwogICAgIGlmICghbGVuZ3RoKQpAQCAtNDkyLDE1ICs1MTYsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFy
cmF5Q3JlYXRlKFZNJnZtLCBFeGVjU3RhdGUqIGV4ZWMpCiB7CisvLyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IC8vIDIyLjIuMy4yMwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBWaWV3
Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBHZXQg
dGhlIGxlbmd0aCBoZXJlOyBsYXRlciBhc3NlcnQgdGhhdCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFu
Z2UuCiAgICAgdW5zaWduZWQgdGhpc0xlbmd0aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwpAQCAt
NTUyLDcgKzU3OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUK
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHJlc3VsdCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIAotICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBW
aWV3Iik7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJzcGVjaWVzIGNvbnN0cnVj
dG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Iik7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDIsMTkgKzEyMDIsMjIgQEAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBK
U0dsb2JhbE9iamVjdAogCiBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFdmFsRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFop
CiB7CisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAgICBKU1BhcnNlclN0
cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpID8gSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKICAg
ICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlID0gaGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpID8g
RGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUgPSBleGVjdXRhYmxlLT5leGVjdXRhYmxlSW5mbygpLmV2YWxDb250ZXh0VHlwZSgpOwog
ICAgIAotICAgIFVubGlua2VkRXZhbENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bSgp
LmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAotICAgICAgICB2bSgpLCBleGVjdXRhYmxl
LCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwg
c3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBlcnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJs
ZXNVbmRlclREWik7CisgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IHZtLmNvZGVDYWNoZSgpLT5nZXRFdmFsQ29kZUJsb2NrKAorICAgICAgICB2bSwgZXhlY3V0
YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIHN0cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFy
aWFibGVzVW5kZXJURFopOwogCiAgICAgaWYgKGhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGRlYnVn
Z2VyKCktPnNvdXJjZVBhcnNlZChjYWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3Zp
ZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVzc2FnZSgpKTsKIAogICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgZXJyb3IudG9FcnJv
ck9iamVjdCh0aGlzLCBleGVjdXRhYmxlLT5zb3VyY2UoKSkpOworICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBzY29wZSwgZXJyb3IudG9FcnJvck9iamVjdCh0aGlzLCBleGVjdXRhYmxl
LT5zb3VyY2UoKSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEyMjMs
MTYgKzEyMjYsMTkgQEAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Ywog
CiBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjcmVhdGVN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKENhbGxGcmFtZSogY2FsbEZyYW1lLCBNb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVycm9y
IGVycm9yOwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBoYXNJbnRlcmFjdGl2ZURl
YnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7Ci0gICAgVW5saW5rZWRNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdl
dE1vZHVsZVByb2dyYW1Db2RlQmxvY2soCi0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dl
ck1vZGUsIGVycm9yKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gdm0uY29kZUNhY2hlKCktPmdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2so
CisgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgZGVidWdnZXJNb2RlLCBlcnJvcik7CiAKICAgICBpZiAo
aGFzRGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFt
ZSwgZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5t
ZXNzYWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZN
RXJyb3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNv
dXJjZSgpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50
b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMiBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MDksIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHly
aWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3MgT3Jsb3ZpY2gKICAqCkBAIC03NiwxMSArNzYsMTQg
QEAgc3RhdGljIEJpdG1hcDwyNTY+IG1ha2VDaGFyYWN0ZXJCaXRtYXAoYwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEJpdG1hcDwyNTY+JiBkb05vdEVzY2FwZSwgY29uc3QgQ2hhcmFjdGVyVHlwZSog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTgu
Mi42LjEuMSBSdW50aW1lIFNlbWFudGljczogRW5jb2RlICggc3RyaW5nLCB1bmVzY2FwZWRTZXQg
KQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVuY29kZQogCi0g
ICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFtleGVjXSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOworICAg
IGF1dG8gdGhyb3dFeGNlcHRpb24gPSBbJnNjb3BlLCBleGVjXSB7CisgICAgICAgIHJldHVybiBK
U0M6OnRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIikp
KTsKICAgICB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMTYzLDYgKzE2Niw5
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIEFMV0FZU19JTkxJTkUKIHN0YXRpYyBK
U1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJz
LCBpbnQgbGVuZ3RoLCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RVbmVzY2FwZSwgYm9vbCBzdHJp
Y3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1N0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBp
bnQgayA9IDA7CiAgICAgVUNoYXIgdSA9IDA7CkBAIC0yMDMsNyArMjA5LDcgQEAgc3RhdGljIEpT
VmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgYwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGNoYXJMZW4gPT0gMCkgewogICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVycm9yIikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVVUklF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVSSSBlcnJvciIpKSk7CiAgICAgICAgICAgICAgICAg
Ly8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUg
InVuZXNjYXBlIiBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwgaXQncyBn
b29kIHRvIHN1cHBvcnQgdGhlIHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmlsaXR5IHdp
dGggV2luSUUuCiAgICAgICAgICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBwWzFdID09
ICd1JwpAQCAtNjQwLDEzICs2NDYsMTYgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KFN0cmlu
Z1ZpZXcgcykKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRXZhbChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHggPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXguaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh4KTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFi
bGVkKCkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
dmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4
ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTg0NSwx
MiArODU0LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1UKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KICAg
ICAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFsRnVuY1Rocm93VHlwZUVycm9y
QXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCAiJ2FyZ3VtZW50cycsICdjYWxsZWUnLCBhbmQgJ2NhbGxl
cicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiJ2FyZ3VtZW50cycsICdjYWxs
ZWUnLCBhbmQgJ2NhbGxlcicgY2Fubm90IGJlIGFjY2Vzc2VkIGluIHN0cmljdCBtb2RlLiIpOwog
fQogCiBjbGFzcyBHbG9iYWxGdW5jUHJvdG9HZXR0ZXJGdW5jdG9yIHsKQEAgLTg4Nyw4ICs5MDAs
MTEgQEAgcHJpdmF0ZToKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
UHJvdG9HZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChleGVjLT50aGlzVmFsdWUo
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9i
amVjdCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChleGVjLT50aGlzVmFsdWUoKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJDYW4ndCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVj
dCIpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVj
dCo+KGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBOb3RTdHJpY3RNb2RlKSk7CiAKQEAg
LTk0NCw4ICs5NjAsMTEgQEAgYm9vbCBjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChFeGVj
UwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIAotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkNhbid0IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkNhbid0IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogCkBAIC05NjIsNyArOTgxLDYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUAogICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSAmJiAhdmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJv
b2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOwogICAgIHRoaXNPYmplY3QtPnNldFByb3Rv
dHlwZSh2bSwgZXhlYywgdmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJv
bm1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMCwxMSArMTEwLDE0IEBAIHZvaWQgSlNNb2R1bGVF
bnZpcm9ubWVudDo6Z2V0T3duTm9uSW5kZXgKIAogYm9vbCBKU01vZHVsZUVudmlyb25tZW50Ojpw
dXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVF
bnZpcm9ubWVudCo+KGNlbGwpOwogICAgIC8vIEFsbCBpbXBvcnRlZCBiaW5kaW5ncyBhcmUgaW1t
dXRhYmxlLgogICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSB0aGlz
T2JqZWN0LT5tb2R1bGVSZWNvcmQoKS0+cmVzb2x2ZUltcG9ydChleGVjLCBJZGVudGlmaWVyOjpm
cm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOwogICAgIGlmIChyZXNvbHV0aW9uLnR5
cGUgPT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gQmFzZTo6cHV0KHRoaXNPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAw
LDkgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZAogCiBib29sIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVj
dHMtZ2V0b3ducHJvcGVydHktcAogCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKQEAgLTEyOSw3
ICsxMzIsNyBAQCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAgICAg
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9kdWxl
LT5tb2R1bGVFbnZpcm9ubWVudCgpOwogCiAgICAgICAgIFByb3BlcnR5U2xvdCB0cmFtcG9saW5l
U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldCk7Ci0gICAgICAgIGJvb2wgZm91bmQgPSB0YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhl
YywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xpbmVTbG90KTsKKyAgICAgICAgYm9vbCBm
b3VuZCA9IHRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1w
b2xpbmVTbG90KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOwogCiAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpOwpAQCAtMTM3LDcgKzE0MCw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3AKIAogICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGggVERa
IHZhbHVlLCB0aHJvdyBhIHJlZmVyZW5jZSBlcnJvci4KICAgICAgICAgaWYgKCF2YWx1ZSkgewot
ICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlVERaRXJyb3IoZXhlYykp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE2MiwxNiArMTY1
LDIyIEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3AKIAogYm9vbCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCiAg
ICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MTkzLDE3ICsyMDIsMjMgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJv
cAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09i
amVjdCosIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2Ny
aXB0b3ImLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1l
c3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJvcGVydHktcC1kZXNjCiAgICAgaWYgKHNo
b3VsZFRocm93KQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNp
YmxlLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4
dGVuc2libGUuIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ8dGhpc3wgc2hvdWxkIGJlIGEgbW9kdWxlIG5hbWVzcGFj
ZSBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVj
dCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0
ZXJhdG9yU3RydWN0dXJlKCksIG9iamVjdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4MSw2ICs2ODEsOSBAQCBzdGF0aWMgdm9pZCBnZXRFeHBvcnRlZE5h
bWVzKEV4ZWNTdGF0ZSogCiAKIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29y
ZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3Nl
Yy1nZXRtb2R1bGVuYW1lc3BhY2UKICAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCiAg
ICAgICAgIHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5nZXQoKTsKQEAgLTY5NCwxMSAr
Njk3LDExIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDoKICAgICAg
ICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVF
eHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CiAgICAg
ICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQ6Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VT
dHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBp
cyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29w
ZSwgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcobmFtZS5nZXQo
KSksICInIGlzIG5vdCBmb3VuZC4iKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1
bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkV4cG9ydGVk
IGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIgZXhwb3J0
IGVudHJpZXMuIikpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY2Fz
ZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6CkBAIC03MTAsMjkgKzcxMywzMyBAQCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogSlNNb2R1bGVSZWNvcmQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1b3VzTmFt
ZXMpKTsKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQodm0sIHRoaXMsIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
Pm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91c05hbWVz
KSk7CiAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOwogfQogCiB2b2lk
IEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2VDb2RlKCkpOwogICAgIGlmICghZXhlY3V0YWJs
ZSkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N5bnRh
eEVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjdXRhYmxlKTsKKyAg
ICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CiAg
ICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZXhlYywgZXhlY3V0YWJsZSk7CiB9CiAKIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywg
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZWRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogCiAgICAgU3ltYm9s
VGFibGUqIHN5bWJvbFRhYmxlID0gbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPm1vZHVsZUVudmly
b25tZW50U3ltYm9sVGFibGUoKTsKLSAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZp
cm9ubWVudCA9IEpTTW9kdWxlRW52aXJvbm1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9s
VGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7Ci0KLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZp
cm9ubWVudDo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgc3ltYm9sVGFibGUsIGpzVERaVmFsdWUoKSwgdGhpcyk7CiAK
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtbW9kdWxlZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCiAgICAgLy8gc2VjdGlvbiAxNS4yLjEu
MTYuNCBzdGVwIDkuCkBAIC03NDUsMTUgKzc1MiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpp
bnN0YW50aWF0ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBy
ZXNvbHZlRXhwb3J0KGV4ZWMsIGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpOwogICAgICAgICAgICAg
c3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6
VHlwZTo6Tm90Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4
cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGV4cG9ydEVudHJ5LmV4cG9y
dE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgotICAg
ICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3Rs
eSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhleHBvcnRFbnRyeS5leHBvcnROYW1l
LmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8gYW1iaWd1b3VzIG11bHRpcGxl
IGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNj
b3BlLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVk
IGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAg
ICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0
bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkg
c3RhciBleHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5h
bWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQ6CkBAIC03NzksMTUgKzc4NiwxNSBAQCB2b2lkIEpTTW9kdWxlUmVj
b3JkOjppbnN0YW50aWF0ZURlY2xhcmF0CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRp
b24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBv
cnROYW1lKTsKICAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CiAgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kOgotICAgICAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAn
IiwgU3RyaW5nKGltcG9ydEVudHJ5LmltcG9ydE5hbWUuaW1wbCgpKSwgIicgaXMgbm90IGZvdW5k
LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtl
U3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1w
b3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0g
ICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJJbXBvcnRp
bmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkp
LCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5n
cy4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgbWFr
ZVN0cmluZygiSW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnIiwgU3RyaW5nKGltcG9ydEVudHJ5Lmlt
cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVkIGR1ZSB0byBhbWJpZ3VvdXMg
bXVsdGlwbGUgYmluZGluZ3MuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoKLSAgICAgICAgICAgICAgICB0aHJv
d1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2Rl
ZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJ
bXBvcnRpbmcgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3Rh
ciBleHBvcnQgZW50cmllcy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OlJlc29sdmVkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTcsNiArMjk3LDggQEAgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9KU09OSW1wbChK
U1ZhbHVlIAogU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5k
U3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBKU1ZhbHVlIHZhbHVlLCBK
U09iamVjdCogaG9sZGVyLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwmIHByb3Bl
cnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1bmN0
aW9uLgogICAgIHZhbHVlID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICh2
bS5leGNlcHRpb24oKSkKQEAgLTM2OCw3ICszNzAsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyCiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1
dCB0aGUgaG9sZGVyIG9uIHRoZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9ob2xkZXJTdGFjay5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tp
XS5vYmplY3QoKSA9PSBvYmplY3QpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
YywgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBz
dHJ1Y3R1cmVzLiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3Ry
dWN0dXJlcy4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTg5LDEwICs1OTEsMTMgQEAgZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRl
VW5rbm93biwgQXJyYXlTdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0
U3RhcnRTdGF0ZSwgT2JqZWN0U3RhcnRWaXNpdE1lbWJlciwgT2JqZWN0RW5kVmlzaXRNZW1iZXIg
fTsKIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQp
CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZlY3RvcjxQcm9wZXJ0eU5hbWVBcnJheSwgMTYsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBwcm9wZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwg
MTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBpbmRleFN0YWNrOwotICAgIExvY2FsU3RhY2s8SlNP
YmplY3QsIDE2PiBvYmplY3RTdGFjayhtX2V4ZWMtPnZtKCkpOwotICAgIExvY2FsU3RhY2s8SlNB
cnJheSwgMTY+IGFycmF5U3RhY2sobV9leGVjLT52bSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTT2Jq
ZWN0LCAxNj4gb2JqZWN0U3RhY2sodm0pOworICAgIExvY2FsU3RhY2s8SlNBcnJheSwgMTY+IGFy
cmF5U3RhY2sodm0pOwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMTYsIFVuc2FmZVZlY3Rvck92ZXJm
bG93PiBhcnJheUxlbmd0aFN0YWNrOwogICAgIAogICAgIFZlY3RvcjxXYWxrZXJTdGF0ZSwgMTYs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBzdGF0ZVN0YWNrOwpAQCAtNjA3LDcgKzYxMiw3IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAgICAgICBB
U1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0Fy
cmF5KGFzT2JqZWN0KGluVmFsdWUpKSB8fCBhc09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoSlNB
cnJheTo6aW5mbygpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSAr
IGFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11bUZpbHRlclJlY3Vyc2lvbikKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYyk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMsIHNjb3Bl
KTsKIAogICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShpblZhbHVlKTsK
ICAgICAgICAgICAgICAgICBhcnJheVN0YWNrLnB1c2goYXJyYXkpOwpAQCAtNjYzLDcgKzY2OCw3
IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHUKICAgICAgICAgICAg
ICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
IWlzSlNBcnJheShhc09iamVjdChpblZhbHVlKSkgJiYgIWFzT2JqZWN0KGluVmFsdWUpLT5pbmhl
cml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqZWN0U3RhY2su
c2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhl
Yywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnB1c2gob2JqZWN0KTsKQEAg
LTczNiwzMSArNzQxLDM0IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1Zh
bHUKICAgICB9CiAgICAgSlNPYmplY3QqIGZpbmFsSG9sZGVyID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QobV9leGVjKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmaW5hbEhvbGRlcik7Ci0gICAg
ZmluYWxIb2xkZXItPm1ldGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVjLCBtX2V4
ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCBvdXRWYWx1ZSwgc2xvdCk7
CisgICAgZmluYWxIb2xkZXItPm1ldGhvZFRhYmxlKCktPnB1dChmaW5hbEhvbGRlciwgbV9leGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKICAg
ICByZXR1cm4gY2FsbFJldml2ZXIoZmluYWxIb2xkZXIsIGpzRW1wdHlTdHJpbmcobV9leGVjKSwg
b3V0VmFsdWUpOwogfQogCiAvLyBFQ01BLTI2MiB2NSAxNS4xMi4yCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNQYXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpTT04u
cGFyc2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpKTsKICAgICBK
U1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIAogICAgIEpTVmFsdWUg
dW5maWx0ZXJlZDsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZtKCkpOworICAgIExvY2Fs
U2NvcGUgbG9jYWxTY29wZSh2bSk7CiAgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgewogICAgICAg
ICBMaXRlcmFsUGFyc2VyPExDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZS5jaGFyYWN0ZXJz
OCgpLCBzb3VyY2UubGVuZ3RoKCksIFN0cmljdEpTT04pOwogICAgICAgICB1bmZpbHRlcmVkID0g
anNvblBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICAgICAgaWYgKCF1bmZpbHRlcmVkKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihl
eGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBqc29uUGFy
c2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTGl0ZXJhbFBh
cnNlcjxVQ2hhcj4ganNvblBhcnNlcihleGVjLCBzb3VyY2UuY2hhcmFjdGVyczE2KCksIHNvdXJj
ZS5sZW5ndGgoKSwgU3RyaWN0SlNPTik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2Vy
LnRyeUxpdGVyYWxQYXJzZSgpOwogICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25Q
YXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNl
ci5nZXRFcnJvck1lc3NhZ2UoKSkpOwogICAgIH0KICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMikKQEAgLTc3MSwxOCArNzc5LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNPTlByb3RvRnUKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25l
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2JqZWN0PihleGVjLT52bSgp
LCBhc09iamVjdChmdW5jdGlvbikpLCBjYWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJl
ZCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIExvY2FsPEpTT2Jq
ZWN0Pih2bSwgYXNPYmplY3QoZnVuY3Rpb24pKSwgY2FsbFR5cGUsIGNhbGxEYXRhKS53YWxrKHVu
ZmlsdGVyZWQpKTsKIH0KIAogLy8gRUNNQS0yNjIgdjUgMTUuMTIuMwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jU3RyaW5naWZ5KEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Tm8gaW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKLSAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPnZt
KCkpOwotICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKLSAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBl
eGVjLT5hcmd1bWVudCgxKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwg
ZXhlYy0+YXJndW1lbnQoMikpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGlucHV0IHRvIHN0cmluZ2lm
eSIpKSk7CisgICAgTG9jYWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKKyAgICBMb2NhbDxVbmtub3du
PiB2YWx1ZSh2bSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIExvY2FsPFVua25v
d24+IHJlcGxhY2VyKHZtLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgTG9jYWw8VW5rbm93bj4g
c3BhY2Uodm0sIGV4ZWMtPmFyZ3VtZW50KDIpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmlu
Z2lmaWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFjZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgsIDIwMDksIDIw
MTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgKGVyaWNAd2Via2l0
Lm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTM1NCw2ICsxMzU0LDcgQEAgdm9pZCBKU09iamVjdDo6
c2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2bQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUs
IGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlz
LCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKIAogICAgIGlmICh0aGlzLT5nZXRQcm90
b3R5cGVEaXJlY3QoKSA9PSBwcm90b3R5cGUpCkBAIC0xMzY1LDcgKzEzNjYsNyBAQCBib29sIEpT
T2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjCiAKICAgICBpZiAoIWlzRXh0ZW5zaWJs
ZSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTEzNzQsNyArMTM3NSw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWMKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKG5leHRQcm90b3R5cGUgPT0gdGhpcykgewogICAgICAgICAgICAgaWYg
KHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19w
cm90b19fIHZhbHVlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChVTkxJS0VMWShhc09iamVjdChuZXh0UHJvdG90eXBlKS0+bWV0aG9kVGFibGUo
dm0pLT5nZXRQcm90b3R5cGUgIT0gZGVmYXVsdEdldFByb3RvdHlwZSkpCkBAIC0xNjE2LDI4ICsx
NjE3LDMyIEBAIGVudW0gY2xhc3MgVHlwZUhpbnRNb2RlIHsgVGFrZXNIaW50LCBEb2UKIHRlbXBs
YXRlPFR5cGVIaW50TW9kZSBtb2RlID0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFrZUhpbnQ+CiBz
dGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNhbGxUb1ByaW1pdGl2ZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSBmdW5jdGlvbiA9IG9iamVjdC0+Z2V0KGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9u
KCk7CisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhj
ZXB0aW9uKCk7CiAgICAgaWYgKGZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkgJiYgbW9kZSA9PSBUeXBl
SGludE1vZGU6OlRha2VzSGludCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKGNhbGxU
eXBlID09IENhbGxUeXBlOjpOb25lKSk7CiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpO
b25lKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBz
Y29wZS5leGNlcHRpb24oKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGNhbGxBcmdzOwog
ICAgIGlmIChtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KSB7CiAgICAgICAgIEpTU3Ry
aW5nKiBoaW50U3RyaW5nID0gbnVsbHB0cjsKICAgICAgICAgc3dpdGNoIChoaW50KSB7CiAgICAg
ICAgIGNhc2UgTm9QcmVmZXJlbmNlOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMtPnZt
KCkuc21hbGxTdHJpbmdzLmRlZmF1bHRTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJpbmcg
PSB2bS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUHJlZmVyTnVtYmVyOgotICAgICAgICAgICAgaGludFN0cmluZyA9IGV4ZWMt
PnZtKCkuc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpOworICAgICAgICAgICAgaGludFN0cmlu
ZyA9IHZtLnNtYWxsU3RyaW5ncy5udW1iZXJTdHJpbmcoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFByZWZlclN0cmluZzoKLSAgICAgICAgICAgIGhpbnRTdHJpbmcgPSBleGVj
LT52bSgpLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKTsKKyAgICAgICAgICAgIGhpbnRTdHJp
bmcgPSB2bS5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYWxsQXJncy5hcHBlbmQoaGludFN0cmluZyk7CkBAIC0xNjQ1
LDQwICsxNjUwLDQ3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWkK
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBjb25zdF9jYXN0PEpTT2JqZWN0Kj4ob2JqZWN0KSwgY2FsbEFyZ3MpOwogICAgIEFT
U0VSVCghcmVzdWx0LmlzR2V0dGVyU2V0dGVyKCkpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPmV4Y2VwdGlvbigpOworICAgIGlmIChzY29wZS5l
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIGlmIChy
ZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpE
b2VzTm90VGFrZUhpbnQgPyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlN5bWJvbC50b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiKSk7CisgICAgICAg
IHJldHVybiBtb2RlID09IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1ZSgp
IDogdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJp
bWl0aXZlIHJldHVybmVkIGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAv
LyBFQ01BIDcuMS4xCiBKU1ZhbHVlIEpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKEV4ZWNT
dGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KSBjb25zdAogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2hhdGV2ZXIgZGVmYXVsdCB2YWx1ZSBtZXRo
b2RzIHRoZXJlIGFyZSBvbiBvYmplY3QncyBwcm90b3R5cGUgY2hhaW4gYXJlCiAgICAgLy8gYmVp
bmcgd2F0Y2hlZC4KLSAgICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFs
UHJvcGVydGllc0lmTmVjZXNzYXJ5Rm9yRW50aXJlQ2hhaW4oZXhlYy0+dm0oKSk7CisgICAgdGhp
cy0+c3RydWN0dXJlKCktPnN0YXJ0V2F0Y2hpbmdJbnRlcm5hbFByb3BlcnRpZXNJZk5lY2Vzc2Fy
eUZvckVudGlyZUNoYWluKHZtKTsKIAogICAgIEpTVmFsdWUgdmFsdWU7CiAgICAgaWYgKGhpbnQg
PT0gUHJlZmVyU3RyaW5nKSB7CiAgICAgICAgIHZhbHVlID0gY2FsbFRvUHJpbWl0aXZlRnVuY3Rp
b24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBoaW50KTsKKyAg
ICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9PSB2
YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZTsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlz
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkp
OwogICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlz
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgaGludCk7CisgICAgICAgIEFTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgc2NvcGUuZXhjZXB0aW9uKCkgPT0gdmFsdWUuYXNDZWxsKCkp
OwogICAgICAgICBpZiAodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAg
IHZhbHVlID0gY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oZXhlYywgdGhpcywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnRvU3RyaW5nLCBoaW50KTsKKyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlm
ICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICB9CiAKICAgICBBU1NFUlQo
IWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSk7CisgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQgdmFsdWUiKSk7CiB9
CiAKIEpTVmFsdWUgSlNPYmplY3Q6OmRlZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgaGludCkKQEAgLTE3Mjcs
MTIgKzE3MzksMTQgQEAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIEpTT2JqZWN0OjpmaW5kUHJvcAog
Ym9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
LCBKU1ZhbHVlIGhhc0luc3RhbmNlVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgCiAKICAgICBp
ZiAoIWhhc0luc3RhbmNlVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSAmJiBoYXNJbnN0YW5jZVZh
bHVlICE9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb24oKSkgewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGhhc0luc3RhbmNlVmFsdWUs
IGNhbGxEYXRhKTsKICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7Ci0g
ICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5zdGFuY2Vv
ZlBhcmFtZXRlckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRoaXMpKTsK
KyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9yaGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKGV4ZWMsIHRo
aXMpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0xNzQ3LDcg
KzE3NjEsNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4CiAgICAg
ICAgIHJldHVybiBkZWZhdWx0SGFzSW5zdGFuY2UoZXhlYywgdmFsdWUsIGdldChleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKSk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0hh
c0luc3RhbmNlKCkpCiAgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0lu
c3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVlKTsKLSAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZXhlYywgdGhp
cykpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5zdGFu
Y2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtMTc2MCwxNSArMTc3NCwxNyBAQCBib29sIEpTT2JqZWN0OjpoYXNJbnN0
YW5jZShFeGVjU3RhdGUqIGV4CiAKIGJvb2wgSlNPYmplY3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG8pCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFu
IGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0
IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIEpT
VmFsdWUgb2JqZWN0VmFsdWUgPSBvYmplY3QtPmdldFByb3RvdHlwZSh2bSwgZXhlYyk7CkBAIC0y
MjM4LDYgKzIyNTQsOSBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUlu
CiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIGJvb2wgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NF
UlQoKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUp
OwogICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKIApAQCAtMjI0Nyw4ICsy
MjY2LDYgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8v
IG9yIGVxdWFsIHRvIHRoZSB2ZWN0b3IgbGVuZ3RoLgogICAgIEFTU0VSVChpID49IGJ1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAg
CiAgICAgaWYgKGkgPiBNQVhfU1RPUkFHRV9WRUNUT1JfSU5ERVgKICAgICAgICAgfHwgKGkgPj0g
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihpLCBjb3Vu
dEVsZW1lbnRzPGluZGV4aW5nU2hhcGU+KGJ1dHRlcmZseSkpKQogICAgICAgICB8fCBpbmRleElz
U3VmZmljaWVudGx5QmV5b25kTGVuZ3RoRm9yU3BhcnNlTWFwKGksIGJ1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpKSB7CkBAIC0yMjYyLDcgKzIyNzksNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgfQogCiAgICAgaWYgKCFlbnN1cmVMZW5ndGgodm0sIGkg
KyAxKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CkBAIC0yMzAwLDYgKzIz
MTcsNyBAQCB0ZW1wbGF0ZSBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kCiBib29sIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZShFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cs
IEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIC8vIGkgc2hvdWxk
IGJlIGEgdmFsaWQgYXJyYXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZl
Y3Rvci4KICAgICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjMyNyw3ICsyMzQ1
LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0bywg
b3IgY2FuJ3QgdXNlIGEgdmVjdG9yIHRvIGhvbGQgdGhpcyBwcm9wZXJ0eSAtIGFsbG9jYXRlIGEg
c3BhcnNlIG1hcCAmIGFkZCB0aGUgdmFsdWUuCi0gICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNl
SW5kZXhNYXAoZXhlYy0+dm0oKSk7CisgICAgICAgIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhN
YXAodm0pOwogICAgICAgICByZXR1cm4gbWFwLT5wdXRFbnRyeShleGVjLCB0aGlzLCBpLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KIApAQCAtMjMzNyw3ICsyMzU1LDcgQEAgYm9vbCBKU09i
amVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAvLyBQcm9oaWJpdCBncm93
aW5nIHRoZSBhcnJheSBpZiBsZW5ndGggaXMgbm90IHdyaXRhYmxlLgogICAgICAgICBpZiAobWFw
LT5sZW5ndGhJc1JlYWRPbmx5KCkgfHwgIWlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBsZW5ndGggPSBpICsgMTsKQEAgLTIzNDcsNyArMjM2NSw3IEBAIGJvb2wgSlNPYmplY3Q6
OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAvLyBXZSBhcmUgY3VycmVudGx5IHVzaW5n
IGEgbWFwIC0gY2hlY2sgd2hldGhlciB3ZSBzdGlsbCB3YW50IHRvIGJlIGRvaW5nIHNvLgogICAg
IC8vIFdlIHdpbGwgY29udGludWUgIHRvIHVzZSBhIHNwYXJzZSBtYXAgaWYgU3BhcnNlTW9kZSBp
cyBzZXQsIGEgdmVjdG9yIHdvdWxkIGJlIHRvbyBzcGFyc2UsIG9yIGlmIGFsbG9jYXRpb24gZmFp
bHMuCiAgICAgdW5zaWduZWQgbnVtVmFsdWVzSW5BcnJheSA9IHN0b3JhZ2UtPm1fbnVtVmFsdWVz
SW5WZWN0b3IgKyBtYXAtPnNpemUoKTsKLSAgICBpZiAobWFwLT5zcGFyc2VNb2RlKCkgfHwgIWlz
RGVuc2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5KSB8fCAhaW5jcmVh
c2VWZWN0b3JMZW5ndGgoZXhlYy0+dm0oKSwgbGVuZ3RoKSkKKyAgICBpZiAobWFwLT5zcGFyc2VN
b2RlKCkgfHwgIWlzRGVuc2VFbm91Z2hGb3JWZWN0b3IobGVuZ3RoLCBudW1WYWx1ZXNJbkFycmF5
KSB8fCAhaW5jcmVhc2VWZWN0b3JMZW5ndGgodm0sIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBt
YXAtPnB1dEVudHJ5KGV4ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAKICAgICAv
LyBSZXJlYWQgbV9zdG9yYWdlIGFmdGVyIGluY3JlYXNlVmVjdG9yTGVuZ3RoLCB1cGRhdGUgbV9u
dW1WYWx1ZXNJblZlY3Rvci4KQEAgLTI5NDQsNiArMjk2Miw5IEBAIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdE1heUJlSW5kZXgoRXhlY1MKIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIGJvb2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGN1cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICAvLyBJZiB3ZSBoYXZlIGEgbmV3IHByb3BlcnR5IHdlIGNhbiBqdXN0IHB1dCBpdCBvbiBu
b3JtYWxseQogICAgIC8vIFN0ZXAgMi4KICAgICBpZiAoIWlzQ3VycmVudERlZmluZWQpIHsKQEAg
LTI5NTEsNyArMjk3Miw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cigKICAgICAgICAgLy8gU3RlcCAyLmEKICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsKICAg
ICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9u
IG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmlu
ZSBwcm9wZXJ0eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFvYmplY3QpCkBAIC0y
OTc0LDEyICsyOTk1LDEyIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRv
cigKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1
dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50
KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkgIT0gY3VycmVudC5lbnVtZXJhYmxlKCkpIHsK
ICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFi
bGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
OTg4LDcgKzMwMDksNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3Io
CiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRy
aWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5l
cmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwo
ZGVzY3JpcHRvcikgJiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0
b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0
cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI5OTksMTQgKzMwMjAsMTQgQEAgYm9vbCB2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURl
c2NyaXB0b3IoKSAhPSBjdXJyZW50LmlzRGF0YURlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlv
bikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5j
b25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZp
Z3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3Qs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGlu
Z0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMzAxNiwxMyArMzAzNywx
MyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgICAgIGlm
ICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50Lndy
aXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFjdXJyZW50LndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52
YWx1ZSgpICYmICFzYW1lVmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZh
bHVlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIp
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTMwMzEsNyArMzA1Miw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBs
eVByb3BlcnR5RGVzY3JpcHRvcigKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAoIW9iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlw
dG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBA
IC0zMDQxLDE3ICszMDYyLDE3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKGRl
c2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0ZXJQcmVzZW50KCkgJiYg
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIoKSwgZGVzY3JpcHRvci5z
ZXR0ZXIoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRl
bXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAm
JiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9y
LmdldHRlcigpKSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVy
dHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChjdXJyZW50LmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAgICAgICAgICAgICBp
ZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21F
cnJvcikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9y
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDU5
LDMzICszMDgwLDMzIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcigK
ICAgICAvLyBTdGVwIDEwLzExLgogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBKU1ZhbHVlIGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+dm0oKSwg
cHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIGFjY2Vzc29yID0gb2JqZWN0LT5nZXREaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyOwogICAgIGJvb2wgZ2V0dGVyU2V0
dGVyQ2hhbmdlZCA9IGZhbHNlOwogICAgIGlmIChhY2Nlc3Nvci5pc0N1c3RvbUdldHRlclNldHRl
cigpKSB7Ci0gICAgICAgIGdldHRlclNldHRlciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMt
PnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgIGdldHRlclNldHRl
ciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OwogICAgICAgICBhdXRvKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBqc0Nhc3Q8Q3VzdG9tR2V0dGVy
U2V0dGVyKj4oYWNjZXNzb3IpOwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5zZXR0
ZXIoKSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0U2V0dGVyKGV4ZWMtPnZtKCksIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25G
b3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OlNldHRlcikpOworICAgICAgICAgICAg
Z2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
Z2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVy
dHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246
OlR5cGU6OlNldHRlcikpOwogICAgICAgICBpZiAoY3VzdG9tR2V0dGVyU2V0dGVyLT5nZXR0ZXIo
KSkKLSAgICAgICAgICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPnZtKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JH
ZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3Vz
dG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5cGU6OkdldHRlcikpOworICAgICAgICAgICAgZ2V0
dGVyU2V0dGVyLT5zZXRHZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZ2V0
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25Gb3JHZXR0ZXJTZXR0ZXIoZXhlYywgcHJvcGVydHlO
YW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb246OlR5
cGU6OkdldHRlcikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChhY2Nlc3Nvci5pc0dl
dHRlclNldHRlcigpKTsKICAgICAgICAgZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNj
ZXNzb3IpOwogICAgIH0KICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkpIHsKLSAg
ICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53aXRoU2V0dGVyKGV4ZWMtPnZtKCks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZGVzY3JpcHRvci5zZXR0ZXJPYmplY3QoKSk7
CisgICAgICAgIGdldHRlclNldHRlciA9IGdldHRlclNldHRlci0+d2l0aFNldHRlcih2bSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9yLnNldHRlck9iamVjdCgpKTsKICAg
ICAgICAgZ2V0dGVyU2V0dGVyQ2hhbmdlZCA9IHRydWU7CiAgICAgfQogICAgIGlmIChkZXNjcmlw
dG9yLmdldHRlclByZXNlbnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0
ZXItPndpdGhHZXR0ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBk
ZXNjcmlwdG9yLmdldHRlck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVy
U2V0dGVyLT53aXRoR2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2Ny
aXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1
ZTsKICAgICB9CiAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYm
ICFnZXR0ZXJTZXR0ZXJDaGFuZ2VkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2Ny
aXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIG9iamVjdC0+
cHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJz
IHwgQWNjZXNzb3IpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzIzMyw2ICszMjU0LDkgQEAgdm9p
ZCBKU09iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSgogLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nZXRtZXRob2QK
IEpTVmFsdWUgSlNPYmplY3Q6OmdldE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIENhbGxEYXRhJiBj
YWxsRGF0YSwgQ2FsbFR5cGUmIGNhbGxUeXBlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIG1l
dGhvZCA9IGdldChleGVjLCBpZGVudCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTMyNDEsMTMgKzMyNjUsMTMgQEAgSlNW
YWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZQogICAgICAgICBpZiAobWV0aG9k
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAogICAgIGNhbGxUeXBlID0gbWV0aG9kLmFzQ2Vs
bCgpLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShtZXRob2QuYXNDZWxsKCksIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlB1dERp
cmVjdEluZGV4TW9kZS5oIgogI2luY2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgogI2luY2x1ZGUg
IlJ1bnRpbWVUeXBlLmgiCi0KICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJWTS5o
IgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC02NiwxMCArNjUsMTEgQEAgY2xhc3MgTWFya2Vk
QmxvY2s7CiBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eTsKIGNsYXNzIFN0cnVjdHVyZTsKK2NsYXNzIFRocm93U2NvcGU7CiBzdHJ1Y3QgSGFzaFRhYmxl
Owogc3RydWN0IEhhc2hUYWJsZVZhbHVlOwogCi1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYpOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3QgY2hhciogU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVERBVEEgY29uc3Qg
Y2hhciogVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yOwog
CkBAIC0xNjY1LDM3ICsxNjY1LDYgQEAgQUxXQVlTX0lOTElORSBJZGVudGlmaWVyIG1ha2VJZGVu
dGlmaWVyKAogICAgIHJldHVybiBuYW1lOwogfQogCi0vLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUg
c3BlYy4gCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBmdW5jdGlvbiBz
aG91bGQgaGF2ZSBhIHR5cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAtPiBib29sCi12
b2lkIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBhcnJh
eUxpa2VWYWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKLXsKLSAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwotICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1bHQ7Ci0gICAgSlNWYWx1ZSBs
ZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVjLCBleGVjLT52bSgpLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCk7Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1
cm47Ci0gICAgZG91YmxlIGxlbmd0aEFzRG91YmxlID0gbGVuZ3RoUHJvcGVydHkudG9MZW5ndGgo
ZXhlYyk7Ci0gICAgaWYgKHZtLmV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm47Ci0gICAgUkVM
RUFTRV9BU1NFUlQobGVuZ3RoQXNEb3VibGUgPj0gMC4wICYmIGxlbmd0aEFzRG91YmxlID09IHN0
ZDo6dHJ1bmMobGVuZ3RoQXNEb3VibGUpKTsKLSAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4obGVuZ3RoQXNEb3VibGUpOwotICAgIGZvciAodWludDY0X3QgaW5kZXgg
PSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykgewotICAgICAgICBKU1ZhbHVlICBuZXh0ID0g
YXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMsIGluZGV4KTsKLSAgICAgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBy
dW50aW1lVHlwZUZvclZhbHVlKG5leHQpOwotICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBl
c0ZpbHRlcikpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGV4aXRF
YXJseSA9IGFkZEZ1bmN0aW9uKG5leHQsIHR5cGUpOwotICAgICAgICBpZiAoZXhpdEVhcmx5KQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQogYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBib29s
IGlzRXh0ZW5zaWJsZSwKICAgICBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgaXNDdXJyZW50RGVmaW5lZCwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBjdXJyZW50
LCBib29sIHRocm93RXhjZXB0aW9uKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCwzOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gU2VjdGlvbiA3LjMu
MTcgb2YgdGhlIHNwZWMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWRkRnVuY3Rpb24+IC8vIEFkZCBm
dW5jdGlvbiBzaG91bGQgaGF2ZSBhIHR5cGUgbGlrZTogKEpTVmFsdWUsIFJ1bnRpbWVUeXBlKSAt
PiBib29sCit2b2lkIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBhcnJheUxpa2VWYWx1ZSwgUnVudGltZVR5cGVNYXNrIGxlZ2FsVHlwZXNGaWx0ZXIsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBBZGRGdW5jdGlvbiBhZGRGdW5jdGlvbikKK3sKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICAKKyAgICBWZWN0b3I8SlNWYWx1ZT4gcmVzdWx0OworICAgIEpTVmFsdWUg
bGVuZ3RoUHJvcGVydHkgPSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBkb3VibGUgbGVuZ3RoQXNEb3VibGUgPSBsZW5ndGhQcm9wZXJ0eS50b0xlbmd0aChleGVjKTsK
KyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FT
U0VSVChsZW5ndGhBc0RvdWJsZSA+PSAwLjAgJiYgbGVuZ3RoQXNEb3VibGUgPT0gc3RkOjp0cnVu
YyhsZW5ndGhBc0RvdWJsZSkpOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVp
bnQ2NF90PihsZW5ndGhBc0RvdWJsZSk7CisgICAgZm9yICh1aW50NjRfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgIEpTVmFsdWUgbmV4dCA9IGFycmF5TGlr
ZVZhbHVlLmdldChleGVjLCBpbmRleCk7CisgICAgICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIFJ1bnRpbWVUeXBlIHR5cGUgPSBy
dW50aW1lVHlwZUZvclZhbHVlKG5leHQpOworICAgICAgICBpZiAoISh0eXBlICYgbGVnYWxUeXBl
c0ZpbHRlcikpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBib29sIGV4aXRFYXJseSA9IGFkZEZ1bmN0aW9uKG5leHQsIHR5cGUpOworICAgICAgICBp
ZiAoZXhpdEVhcmx5KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogQUxXQVlTX0lO
TElORSBib29sIEpTT2JqZWN0OjpjYW5QZXJmb3JtRmFzdFB1dElubGluZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoVU5MSUtF
TFkocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8p
KQpAQCAtNTUsMTAgKzg4LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Y2FuUGVy
Zm9ybUYKIC8vIEVDTUEgOC42LjIuMgogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpwdXRJ
bmxpbmUoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhl
YXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpc09iamVjdCkpOwotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3Qs
IHRoaXNPYmplY3QpKSkKICAgICAgICAgcmV0dXJuIG9yZGluYXJ5U2V0U2xvdyhleGVjLCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90LnRoaXNWYWx1ZSgpLCBzbG90LmlzU3Ry
aWN0TW9kZSgpKTsKQEAgLTY5LDEwICsxMDQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2Jq
ZWN0OjpwdXRJbmxpbmUoSgogICAgICAgICByZXR1cm4gcHV0QnlJbmRleCh0aGlzT2JqZWN0LCBl
eGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7CiAKICAgICBp
ZiAodGhpc09iamVjdC0+Y2FuUGVyZm9ybUZhc3RQdXRJbmxpbmUoZXhlYywgdm0sIHByb3BlcnR5
TmFtZSkpIHsKLSAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90
b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSk7
CisgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hh
aW5NYXlJbnRlcmNlcHRTdG9yZVRvKHZtLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgaWYgKCF0
aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgMCwgc2xvdCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgp
KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJp
Y3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVBy
b3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC05NiwxMiArOTYsMTMgQEAgdm9pZCBKU1Byb21pc2VDb25zdHJ1
Y3Rvcjo6YWRkT3duSW50ZXJuYQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IGV4ZWMtPm5ld1Rhcmdl
dCgpOwogICAgIGlmIChuZXdUYXJnZXQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIFN0cnVjdHVyZSogcHJvbWlzZVN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgp
LCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQpAQCAtMTE0LDcgKzExNSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2Fs
bFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAi
UHJvbWlzZSIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUs
ICJQcm9taXNlIikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Myw5ICsxNDMsMTIgQEAgYm9vbCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpuZXh0KEV4
ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3BlcnR5TmFtZUl0ZXJhdG9y
RnVuY05leHQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjYWxsIFByb3BlcnR5TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0
eU5hbWVJdGVyYXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFBy
b3BlcnR5TmFtZUl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1Qcm9wZXJ0eU5hbWVJdGVyYXRvciBv
YmplY3QiKSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5uZXh0
KGV4ZWMsIHJlc3VsdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDctMjAwOCwgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0z
ODAsMTEgKzM4MCwxNCBAQCB2b2lkIEpTUm9wZVN0cmluZzo6cmVzb2x2ZVJvcGVTbG93Q2FzZShV
CiAKIHZvaWQgSlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBjbGVhckZpYmVycygpOwogICAgIEFTU0VSVChpc1JvcGUo
KSk7CiAgICAgQVNTRVJUKG1fdmFsdWUuaXNOdWxsKCkpOwogICAgIGlmIChleGVjKQotICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjLCBzY29wZSk7CiB9CiAKIEpTVmFsdWUgSlNTdHJpbmc6OnRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcxLDE3ICs3MSwxOSBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGJ1
aWxkKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAg
aWYgKCFtX29rYXkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIGlmIChtX2lzOEJpdCkgewogICAgICAgICAgICAgYnVmZmVyOC5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICAgICAgaWYgKCFidWZmZXI4LmRhdGEoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIFN0cmluZzo6YWRvcHQoYnVmZmVyOCkpOwogICAgICAgICB9CiAg
ICAgICAgIGJ1ZmZlcjE2LnNocmlua1RvRml0KCk7CiAgICAgICAgIGlmICghYnVmZmVyMTYuZGF0
YSgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXIxNikpOwogICAg
IH0KIApAQCAtMTI3LDkgKzEyOSwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBqc01ha2VOb250cml2aWFs
U3RyaW5nKEV4CiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZS4uLiBTdHJp
bmdUeXBlcz4KIGlubGluZSBKU1ZhbHVlIGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcsIGNvbnN0IFN0cmluZ1R5cGVzJi4uLiBz
dHJpbmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFN0cmluZyByZXN1bHQgPSBXVEY6OnRyeU1ha2VT
dHJpbmcoc3RyaW5nLCBzdHJpbmdzLi4uKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04MSw2ICs4MSw5IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGpvaW5TdHJp
bmdzKGNvbnN0IFYKIAogaW5saW5lIHVuc2lnbmVkIEpTU3RyaW5nSm9pbmVyOjpqb2luZWRMZW5n
dGgoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVk
IG51bWJlck9mU3RyaW5ncyA9IG1fc3RyaW5ncy5zaXplKCk7CiAgICAgaWYgKCFudW1iZXJPZlN0
cmluZ3MpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTEsNyArOTQsNyBAQCBpbmxpbmUgdW5zaWdu
ZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKICAgICB1bnNpZ25lZCByZXN1bHQ7CiAgICAg
aWYgKHRvdGFsTGVuZ3RoLnNhZmVHZXQocmVzdWx0KSA9PSBDaGVja2VkU3RhdGU6OkRpZE92ZXJm
bG93KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTksNiArMTAyLDkgQEAgaW5saW5lIHVuc2ln
bmVkIEpTU3RyaW5nSm9pbmVyOjpqb2luZWRMZQogCiBKU1ZhbHVlIEpTU3RyaW5nSm9pbmVyOjpq
b2luKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlQobV9zdHJp
bmdzLnNpemUoKSA8PSBtX3N0cmluZ3MuY2FwYWNpdHkoKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGggPSBqb2luZWRMZW5ndGgoc3RhdGUpOwpAQCAtMTE1LDcgKzEyMSw3IEBAIEpTVmFsdWUgSlNT
dHJpbmdKb2luZXI6OmpvaW4oRXhlY1N0YXRlJiAKICAgICAgICAgcmVzdWx0ID0gam9pblN0cmlu
Z3M8VUNoYXI+KG1fc3RyaW5ncywgbV9zZXBhcmF0b3IsIGxlbmd0aCk7CiAKICAgICBpZiAocmVz
dWx0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7
CiAKICAgICByZXR1cm4ganNTdHJpbmcoJnN0YXRlLCBXVEZNb3ZlKHJlc3VsdCkpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCShy
ZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsMTYgKzYwLDIwIEBAIGlubGluZSBKU1N0
cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXgKICAgICA6IG1fc2VwYXJhdG9yKHNlcGFyYXRv
cikKICAgICAsIG1faXNBbGw4Qml0KG1fc2VwYXJhdG9yLmlzOEJpdCgpKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIGlmIChVTkxJS0VMWSghbV9zdHJpbmdzLnRyeVJlc2VydmVDYXBhY2l0eShzdHJpbmdD
b3VudCkpKQotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogfQogCiBpbmxpbmUgSlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKEV4ZWNTdGF0ZSYgc3RhdGUsIExDaGFyIHNlcGFyYXRv
ciwgdW5zaWduZWQgc3RyaW5nQ291bnQpCiAgICAgOiBtX3NpbmdsZUNoYXJhY3RlclNlcGFyYXRv
cihzZXBhcmF0b3IpCiAgICAgLCBtX3NlcGFyYXRvciB7ICZtX3NpbmdsZUNoYXJhY3RlclNlcGFy
YXRvciwgMSB9CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5
UmVzZXJ2ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29w
ZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKU1N0cmluZ0pvaW5lcjo6YXBwZW5kKFN0cmlu
Z1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyYmIHN0cmluZykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIlByb3BlcnR5RGVzY3JpcHRvci5oIgogI2lu
Y2x1ZGUgIlN5bWJvbFRhYmxlLmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUg
IlZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTY2LDYg
KzE2Nyw3IEBAIHRlbXBsYXRlPFN5bWJvbFRhYmxlUHV0TW9kZSBzeW1ib2xUYWJsZVAKIGlubGlu
ZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5bWJvbFRhYmxlT2JqZWN0VHlwZSogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3dSZWFkT25seUVycm9yLCBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3JzLCBi
b29sJiBwdXRSZXN1bHQpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBXYXRjaHBvaW50U2V0KiBzZXQg
PSBudWxscHRyOwogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIHJlZzsKQEAgLTE4Miw3
ICsxODQsNyBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAg
ICAgIEFTU0VSVCghZmFzdEVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgaWYgKGZhc3RFbnRyeS5p
c1JlYWRPbmx5KCkgJiYgIWlnbm9yZVJlYWRPbmx5RXJyb3JzKSB7CiAgICAgICAgICAgICBpZiAo
c2hvdWxkVGhyb3dSZWFkT25seUVycm9yKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0yMDAsOSArMjAyLDkgQEAgaW5saW5lIGJv
b2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYgogICAgIC8vIHRoZSByaWdodCBmb3IgYmFy
cmllcnMgdG8gYmUgYWJsZSB0byB0cmlnZ2VyIEdDLiBBbmQgSSBkb24ndCB3YW50IHRvIGhvbGQg
Vk0KICAgICAvLyBsb2NrcyB3aGlsZSBHQydpbmcuCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0TW9k
ZSA9PSBTeW1ib2xUYWJsZVB1dE1vZGU6OkludmFsaWRhdGUpCi0gICAgICAgIHN5bWJvbFRhYmxl
UHV0SW52YWxpZGF0ZVdhdGNocG9pbnRTZXQoZXhlYy0+dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCByZWcsIHNldCk7CisgICAgICAgIHN5bWJvbFRhYmxlUHV0SW52YWxpZGF0ZVdh
dGNocG9pbnRTZXQodm0sIG9iamVjdCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwog
ICAgIGVsc2UKLSAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQoZXhlYy0+
dm0oKSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCByZWcsIHNldCk7CisgICAgICAgIHN5
bWJvbFRhYmxlUHV0VG91Y2hXYXRjaHBvaW50U2V0KHZtLCBvYmplY3QsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHJlZywgc2V0KTsKICAgICBwdXRSZXN1bHQgPSB0cnVlOwogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d0NvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDcgKzY2LDkgQEAgU3RydWN0dXJlKiBKU1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3I6OgogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCIlVHlwZWRBcnJheSUgc2hvdWxk
IG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiJVR5cGVkQXJyYXklIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOwogfQogCiBDb25zdHJ1Y3RUeXBlIEpTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3RE
YXRhJiBjb25zdHJ1Y3REYXRhKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyNiArMzksMjYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZGVmaW5lIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5D
VElPTihmdW5jdGlvbk5hbWUpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
c3dpdGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDhD
bGFtcGVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50
OENsYW1wZWRBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50OENsYW1wZWRBcnJheT4o
dm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2Fz
ZSBUeXBlSW50MzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQzMkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQzMkFy
cmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgY2FzZSBUeXBlVWludDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5h
bWU8SlNVaW50MzJBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQ2NDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biBmdW5jdGlvbk5hbWU8SlNGbG9hdDY0QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRmxvYXQzMjogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+
KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNGbG9hdDMyQXJyYXk+KHZtLCBleGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlSW50
ODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJ
bnQ4QXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQ4QXJyYXk+KHZtLCBl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg
Y2FzZSBUeXBlVWludDg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHJldHVybiBmdW5j
dGlvbk5hbWU8SlNVaW50OEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50
OEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgY2FzZSBUeXBlSW50MTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHJldHVybiBmdW5jdGlvbk5hbWU8SlNJbnQxNkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmdW5jdGlv
bk5hbWU8SlNJbnQxNkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlVWludDE2OiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIHJldHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4oZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWU8SlNVaW50MTZBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBOb3RUeXBlZEFycmF5OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwoIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC03MiwxNCArNzIsMTYg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5VgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBleGVjLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIWFyZ3VtZW50LmlzQ2VsbCgpIHx8ICFpc1R5cGVkVmlldyhh
cmd1bWVudC5hc0NlbGwoKS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyIpKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oYXJndW1lbnQpOwogCiAgICAgaWYgKHRo
aXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsKIH0KQEAgLTk0LDExMSArOTYsMTM5IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVYKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04o
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5F
UklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY1NldCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jQ29weVdpdGhpbik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENB
TExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hv
dWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAg
Q0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExf
R0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNKb2luKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9H
RU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZz
ZXQpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMg
bm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2Up
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0
ZUZ1bmNTdWJhcnJheUNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3
IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9Q
Uk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJh
eUNyZWF0ZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkg
dmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNl
KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMSArNTAs
MTYgQEAgdm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxl
ZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIk1hcCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rp
b25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdE1hcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1
bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiBt
YXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShl
eGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzEsMTEgKzc2LDExIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0
aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRk
ZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaElu
SXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGFJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlubGluZXMuaAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw5IEBAIGlubGluZSB2b2lkIE1h
cERhdGFJbXBsPEVudHJ5LCBKU0l0ZXJhdG8KIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5LCB0eXBl
bmFtZSBKU0l0ZXJhdG9yPgogaW5saW5lIENoZWNrZWRCb29sZWFuIE1hcERhdGFJbXBsPEVudHJ5
LCBKU0l0ZXJhdG9yPjo6ZW5zdXJlU3BhY2VGb3JBcHBlbmQoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIG93bmVyKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKG1fY2FwYWNpdHkgPiBtX3NpemUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yMTEsNyArMjE0LDcgQEAgaW5saW5lIENoZWNr
ZWRCb29sZWFuIE1hcERhdGFJbXBsPEVudHJ5LAogICAgIHZvaWQqIG5ld1N0b3JhZ2UgPSBudWxs
cHRyOwogICAgIERlZmVyR0MgZGVmZXIoKmV4ZWMtPmhlYXAoKSk7CiAgICAgaWYgKCFleGVjLT5o
ZWFwKCktPnRyeUFsbG9jYXRlU3RvcmFnZShvd25lciwgcmVxdWlyZWRTaXplICogc2l6ZW9mKEVu
dHJ5KSwgJm5ld1N0b3JhZ2UpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBFbnRyeSogbmV3RW50cmllcyA9IHN0YXRpY19jYXN0
PEVudHJ5Kj4obmV3U3RvcmFnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTWFwSXRlcmF0b3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsOSArNTAsMTIgQEAgdm9pZCBNYXBJdGVyYXRvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIE1hcEl0
ZXJhdG9yUHJvdG90eXBlRnVuY05leHQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0m
IHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTTWFwSXRlcmF0b3IqIGl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxK
U01hcEl0ZXJhdG9yKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRv
cikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgTWFwSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9u
LU1hcEl0ZXJhdG9yIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2Fs
bCBNYXBJdGVyYXRvci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKIAog
ICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChpdGVyYXRvci0+bmV4dChjYWxsRnJhbWUsIHJl
c3VsdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEzICs5MCwxNiBAQCB2
b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAKIEFMV0FZU19JTkxJTkUg
c3RhdGljIEpTTWFwKiBnZXRNYXAoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1Zh
bHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJy
b3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTTWFwKiBtYXAgPSBqc0R5bmFt
aWNDYXN0PEpTTWFwKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIW1hcCkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQg
b24gbm9uLU1hcCBvYmplY3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTWFwIG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmpl
Y3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gbWFwOwpA
QCAtMTU1LDI2ICsxNTgsMzUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY1ZhbHVlcyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRo
aXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIHZhbHVl
IGl0ZXJhdG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09i
aiwgSXRlcmF0ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEg
TWFwIHZhbHVlIGl0ZXJhdG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJ
dGVyYXRlVmFsdWUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXBQcm90
b0Z1bmNFbnRyaWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxG
cmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU01hcCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVh
dGUgYSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZt
KCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0cnVj
dHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBNYXAgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hcFByb3RvRnVuY0tleXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01h
cCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBrZXkgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmpl
Y3QuIikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0
ZShjYWxsRnJhbWUtPnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5t
YXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBmb3IgYSBub24tTWFw
IG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6
Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+bWFwSXRlcmF0
b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jSXNNYXAoRXhlY1N0YXRlKiBleGVjKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwOSw2ICsx
MDksOCBAQCBNb2R1bGVMb2FkZXJQcm90b3R5cGU6Ok1vZHVsZUxvYWRlclByb3RvCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVBhcnNlTW9kdWxlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9k
dWxlS2V5ID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0xMjcsNyArMTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVMb2FkZQogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgSlNQ
YXJzZXJDb21tZW50TW9kZTo6TW9kdWxlLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVN
b2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IpOwogCiAgICAgaWYgKGVycm9yLmlz
VmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgZXJyb3IudG9FcnJvck9iamVj
dChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIHNvdXJjZUNvZGUpKTsKKyAgICAgICAgdGhy
b3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgc291cmNlQ29kZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBBU1NFUlQobW9kdWxlUHJvZ3JhbU5vZGUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0
dGVyRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4
ICs3MiwxMSBAQCBzdGF0aWMgYm9vbCBjYWxsZXJJc1N0cmljdChFeGVjU3RhdGUqIGV4CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSZXR1cm5VbmRlZmluZWQoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGNhbGxlcklzU3RyaWN0KGV4
ZWMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2V0dGluZyBhIHByb3BlcnR5IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldHRpbmcgYSBwcm9wZXJ0eSB0aGF0IGhhcyBvbmx5IGEg
Z2V0dGVyIikpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCwxNSArMzY0
LDE4IEBAIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCAKIC8vIHRvIGFy
Z3VtZW50LXBsdXMtb25lIHNpZ25pZmljYW50IGZpZ3VyZXMpLgogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0V4cG9uZW50aWFsKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSB4OwogICAgIGlmICghdG9UaGlzTnVtYmVyKGV4
ZWMtPnRoaXNWYWx1ZSgpLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAg
IC8vIEdldCB0aGUgYXJndW1lbnQuIAogICAgIGludCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudDsK
ICAgICBib29sIGlzVW5kZWZpbmVkOwogICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5n
ZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNlc0luRXhwb25lbnQsIGlzVW5kZWZpbmVkKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgidG9FeHBvbmVudGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFu
ZCAyMCIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQg
bXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKIAogICAgIC8vIEhhbmRsZSBOYU4gYW5kIElu
ZmluaXR5LgogICAgIGlmICghc3RkOjppc2Zpbml0ZSh4KSkKQEAgLTM5NSwxNSArMzk4LDE4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIG1ldGhvZCB3aWxs
IGluc3RlYWQgZmFsbGJhY2sgdG8gY2FsbGluZyBUb1N0cmluZy4gCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+
dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8g
R2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IGRlY2ltYWxQbGFjZXM7CiAgICAgYm9vbCBpc1Vu
ZGVmaW5lZDsgLy8gVGhpcyBpcyBpZ25vcmVkOyB1bmRlZmluZWQgdHJlYXRlZCBhcyAwLgogICAg
IGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAwLCAyMCwgZGVjaW1hbFBsYWNl
cywgaXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQoKSBh
cmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8gMTUuNy40LjUu
NyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAv
LyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRo
YXQgTmFOCkBAIC00MjgsMTUgKzQzNCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlclByb3RvCiAvLyB3aXRoIHNtYWxsZXIgdmFsdWVzIGNvbnZlcnRlZCB0byBleHBvbmVu
dGlhbCByZXByZXNlbnRhdGlvbi4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVG9QcmVjaXNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVu
dC4gCiAgICAgaW50IHNpZ25pZmljYW50RmlndXJlczsKICAgICBib29sIGlzVW5kZWZpbmVkOwog
ICAgIGlmICghZ2V0SW50ZWdlckFyZ3VtZW50SW5SYW5nZShleGVjLCAxLCAyMSwgc2lnbmlmaWNh
bnRGaWd1cmVzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvUHJlY2lzaW9uKCkgYXJn
dW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
InRvUHJlY2lzaW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxIikpKTsKIAog
ICAgIC8vIFRvIHByZWNpc2lvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCBpcyB0cmVhdGVkIGFz
IFRvU3RyaW5nLgogICAgIGlmIChpc1VuZGVmaW5lZCkKQEAgLTQ4NSwyMiArNDk0LDIzIEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgaW50ZWdlclZhbHUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgZG91YmxlVmFsdWU7CiAgICAgaWYgKCF0b1RoaXNO
dW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIGRvdWJsZVZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKIAogICAgIGludDMyX3QgcmFkaXggPSBleHRyYWN0UmFkaXhGcm9tQXJncyhl
eGVjKTsKICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRv
U3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDIgYW5kIDM2IikpKTsKIAogICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oZG91YmxlVmFsdWUpOwogICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91Ymxl
VmFsdWUpCiAgICAgICAgIHJldHVybiBpbnRlZ2VyVmFsdWVUb1N0cmluZyhleGVjLCByYWRpeCwg
aW50ZWdlclZhbHVlKTsKIAotICAgIGlmIChyYWRpeCA9PSAxMCkgewotICAgICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2
bSwgdm0tPm51bWVyaWNTdHJpbmdzLmFkZChkb3VibGVWYWx1ZSkpKTsKLSAgICB9CisgICAgaWYg
KHJhZGl4ID09IDEwKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKCZ2
bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkpOwogCiAgICAgaWYgKCFzdGQ6
OmlzZmluaXRlKGRvdWJsZVZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcoZXhlYywgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQo
ZG91YmxlVmFsdWUpKSk7CkBAIC01MTEsMTkgKzUyMSwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG51bWJlclByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVt
YmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgZG91YmxlIHg7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVl
KCksIHgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcih4KS50b1N0cmluZyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdG9UaGlzTnVtYmVyKHRoaXNWYWx1ZSwgeCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFdURjo6bWFrZVN0cmluZygi
dGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwganNDYXN0PEpTU3RyaW5n
Kj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBXVEY6Om1ha2VT
dHJpbmcoInRoaXNOdW1iZXJWYWx1ZSBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIsIGpzQ2FzdDxK
U1N0cmluZyo+KGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIHRoaXNWYWx1ZSkpLT52YWx1ZShl
eGVjKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNywxMyArMjE3
LDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgb2JqZWN0VmFsdWUg
PSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUgcHJvdG9W
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG9WYWx1ZS5pc09iamVjdCgp
ICYmICFwcm90b1ZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIzMiw3ICsyMzUsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVy
QWNjZXNzQWxsb3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKG9iamVjdFZhbHVlKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBz
aG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBv
YmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNh
bnRTZXQpOwogICAgIEFTU0VSVF9VTlVTRUQoZGlkU2V0UHJvdG90eXBlLCB2bS5leGNlcHRpb24o
KSB8fCBkaWRTZXRQcm90b3R5cGUpOwpAQCAtMzQ0LDggKzM0NiwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG93bkVudW1lcmFiCiBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRpb24gbXVzdCBiZSBh
biBvYmplY3QuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNPYmplY3QqIGRlc2NyaXB0aW9uID0gYXNP
YmplY3QoaW4pOwpAQCAtMzkwLDcgKzM5NCw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFnZXQuaXNVbmRlZmluZWQoKSkgewogICAgICAg
ICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEoZ2V0
LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikp
OworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDA1LDcgKzQwOSw3IEBAIGJv
b2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgaWYgKCFzZXQu
aXNVbmRlZmluZWQoKSkgewogICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAg
ICAgICBpZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNldHRl
ciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNDE3LDEyICs0MjEsMTIgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3Rh
dGUqIGV4ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChkZXNjLnZhbHVlKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3Bl
cnR5LiAgJ3ZhbHVlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4i
KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklu
dmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIg
b3Igc2V0dGVyLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChk
ZXNjLndyaXRhYmxlUHJlc2VudCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9w
ZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxlJyBw
cmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC00MzAsMTkgKzQzNCwyNSBA
QCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlz
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpOwotICAg
IEpTT2JqZWN0KiBPID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVz
IGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7CisgICAgSlNPYmplY3QqIG9iaiA9
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAg
ICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKLSAgICBpZiAoIXRvUHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKSkKKyAgICBhdXRvIHN1
Y2Nlc3MgPSB0b1Byb3BlcnR5RGVzY3JpcHRvcihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgZGVz
Y3JpcHRvcik7CisgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSA9PSBzdWNjZXNzKTsKKyAg
ICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
OwogICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwgKCFk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKTsKLSAgICBPLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3du
UHJvcGVydHkoTywgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0cnVlKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE8pOworICAgIG9iai0+bWV0aG9kVGFibGUodm0pLT5kZWZp
bmVPd25Qcm9wZXJ0eShvYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdHJ1ZSk7
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsK
IH0KIAogc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQpAQCAtNDg1LDggKzQ5NSwxMSBA
QCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCku
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKICAgICBKU09i
amVjdCogdGFyZ2V0T2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIEpTT2Jq
ZWN0KiBwcm9wcyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICgh
cHJvcHMpCkBAIC00OTYsMTYgKzUwOSwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3Ry
dWN0b3JDcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSBwcm90byA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAm
JiAhcHJvdG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3Ig
bnVsbC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51
bGwuIikpOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBwcm90by5pc09iamVjdCgpCiAgICAg
ICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgYXNPYmplY3QocHJvdG8pKQogICAgICAg
ICA6IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnQoMSkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdP
YmplY3QpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNj
cmlwdG9yIGxpc3QgbXVzdCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNjcmlwdG9y
IGxpc3QgbXVzdCBiZSBhbiBPYmplY3QuIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZGVmaW5lUHJvcGVydGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50
KDEpKSkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MTI3LDYgKzEyNyw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNP
YmplY3QgPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmpl
Y3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTM0LDcgKzEzNyw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBKU1ZhbHVlIGdldCA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxs
RGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtMTQ2LDEzICsxNDksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUp
OwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhp
cyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0xNjAsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQ
cm90bwogICAgIEpTVmFsdWUgc2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENhbGxUeXBl
OjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImludmFsaWQgc2V0dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKTsK
IAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNzIsNyArMTc4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0
b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwogCiAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRydWU7
Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3Bl
cnR5KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhy
b3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHko
dGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMjY5
LDYgKzI3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSk7CiAgICAgaWYgKHRoaXNWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVjdFN0
cmluZygpIDogdm0uc21hbGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CkBAIC0zMDMsNyAr
MzExLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgU3RyaW5nIG5ld1N0cmluZyA9IFdURjo6
dHJ5TWFrZVN0cmluZygiW29iamVjdCAiLCBXVEZNb3ZlKHRhZyksICJdIik7CiAgICAgICAgIGlm
ICghbmV3U3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgICAgIGF1dG8gcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgbmV3
U3RyaW5nKTsKICAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+c2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShleGVjLCB2bSwgcmVzdWx0LCB0b1N0cmluZ1RhZ1Nsb3QpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBI
YXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMiwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LTIwMDksIDIwMTMtMjAx
NCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNDAsNiArNDAsNyBAQCBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2Fs
bEZyYW1lCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBK
U1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGludDMyX3Qg
bGVuZ3RoMSA9IHMxLT5sZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aDEpCkBAIC00OCw3ICs0OSw3
IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICBpZiAoIWxl
bmd0aDIpCiAgICAgICAgIHJldHVybiBzMTsKICAgICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+
KGxlbmd0aDEsIGxlbmd0aDIpKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKIAogICAgIHJldHVybiBKU1JvcGVTdHJpbmc6OmNyZWF0ZSh2bSwgczEsIHMyKTsKIH0KQEAg
LTU2LDEzICs1NywxNCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRl
CiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHUxLCBjb25zdCBTdHJpbmcmIHUyLCBjb25zdCBTdHJpbmcmIHUzKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CiAKICAgICBpbnQzMl90IGxlbmd0aDEgPSB1MS5sZW5ndGgoKTsKICAgICBpbnQzMl90
IGxlbmd0aDIgPSB1Mi5sZW5ndGgoKTsKICAgICBpbnQzMl90IGxlbmd0aDMgPSB1My5sZW5ndGgo
KTsKICAgICAKICAgICBpZiAobGVuZ3RoMSA8IDAgfHwgbGVuZ3RoMiA8IDAgfHwgbGVuZ3RoMyA8
IDApCi0gICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIGlm
ICghbGVuZ3RoMSkKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1
MiksIGpzU3RyaW5nKHZtLCB1MykpOwpAQCAtNzIsNyArNzQsNyBAQCBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTdHJpbmcoRXhlY1N0YXRlCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBq
c1N0cmluZyh2bSwgdTEpLCBqc1N0cmluZyh2bSwgdTIpKTsKIAogICAgIGlmIChzdW1PdmVyZmxv
d3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMiwgbGVuZ3RoMykpCi0gICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRl
KGV4ZWMtPnZtKCksIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MiksIGpzU3RyaW5n
KHZtLCB1MykpOwogfQpAQCAtODAsMTIgKzgyLDEzIEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdp
c3RlckFycmF5KEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXIqIHN0cmluZ3MsIHVuc2lnbmVkIGNv
dW50KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNSb3BlU3RyaW5nOjpSb3BlQnVpbGRlciByb3Bl
QnVpbGRlcigqdm0pOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKICAgICAgICAgSlNWYWx1ZSB2ID0gc3RyaW5nc1stc3RhdGljX2Nhc3Q8aW50PihpKV0uanNW
YWx1ZSgpOwogICAgICAgICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3RyaW5nKGV4ZWMp
KSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9
CiAKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpAQCAtOTQsMTMgKzk3LDE0IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZ0Zyb21SZWdpc3QKIEFMV0FZU19JTkxJTkUg
SlNWYWx1ZSBqc1N0cmluZ0Zyb21Bcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRo
aXNWYWx1ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIg
cm9wZUJ1aWxkZXIoKnZtKTsKICAgICByb3BlQnVpbGRlci5hcHBlbmQodGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVu
dENvdW50KCk7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudChpKTsK
ICAgICAgICAgaWYgKCFyb3BlQnVpbGRlci5hcHBlbmQodi50b1N0cmluZyhleGVjKSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJvcGVCdWlsZGVyLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsOCArNTYsOSBAQCBQcm94eUNvbnN0cnVjdG9yOjpQcm94eUNv
bnN0cnVjdG9yKFZNJiB2CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1h
a2VSZXZvY2FibGVQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVu
dHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVl
ZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhh
bmRsZXIiKSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKQEAgLTgxLDcgKzgyLDggQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWFrZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9j
YWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2Fu
bm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxsZWQiKSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkucmV2b2NhYmxlIGNh
bm5vdCBiZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkIikpOwogfQogCiB2b2lk
IFByb3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgY2hhciogbmFt
ZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTk0LDggKzk2LDkgQEAgdm9pZCBQ
cm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAg
aWYgKGV4ZWMtPm5ld1RhcmdldCgpLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBvZiBQcm94eSBjb25z
dHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgb2YgUHJveHkg
Y29uc3RydWN0IHNob3VsZCBub3QgYmUgdW5kZWZpbmVkIikpOwogCiAgICAgQXJnTGlzdCBhcmdz
KGV4ZWMpOwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gYXJncy5hdCgwKTsKQEAgLTExMSw3ICsxMTQs
OCBAQCBDb25zdHJ1Y3RUeXBlIFByb3h5Q29uc3RydWN0b3I6OmdldENvbnN0CiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxQcm94eShFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJQcm94eSIpKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJQcm94eSIpKTsKIH0KIAogQ2FsbFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKQEAgLTc5LDE5ICs4MCwyMCBAQCBTdHJ1Y3R1cmUqIFByb3h5T2JqZWN0
OjpzdHJ1Y3R1cmVGb3JUYXJnCiAKIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQog
eworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBz
aG91bGQgYmUgYW4gT2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3QqIHRhcmdldEFz
UHJveHkgPSBqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewogICAgICAgICBp
ZiAodGFyZ2V0QXNQcm94eS0+aGFuZGxlcigpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFu
b3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIgUHJveHkgc2hvdWxkIG5vdCBoYXZlIGJlZW4g
cmV2b2tlZCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0
aGUgb3RoZXIgUHJveHkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZCIpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkn
cyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQg
YmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTYsOCArMTE4
LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNfcHJveHlBbHJlYWR5UmV2b2tlZAogc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5
T2JqZWN0LCBKU1ZhbHVlIHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgIH0KIApAQCAtMTM1LDcgKzEzOCw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZvcm1Qcm94
eUdldChFeGVjU3RhdGUKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHlPYmplY3Qt
PmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAog
ICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsK
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTE1OSwxMCArMTYyLDEwIEBAIHN0YXRpYyBKU1Zh
bHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUKICAgICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKSkgewogICAgICAg
ICBpZiAoZGVzY3JpcHRvci5pc0RhdGFEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmln
dXJhYmxlKCkgJiYgIWRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICAgICAgaWYgKCFz
YW1lVmFsdWUoZXhlYywgZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBo
YW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRh
YmxlIHByb3BlcnR5IHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJv
cGVydHkiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24t
Y29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1l
IHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKICAgICAgICAgfSBlbHNlIGlmIChk
ZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJh
YmxlKCkgJiYgZGVzY3JpcHRvci5nZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAg
ICBpZiAoIXRyYXBSZXN1bHQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ2dldCcg
cmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEg
Z2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAn
Z2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhv
dXQgYSBnZXR0ZXIgc2hvdWxkIGJlIHVuZGVmaW5lZCIpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTg1LDggKzE4OCw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXQoRXhlY1N0YXRl
KiAKIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1
cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsK
QEAgLTIwMCw3ICsyMDQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRo
b2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBp
ZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFs
cmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTIyMSw3ICsyMjUsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1Vu
ZGVmaW5lZCgpICYmICF0cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBjYWxsIHNob3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJyZXN1
bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFu
IE9iamVjdCBvciB1bmRlZmluZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTIzNCw3ICsyMzgsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRo
b2RHCiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3Jp
cHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIldoZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yJyBpcyB1bmRlZmluZWQgdGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hl
biB0aGUgcmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0
aGUgdGFyZ2V0IG11c3QgYmUgY29uZmlndXJhYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIGRvZXNuJ3Qgd29yayBpZiAn
dGFyZ2V0JyBpcyBhbm90aGVyIFByb3h5LiBXZSBkb24ndCBoYXZlIGlzRXh0ZW5zaWJsZSBpbXBs
ZW1lbnRlZCBpbiBhIHdheSB0aGF0IGZpdHMgdy8gUHJveHlzLgpAQCAtMjQ2LDcgKzI1MCw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgICAgIC8v
IEZJWE1FOiBDb21lIHVwIHdpdGggYSB0ZXN0IGZvciB0aGlzIGVycm9yLiBJJ20gbm90IHN1cmUg
aG93IHRvIGJlY2F1c2UKICAgICAgICAgICAgIC8vIE9iamVjdC5zZWFsKG8pIHdpbGwgbWFrZSBh
bGwgZmllbGRzIFtbQ29uZmlndXJhYmxlXV0gZmFsc2UuCiAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mzc2Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hvdWxk
IGJlIGV4dGVuc2libGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJu
cyB1bmRlZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxl
IikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTI2NCwxMyAr
MjY4LDEzIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICBi
b29sIHZhbGlkID0gdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxs
cHRyLCBwcm9wZXJ0eU5hbWUsIGlzRXh0ZW5zaWJsZSwKICAgICAgICAgdHJhcFJlc3VsdEFzRGVz
Y3JpcHRvciwgaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkLCB0YXJnZXRQcm9wZXJ0
eURlc2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKICAgICBpZiAoIXZhbGlkKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlw
dG9yIHRlc3QiKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgZmFpbHMgdGhl
IElzQ29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0ZXN0IikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSgpKSB7CiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVk
IHx8IHRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0aGUg
J3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBpcyBh
IGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CisgICAgICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlc3VsdCBmcm9tICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFibGUgd2hlbiB0
aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBvciBpZiBpdCBp
cyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yOTEsOCArMjk1LDkgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kRwogYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VM
WSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTT2JqZWN0KiB0YXJnZXQg
PSB0aGlzLT50YXJnZXQoKTsKQEAgLTMwNyw3ICszMTIsNyBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtSGFzUHJvcGVydHkoRXhlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMt
PmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVy
cm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMzOCwxNCArMzQzLDE0IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKGlzUHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYg
KCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVl
JyBmb3Igbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzIikpOworICAgICAgICAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycgbXVz
dCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9v
bCBpc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShleGVjKTsKICAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAn
dHJ1ZScgZm9yIGEgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1
cmFibGUgcHJvcGVydHkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9y
IGEgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJv
cGVydHkiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0zNTYsOCArMzYxLDEwIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1I
YXNQcm9wZXJ0eShFeGUKIAogYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90Q29t
bW9uKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGlmIChVTkxJS0VMWSghZXhlYy0+dm0oKS5pc1NhZmVUb1JlY3Vy
c2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewor
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwpAQCAtMzk0LDgg
KzQwMSw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBQZXJmb3JtRGVmYXVsdFB1dEZ1bmMKIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVl
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUGVyZm9ybURl
ZmF1bHRQdXRGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdFB1dCkKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDA0LDcg
KzQxMiw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAg
IEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVy
VmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9r
ZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDM2
LDExICs0NDQsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIAog
ICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0
b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJs
ZSgpKSB7CiAgICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVl
KCksIHB1dFZhbHVlKSkgewotICAgICAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxl
IGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1
cm4gZmFsc2Ugb3IgYmUgdGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgb24gYSBub24tY29uZmlndXJhYmxlIGFuZCBub24t
d3JpdGFibGUgcHJvcGVydHkgb24gJ3RhcmdldCcgc2hvdWxkIGVpdGhlciByZXR1cm4gZmFsc2Ug
b3IgYmUgdGhlIHNhbWUgdmFsdWUgYWxyZWFkeSBvbiB0aGUgJ3RhcmdldCciKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVzY3JpcHRvci5jb25maWd1
cmFibGUoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3Mg
J3NldCcgbWV0aG9kIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRo
b3V0IGEgc2V0dGVyIHNob3VsZCByZXR1cm4gZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0
JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQg
YSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4NiwxNCArNDk0LDE1IEBAIGJvb2wgUHJveHlPYmpl
Y3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWwKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHBlcmZvcm1Qcm94eUNhbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CiAgICAgfQogICAgIFByb3h5T2JqZWN0KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVj
dCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5o
YW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
CiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtNTM1LDE0ICs1NDQsMTUgQEAgQ2FsbFR5cGUg
UHJveHlPYmplY3Q6OmdldENhbGxEYXRhKEpTQ2VsbAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsK
LSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1ZhbHVlKCkpOwogICAgIH0KICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8
UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFu
ZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTU2OSw3ICs1NzksNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxlcidz
ICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJv
bSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3Qi
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC01OTAsOCAr
NjAwLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbgogYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIERlZmF1bHREZWxldGVGdW5jdGlvbiBwZXJmb3JtRGVmYXVsdERlbGV0ZSkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQo
KSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtNjAwLDcgKzYxMSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1E
ZWxldGUoRXhlY1N0YXQKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNjMxLDcgKzY0Miw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1EZWxldGUoRXhlY1N0YXQKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKICAg
ICBpZiAodGFyZ2V0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjcmlwdG9yKSkgewogICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkp
IHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94
eSBoYW5kbGVyJ3MgJ2RlbGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3
aGVuIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOworICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBo
YW5kbGVyJ3MgJ2RlbGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3aGVu
IHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlIikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjY2LDE0ICs2NzcsMTUgQEAg
Ym9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5k
bGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJl
dm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NzAyLDcgKzcxNCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW8K
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAodGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAncHJldmVudEV4dGVuc2lv
bnMnIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRob3VnaCBpdHMgdGFyZ2V0IGlzIGV4dGVuc2li
bGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIGZhbHNlIikpOworICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdwcmV2ZW50RXh0
ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMgZXh0
ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC03MTgsMTQgKzczMCwxNSBAQCBib29s
IFByb3h5T2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhKU09iCiBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtSXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFs
dWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzU3LDExICs3
NzAsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeAogICAgIGlm
ICh0cmFwUmVzdWx0QXNCb29sICE9IGlzVGFyZ2V0RXh0ZW5zaWJsZSkgewogICAgICAgICBpZiAo
aXNUYXJnZXRFeHRlbnNpYmxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXRyYXBSZXN1bHRBc0Jv
b2wpOwotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUg
dGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgZmFsc2Ugd2hlbiB0aGUg
dGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIHRydWUiKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzVGFyZ2V0RXh0ZW5zaWJsZSk7
CiAgICAgICAgICAgICBBU1NFUlQodHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5z
aWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJs
ZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IG9iamVjdCdzICdpc0V4
dGVuc2libGUnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVu
c2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVybmVkIGZhbHNlIikpOwogICAgICAgICB9CiAgICAg
fQogICAgIApAQCAtNzc2LDggKzc4OSw5IEBAIGJvb2wgUHJveHlPYmplY3Q6OmlzRXh0ZW5zaWJs
ZShKU09iamVjdCoKIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NzkxLDcgKzgwNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmICho
YW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtODM2LDExICs4NTAsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blBy
b3BlcgogCiAgICAgaWYgKCFpc1RhcmdldERlc2NyaXB0b3JEZWZpbmVkKSB7CiAgICAgICAgIGlm
ICghdGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQg
dHJ1ZSBldmVuIHRob3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3Mg
dGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCBhbmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJs
ZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBldmVuIHRo
b3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVy
bmVkIHVuZGVmaW5lZCBhbmQgdGhlIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSIpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2V0dGluZ0NvbmZp
Z3VyYWJsZVRvRmFsc2UpIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZv
ciBhIG5vbi1jb25maWd1cmFibGUgZmllbGQgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQiKSk7CisgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5
J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3Vy
YWJsZSBmaWVsZCBldmVuIHRob3VnaCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFBy
b3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVmaW5lZCIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCkBAIC04NTMsMTEgKzg2NywxMSBAQCBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVyCiAgICAgYm9vbCB0aHJvd0V4Y2VwdGlvbiA9IGZhbHNl
OwogICAgIGJvb2wgaXNDb21wYXRpYmxlRGVzY3JpcHRvciA9IHZhbGlkYXRlQW5kQXBwbHlQcm9w
ZXJ0eURlc2NyaXB0b3IoZXhlYywgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0YXJnZXRJc0V4dGVu
c2libGUsIGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0
aW9uKTsKICAgICBpZiAoIWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0
cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0aGF0IGlzIGNvbXBh
dGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQg
aXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3VyYWJsZVRvRmFs
c2UgJiYgdGFyZ2V0RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRy
YXAgZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJn
ZXQgZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBt
dXN0IGRvIHNvIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEg
bm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRoZSBp
bnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyIpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTg3MywxMyArODg3LDE0IEBAIGJvb2wg
UHJveHlPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2IKIHZvaWQgUHJveHlPYmplY3Q6OnBl
cmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHRyYXBSZXN1bHQsIEVudW1lcmF0aW9uTW9kZSBlbnVtZXJhdGlvbk1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
SlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJW
YWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tl
ZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NjksNyArOTg0
LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9y
IChVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA6IHRhcmdldE5vbkNvbmZpZ3VyYWJsZUtleXMpIHsK
ICAgICAgICAgaWYgKHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwp
ID09IElzTm90Q29udGFpbmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcgaGFzIHRoZSBub24tY29uZmln
dXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQgd2FzIG5vdCBpbiB0aGUg
cmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiUHJveHkgb2JqZWN0J3MgJ3RhcmdldCcg
aGFzIHRoZSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRo
YXQgd2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtOTc5LDEzICs5OTQsMTMgQEAg
dm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TgogCiAgICAgZm9yIChVbmlx
dWVkU3RyaW5nSW1wbCogaW1wbCA6IHRhcmdldENvbmZpZ3VyYWJsZUtleXMpIHsKICAgICAgICAg
aWYgKHJlbW92ZUlmQ29udGFpbmVkSW5VbmNoZWNrZWRSZXN1bHRLZXlzKGltcGwpID09IElzTm90
Q29udGFpbmVkSW4pIHsKLSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgbWFrZVN0
cmluZygiUHJveHkgb2JqZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0eSAnIiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJl
c3VsdCBmcm9tIHRoZSAnb3duS2V5cycgdHJhcCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIlByb3h5IG9iamVjdCdzIG5vbi1leHRlbnNp
YmxlICd0YXJnZXQnIGhhcyBjb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwg
IicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodW5jaGVj
a2VkUmVzdWx0S2V5cy5zaXplKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEg
a2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiKSk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90
IHByZXNlbnQgaW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIH0KQEAgLTEwMjIsMTQgKzEwMzcsMTUgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybVNldFByb3RvdHlwZShFeAogICAgIEFTU0VSVChwcm90b3R5cGUuaXNPYmplY3QoKSB8fCBw
cm90b3R5cGUuaXNOdWxsKCkpOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5p
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9
IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2
b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwNTcsNyArMTA3Myw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICAKICAgICBpZiAoIXRyYXBSZXN1
bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5
cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90
b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBjb3VsZCBu
b3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVjdGVkIHRv
IHN1Y2NlZWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEwNzEsNyAr
MTA4Nyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXgKICAgICBp
ZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIXNhbWVW
YWx1ZShleGVjLCBwcm90b3R5cGUsIHRhcmdldFByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJh
cCByZXR1cm5lZCB0cnVlIHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhl
IG5ldyBwcm90b3R5cGUgdmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3Rv
dHlwZSB2YWx1ZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3Rv
dHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1leHRlbnNp
YmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1
cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA4NiwxNCArMTEwMiwxNSBAQCBi
b29sIFByb3h5T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqCiBKU1ZhbHVlIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAK
ICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFu
ZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlS
ZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQog
CkBAIC0xMTE1LDcgKzExMzIsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJv
dG90eXBlCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQu
aXNPYmplY3QoKSAmJiAhdHJhcFJlc3VsdC5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXRQcm90b3R5cGVP
ZicgdHJhcCBzaG91bGQgZWl0aGVyIHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCIpKTsKKyAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5k
bGVyJ3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVj
dCBvciBudWxsIikpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTEy
OSw3ICsxMTQ2LDcgQEAgSlNWYWx1ZSBQcm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZQog
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICBp
ZiAoIXNhbWVWYWx1ZShleGVjLCB0YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdnZXRQcm90
b3R5cGVPZicgdHJhcCBmb3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0
aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIikpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2dldFByb3Rv
dHlwZU9mJyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRo
ZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5cGUiKSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWZsZWN0T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDI2ICs5NSwyOSBAQCB2b2lkIFJlZmxlY3RPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2
CiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmNvbnN0cnVj
dAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0Q29uc3RydWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhl
Yy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJl
ZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVj
dG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciIpKSk7CiAKICAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CiAgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlOwogICAgIGlm
ICghdGFyZ2V0LmlzQ29uc3RydWN0b3IoY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YSBjb25zdHJ1Y3RvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOwogCiAgICAgSlNW
YWx1ZSBuZXdUYXJnZXQgPSB0YXJnZXQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
PSAzKSB7CiAgICAgICAgIG5ld1RhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDIpOwogICAgICAgICBp
ZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25z
dHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJl
c2VudCIpKSk7CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVz
IHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiKSkpOwogICAg
IH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCog
YXJndW1lbnRzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3VtZW50
KDEpKTsKICAgICBpZiAoIWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3Ry
dWN0IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50
IGJlIGFuIG9iamVjdCIpKSk7CiAKICAgICBjcmVhdGVMaXN0RnJvbUFycmF5TGlrZShleGVjLCBh
cmd1bWVudHNPYmplY3QsIFJ1bnRpbWVUeXBlTWFza0FsbFR5cGVzLCBBU0NJSUxpdGVyYWwoIlRo
aXMgZXJyb3IgbXVzdCBub3QgYmUgcmFpc2VkIiksIFsmXSAoSlNWYWx1ZSB2YWx1ZSwgUnVudGlt
ZVR5cGUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHZhbHVlKTsKQEAgLTEy
OSw5ICsxMzIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQog
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5kZWZpbmVwcm9w
ZXJ0eQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0RGVmaW5lUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJn
ZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQg
YmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5
IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDUsMjUgKzE1MSwzMSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAgICAgLy8gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSBz
aG91bGQgbm90IHRocm93IGFuIGVycm9yIHdoZW4gdGhlIGRlZmluZU93blByb3BlcnR5IG9wZXJh
dGlvbiBmYWlscy4KICAgICBib29sIHNob3VsZFRocm93ID0gZmFsc2U7CiAgICAgSlNPYmplY3Qq
IHRhcmdldE9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVm
aW5lT3duUHJvcGVydHkodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHRhcmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CiB9
CiAKIC8vIEZJWE1FOiBSZWZsZWN0LmVudW1lcmF0ZSBpcyByZW1vdmVkIGluIEVDTUEgMjAxNiBk
cmFmdC4KIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1yZWZsZWN0LmVudW1lcmF0ZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZWN0RW51bWVyYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVyYXRlIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZW51bWVy
YXRlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1
cmUoKSwgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWZsZWN0T2JqZWN0R2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBi
ZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgY29uc3QgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MCw5ICsxOTIsMTIgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1
Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdl
dCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0IikpKTsKIAogICAgIGF1dG8ga2V5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtl
eShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xOTQsMTggKzIwOSwy
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldHByb3RvdHlwZW9mCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZihFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShvYmplY3RDb25zdHJ1Y3RvckdldFByb3RvdHlwZU9mKGV4ZWMsIGFzT2JqZWN0KHRh
cmdldCkpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVm
bGVjdC5pc2V4dGVuc2libGUKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9i
amVjdElzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2Jq
ZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmlzRXh0
ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAog
ICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTIxNiwyMCArMjM3LDI2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Qub3dua2V5cwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0T3duS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWly
ZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVmbGVjdC5vd25LZXlzIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3Qi
KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlLZXlzKGV4ZWMsIGpz
Q2FzdDxKU09iamVjdCo+KHRhcmdldCksIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3NBbmRTeW1i
b2xzLCBEb250RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiB9CiAKIC8vIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QucHJldmVudGV4dGVuc2lvbnMKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFByZXZlbnRFeHRlbnNpb25z
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJl
IGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9u
cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBib29sIHJlc3VsdCA9IG9iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhl
Yyk7CisgICAgYm9vbCByZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4
dGVuc2lvbnMob2JqZWN0LCBleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1bHQpKTsKQEAgLTIzOCw5ICsyNjUsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogLy8gaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5zZXQKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldCByZXF1
aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBKU09iamVjdCog
dGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKQEAgLTI1NCwyNSArMjg0
LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBE
byBub3QgcmFpc2UgYW55IHJlYWRvbmx5IGVycm9ycyB0aGF0IGhhcHBlbiBpbiBzdHJpY3QgbW9k
ZS4KICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QocmVjZWl2ZXIsIHNob3VsZFRocm93SWZDYW50U2V0KTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPmFyZ3Vt
ZW50KDIpLCBzbG90KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRh
cmdldE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQodGFyZ2V0T2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGV4ZWMtPmFyZ3VtZW50KDIpLCBzbG90KSkpOwogfQogCiAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldHByb3RvdHlwZW9mCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFy
Z3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3Qi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGV4
ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJvdG8uaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNv
bmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQg
YmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxsIikpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxs
b3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihmYWxzZSkpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIHNob3Vs
ZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmpl
Y3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50U2V0KTsK
ICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOSBAQCBpbmxpbmUgU3RydWN0dXJlKiBnZXRSZWdF
eHBTdHJ1Y3R1cmUoRXhlCiAKIGlubGluZSBSZWdFeHBGbGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBmbGFncykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChmbGFncy5pc1Vu
ZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gTm9GbGFnczsKICAgICBKU1N0cmluZyogZmxhZ3NT
dHJpbmcgPSBmbGFncy50b1N0cmluZyhleGVjKTsKQEAgLTIyMiwxMyArMjI1LDE1IEBAIGlubGlu
ZSBSZWdFeHBGbGFncyB0b0ZsYWdzKEV4ZWNTdGF0ZSogZXgKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBJbnZhbGlkRmxhZ3M7CiAgICAgaWYgKHJlc3VsdCA9
PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7Cisg
ICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHN0YXRpYyBKU09iamVjdCogcmVnRXhwQ3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBuZXdUYXJnZXQsIEpTVmFs
dWUgcGF0dGVybkFyZywgSlNWYWx1ZSBmbGFnc0FyZykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0
cmluZyBwYXR0ZXJuID0gcGF0dGVybkFyZy5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6
IHBhdHRlcm5BcmcudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMzksNyArMjQ0LDcg
QEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKgogCiAgICAgUmVnRXhw
KiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwogICAgIGlmICgh
cmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3Io
ZXhlYywgcmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnZXRSZWdFeHBTdHJ1Y3R1cmUoZXhlYywgZ2xvYmFsT2JqZWN0LCBuZXdUYXJnZXQpOwog
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxLDYgKzE3MSw4IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cE9iamVjdDo6bWF0Y2goRXhlY1N0YXQK
IHRlbXBsYXRlPHR5cGVuYW1lIEZpeEVuZEZ1bmM+CiBKU1ZhbHVlIGNvbGxlY3RNYXRjaGVzKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc3RyaW5nLCBjb25zdCBTdHJpbmcmIHMs
IFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciwgUmVnRXhwKiByZWdFeHAsIGNvbnN0IEZp
eEVuZEZ1bmMmIGZpeEVuZCkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSBjb25zdHJ1Y3Rvci0+cGVyZm9ybU1h
dGNoKHZtLCByZWdFeHAsIHN0cmluZywgcywgMCk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBqc051bGwoKTsKQEAgLTE5Nyw3ICsxOTksNyBAQCBKU1ZhbHVlIGNvbGxlY3RNYXRj
aGVzKFZNJiB2bSwgRXhlY1N0YXRlCiAgICAgICAgICAgICBNYXRjaFJlc3VsdCBzYXZlZFJlc3Vs
dCA9IHJlc3VsdDsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBpZiAoYXJyYXkt
Pmxlbmd0aCgpICsgbWF0Y2hDb3VudCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwT2JqZWN0LmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cC5oIgorI2luY2x1ZGUgIlRo
cm93U2NvcGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAgICAgCkBAIC00MywyMiArNDQsMjggQEAg
cHVibGljOgogCiAgICAgYm9vbCBzZXRMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBzaXplX3Qg
bGFzdEluZGV4KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIGlmIChMSUtF
TFkobV9sYXN0SW5kZXhJc1dyaXRhYmxlKSkgewogICAgICAgICAgICAgbV9sYXN0SW5kZXguc2V0
V2l0aG91dFdyaXRlQmFycmllcihqc051bWJlcihsYXN0SW5kZXgpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGJvb2wgc2V0TGFzdEluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBsYXN0SW5kZXgsIGJvb2wgc2hvdWxkVGhyb3cpCiAgICAgeworICAg
ICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFi
bGUpKSB7CiAgICAgICAgICAgICBtX2xhc3RJbmRleC5zZXQoZXhlYy0+dm0oKSwgdGhpcywgbGFz
dEluZGV4KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEpTVmFsdWUgZ2V0TGFzdEluZGV4KCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsOSArOTgs
MTIgQEAgdm9pZCBSZWdFeHBQcm90b3R5cGU6OnZpc2l0Q2hpbGRyZW4oSlNDZQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Rlc3RGYXN0KEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcg
PSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZ09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmlu
ZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEw
OSw5ICsxMTIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY0V4ZWMoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6
OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJCdWlsdGlu
IFJlZ0V4cCBleGVjIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJCdWlsdGluIFJlZ0V4
cCBleGVjIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKICAgICBKU1N0
cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAg
ICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC0xMjAsOSArMTI2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1
bmNNYXRjaEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxs
KGV4ZWMpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtMTMzLDkgKzE0MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG9GdW5jQ29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwpAQCAtMTQzLDcgKzE1NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVnRXhwUHJvdG8KICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpIHsKICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBz
dXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIikp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhw
IGZyb20gYW5vdGhlci4iKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KGFyZzAp
LT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICFleGVj
LT5hcmd1bWVudENvdW50KCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CkBAIC0xNTYsMTUgKzE2OCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICAgICAgICAgIGlmIChmbGFncyA9PSBJbnZhbGlkRmxhZ3MpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRv
IFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSkpOwogICAgICAgICB9Ci0gICAgICAgIHJlZ0V4cCA9IFJl
Z0V4cDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHBhdHRlcm4sIGZsYWdzKTsKKyAgICAgICAgcmVnRXhw
ID0gUmVnRXhwOjpjcmVhdGUodm0sIHBhdHRlcm4sIGZsYWdzKTsKICAgICB9CiAKICAgICBpZiAo
IXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
cmVnRXhwLT5lcnJvck1lc3NhZ2UoKSkpOwogCi0gICAgYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVl
KS0+c2V0UmVnRXhwKGV4ZWMtPnZtKCksIHJlZ0V4cCk7CisgICAgYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+c2V0UmVnRXhwKHZtLCByZWdFeHApOwogICAgIGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnNldExhc3RJbmRleChleGVjLCAwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZSk7CiB9CkBAIC0yMTIsOSArMjI0LDEyIEBAIHN0YXRpYyBpbmxpbmUgRmxhZ3NT
dHJpbmcgZmxhZ3NTdHJpbmcoRXgKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAKQEAgLTIyMiw3ICsyMzcs
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgaWYgKEpT
VmFsdWUgZWFybHlSZXR1cm5WYWx1ZSA9IGNoZWNrZXIuZWFybHlSZXR1cm5WYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGVhcmx5UmV0dXJuVmFsdWUpOwogCi0gICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBKU1ZhbHVlIHNvdXJjZVZhbHVlID0gdGhpc09iamVjdC0+
Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPnNvdXJjZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
MjQyLDExICsyNTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFs
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJp
dHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnBy
b3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNS
ZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+cmVnRXhwKCktPmdsb2JhbCgpKSk7CkBAIC0yNTQsMTEg
KzI3MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMo
UmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRz
KFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBA
IC0yNjYsMTEgKzI4NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFBy
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJNdWx0
aWxpbmUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5p
bmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBS
ZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkp
KTsKQEAgLTI3OCwxMSArMzAxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVn
RXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRl
clN0aWNreShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVl
LmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1
ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBn
ZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJl
Z0V4cC5wcm90b3R5cGUuc3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdF
eHAgb2JqZWN0IikpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsK
QEAgLTI5MCwxMSArMzE2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVu
aWNvZGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5p
bmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdl
dHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVn
RXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdF
eHAgb2JqZWN0IikpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7
CkBAIC0zMDIsOSArMzMxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlckZs
YWdzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0IikpOwogCiAgICAgYXV0byBmbGFncyA9IGZs
YWdzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTQyMSwxMSArNDUzLDE0IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBy
ZWdFeHBQcm90b0dldHRlclMKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90b0dldHRlclNvdXJjZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiKD86
KSIpKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQg
b24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0
dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogCiAg
ICAgU3RyaW5nIHBhdHRlcm4gPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+
cGF0dGVybigpOwpAQCAtNTM5LDYgKzU3NCw3IEBAIHZvaWQgZ2VuZXJpY1NwbGl0KAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoRXhlY1N0YXRl
KiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgLy8gMS4gW2hhbmRsZWQgYnkgSlMgYnVpbHRp
bl0gTGV0IHJ4IGJlIHRoZSB0aGlzIHZhbHVlLgogICAgIC8vIDIuIFtoYW5kbGVkIGJ5IEpTIGJ1
aWx0aW5dIElmIFR5cGUocngpIGlzIG5vdCBPYmplY3QsIHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KQEAgLTY0NCw3ICs2ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvCiAgICAgICAgIH0pOwogICAgIAogICAgIGlmIChyZXN1bHRMZW5ndGggKyBkcnlS
dW5Db3VudCA+PSBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKSB7Ci0gICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDggKzMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxp
bmUgYm9vbCByZWplY3QoRXhlY1N0YXRlKiBleGVjLCBib29sIHRocm93RXhjZXB0aW9uLCBjb25z
dCBjaGFyKiBtZXNzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbikK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBtZXNzYWdlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDE2IEBAIHZvaWQg
U2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiAKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsICJTZXQiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiU2V0IikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RTZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+
bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKQEAgLTcyLDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1
bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2Fs
bFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVj
LCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRWYWx1ZSkg
ewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJdGVyYXRvclByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0SXRlcmF0b3JQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
ZXRJdGVyYXRvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxMyBA
QCB2b2lkIFNldEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgU2V0SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAg
ICAgSlNTZXRJdGVyYXRvciogaXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTU2V0SXRlcmF0b3Iq
PihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgY2FsbCBTZXRJdGVyYXRvci5uZXh0KCkgb24gYSBub24tU2V0SXRlcmF0b3Ig
b2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9y
Lm5leHQoKSBvbiBhIG5vbi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOwogCiAgICAgaWYgKGl0ZXJh
dG9yLT5uZXh0KGNhbGxGcmFtZSwgcmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdChjYWxsRnJhbWUsIHJlc3VsdCwgZmFsc2Up
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTMgKzg0LDE2IEBAIHZvaWQg
U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0KIAogQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNTZXQqIGdldFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUp
CiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihj
YWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNTZXQqIHNldCA9IGpzRHluYW1pY0Nh
c3Q8SlNTZXQqPih0aGlzVmFsdWUpOwogICAgIGlmICghc2V0KSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBu
b24tU2V0IG9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJTZXQgb3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCIp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBzZXQ7CkBAIC0x
NDEsMTggKzE0NCwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVu
CiAgICAgCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1ZhbHVlcyhD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNTZXQqIHRo
aXNPYmogPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgU2V0IHZhbHVl
IGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUoY2FsbEZyYW1lLT52bSgpLCBjYWxsRnJhbWUt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09i
aiwgSXRlcmF0ZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEg
U2V0IHZhbHVlIGl0ZXJhdG9yIGZvciBhIG5vbi1TZXQgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1NldEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJ
dGVyYXRlVmFsdWUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90
b0Z1bmNFbnRyaWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxG
cmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1NldCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVh
dGUgYSBTZXQgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUtPnZt
KCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0cnVj
dHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgZW50cnkgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHByaXZhdGVGdW5jSXNTZXQoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTkwLDYgKzkwLDggQEAgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6QWRkUmVzdWx0IFNwYXJzZUFycgog
CiBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGFycmF5LCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgCiAgICAgQWRkUmVzdWx0
IHJlc3VsdCA9IGFkZChhcnJheSwgaSk7CkBAIC0xMDEsNyArMTAzLDcgQEAgYm9vbCBTcGFyc2VB
cnJheVZhbHVlTWFwOjpwdXRFbnRyeShFeGVjUwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSAm
JiAhYXJyYXktPmlzU3RydWN0dXJlRXh0ZW5zaWJsZSgpKSB7CiAgICAgICAgIHJlbW92ZShyZXN1
bHQuaXRlcmF0b3IpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
CkBAIC0xNDgsMTQgKzE1MCwxNyBAQCB2b2lkIFNwYXJzZUFycmF5RW50cnk6OmdldChQcm9wZXJ0
eURlc2NyCiAKIGJvb2wgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB0aGlzVmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghKGF0dHJpYnV0ZXMg
JiBBY2Nlc3NvcikpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAg
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAot
ICAgICAgICBzZXQoZXhlYy0+dm0oKSwgbWFwLCB2YWx1ZSk7CisgICAgICAgIHNldCh2bSwgbWFw
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTAsNiAr
OTAsOSBAQCBKU0NlbGwqIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlCiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0Zyb21Db2RlUG9pbnQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZXhlYy0+
YXJndW1lbnRDb3VudCgpOwogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVy
LnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwpAQCAtMTAyLDcgKzEwNSw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmkKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBp
ZiAoY29kZVBvaW50ICE9IGNvZGVQb2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01B
WF9WQUxVRSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhh
dCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiKSkpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkFyZ3VtZW50cyBjb250YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2Yg
Y29kZSBwb2ludHMiKSkpOwogCiAgICAgICAgIGlmIChVX0lTX0JNUChjb2RlUG9pbnQpKQogICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGNvZGVQb2ludCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3QuY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjMsNiAr
NjMsOSBAQCBib29sIFN0cmluZ09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJCiAKIGJvb2wg
U3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxT
dHJpbmdPYmplY3QqPihjZWxsKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNWYWx1ZUFsdGVy
ZWQoc2xvdCwgdGhpc09iamVjdCkpKQpAQCAtNzAsNyArNzMsNyBAQCBib29sIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2Rl
KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQ
cm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNl
SW5kZXgocHJvcGVydHlOYW1lKSkKQEAgLTgwLDEwICs4MywxMyBAQCBib29sIFN0cmluZ09iamVj
dDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlCiAKIGJvb2wgU3RyaW5nT2JqZWN0OjpwdXRCeUluZGV4
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJp
bmdPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8U3RyaW5nT2JqZWN0Kj4oY2VsbCk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUoKS0+Y2FuR2V0SW5kZXgocHJvcGVydHlOYW1l
KSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIEpT
T2JqZWN0OjpwdXRCeUluZGV4KGNlbGwsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDYg
KzI4OSw5IEBAIHN0cnVjdCBTdHJpbmdSYW5nZSB7CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTcGxpY2VTdWJzdHJpbmdzKEV4ZWNTdGF0ZSogZXhlYywgSlNTdHJpbmcqIHNvdXJj
ZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1JhbmdlKiBzdWJzdHJpbmdS
YW5nZXMsIGludCByYW5nZUNvdW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHJhbmdlQ291
bnQgPT0gMSkgewogICAgICAgICBpbnQgc291cmNlU2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKICAg
ICAgICAgaW50IHBvc2l0aW9uID0gc3Vic3RyaW5nUmFuZ2VzWzBdLnBvc2l0aW9uOwpAQCAtMzEx
LDcgKzMxNCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAg
ICAgICAgY29uc3QgTENoYXIqIHNvdXJjZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczgoKTsKICAg
ICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3Rh
bExlbmd0aCwgYnVmZmVyKTsKICAgICAgICAgaWYgKCFpbXBsKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgICAgIGludCBidWZmZXJQb3MgPSAw
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewpAQCAtMzI5
LDcgKzMzMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKIAog
ICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxM
ZW5ndGgsIGJ1ZmZlcik7CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIGludCBidWZmZXJQb3MgPSAwOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CkBAIC0zNDQsNiArMzQ3LDkgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzU3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKEV4ZWNTdGF0ZSogZXhlYywg
SlNTdHJpbmcqIHNvdXJjZVZhbCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZ1Jh
bmdlKiBzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBTdHJpbmcqIHNlcGFy
YXRvcnMsIGludCBzZXBhcmF0b3JDb3VudCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChyYW5n
ZUNvdW50ID09IDEgJiYgc2VwYXJhdG9yQ291bnQgPT0gMCkgewogICAgICAgICBpbnQgc291cmNl
U2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKICAgICAgICAgaW50IHBvc2l0aW9uID0gc3Vic3RyaW5n
UmFuZ2VzWzBdLnBvc2l0aW9uOwpAQCAtMzY0LDcgKzM3MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAgICAgICAgICAgIGFsbFNlcGFyYXRvcnM4Qml0ID0g
ZmFsc2U7CiAgICAgfQogICAgIGlmICh0b3RhbExlbmd0aC5oYXNPdmVyZmxvd2VkKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaWYgKCF0b3RhbExlbmd0
aCkKICAgICAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CkBAIC0zNzUsNyArMzgxLDcg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogCiAgICAgICAgIGF1
dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgu
dW5zYWZlR2V0KCksIGJ1ZmZlcik7CiAgICAgICAgIGlmICghaW1wbCkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgICAgICBpbnQgbWF4Q291bnQg
PSBzdGQ6Om1heChyYW5nZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CiAgICAgICAgIGludCBidWZm
ZXJQb3MgPSAwOwpAQCAtNDAwLDcgKzQwNiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTcGxpY2VTdWIKICAgICBVQ2hhciogYnVmZmVyOwogICAgIGF1dG8gaW1wbCA9IFN0cmlu
Z0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgudW5zYWZlR2V0KCksIGJ1
ZmZlcik7CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRv
ckNvdW50KTsKICAgICBpbnQgYnVmZmVyUG9zID0gMDsKQEAgLTc1MiwxMCArNzU4LDEzIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBjaGVja09iamVjdENvZXJjaWJsZSgKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIGlubGluZSBKU1N0cmluZyogcmVwZWF0Q2hhcmFjdGVy
KEV4ZWNTdGF0ZSYgZXhlYywgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIsIHVuc2lnbmVkIHJlcGVh
dENvdW50KQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDaGFyYWN0ZXJUeXBlKiBidWZmZXIgPSBudWxs
cHRyOwogICAgIGF1dG8gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQo
cmVwZWF0Q291bnQsIGJ1ZmZlcik7CiAgICAgaWYgKCFpbXBsKSB7Ci0gICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcigmZXhlYyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc5Nyw4ICs4
MDYsMTAgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlKAogQUxXQVlTX0lO
TElORSBFbmNvZGVkSlNWYWx1ZSByZXBsYWNlKAogICAgIFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBzZWFyY2hWYWx1ZSwgSlNWYWx1ZSByZXBsYWNl
VmFsdWUpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtODQxLDYgKzg1Miw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IC8vIEFsc28gdXNlZCBmb3IgdmFsdWVPZi4KIApAQCAtODUwLDE0ICs4NjQsMTcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIGlmICh0aGlzVmFsdWUuaW5o
ZXJpdHMoU3RyaW5nT2JqZWN0OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGFzU3RyaW5nT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFsVmFsdWUoKSk7CiAKLSAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQ2hhckF0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IEpTU3RyaW5nOjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZp
ZXcoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChh
MC5pc1VJbnQzMigpKSB7CkBAIC04NzQsOSArODkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNDaGFyQ29kZUF0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgIEpTU3RyaW5nOjpTYWZlVmlldyBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhl
YyktPnZpZXcoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmIChhMC5pc1VJbnQzMigpKSB7CkBAIC05MDMsOSArOTIzLDEyIEBAIHN0YXRpYyBpbmxpbmUg
VUNoYXIzMiBjb2RlUG9pbnRBdChjb25zdCAKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNDb2RlUG9pbnRBdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIFN0cmluZyBzdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhl
Yyk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwpAQCAtOTI5LDIwICs5
NTIsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvbmNhdChFeGVjU3RhdGUq
IGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5hcmd1bWVu
dENvdW50KCkgPT0gMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBhc1N0cmluZyh0aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0
cmluZyhleGVjKSkpOwogCiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmdGcm9tQXJndW1lbnRzKGV4ZWMsIHRoaXNWYWx1ZSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwpAQCAtOTc3LDkgKzEw
MDYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMt
PmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgYTEgPSBleGVjLT5hcmd1bWVudCgxKTsKQEAgLTEw
MTQsOSArMTA0NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2xpY2UoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTEyMDEsOSArMTIzNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3Ry
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlz
VmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHVuc2lnbmVkIGxlbjsK
ICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwpAQCAtMTI1
Nyw5ICsxMjk1LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYnVpbHRpblN0cmkK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHJpbmco
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBKU1N0cmluZyoganNT
dHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQpAQCAtMTI5Nyw5ICsxMzM4LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICBKU1N0cmluZyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBT
dHJpbmcmIHMgPSBzVmFsLT52YWx1ZShleGVjKTsKICAgICBTdHJpbmcgbG93ZXJjYXNlZFN0cmlu
ZyA9IHMuY29udmVydFRvTG93ZXJjYXNlV2l0aG91dExvY2FsZSgpOwpAQCAtMTMxMCw5ICsxMzU0
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc1ZhbCA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBTdHJpbmcmIHMgPSBzVmFsLT52YWx1ZShl
eGVjKTsKICAgICBTdHJpbmcgdXBwZXJjYXNlZFN0cmluZyA9IHMuY29udmVydFRvVXBwZXJjYXNl
V2l0aG91dExvY2FsZSgpOwpAQCAtMTMyMyw5ICsxMzcwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzQwLDEwICsxMzkwLDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICNpZiBFTkFCTEUoSU5UTCkKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1N0YXRlKiBzdGF0ZSwgaW50MzJf
dCAoKmNvbnZlcnRDYXNlKShVQ2hhciosIGludDMyX3QsIGNvbnN0IFVDaGFyKiwgaW50MzJfdCwg
Y29uc3QgY2hhciosIFVFcnJvckNvZGUqKSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxLiBM
ZXQgTyBiZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUpOwogCiAgICAg
Ly8gMi4gTGV0IFMgYmUgVG9TdHJpbmcoTykuCiAgICAgSlNTdHJpbmcqIHNWYWwgPSB0aGlzVmFs
dWUudG9TdHJpbmcoc3RhdGUpOwpAQCAtMTQxMSwxMCArMTQ2NCwxMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEV4ZWNTCiAgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVy
KHJlc3VsdExlbmd0aCk7CiAgICAgICAgIGNvbnZlcnRDYXNlKGJ1ZmZlci5kYXRhKCksIHJlc3Vs
dExlbmd0aCwgdmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdmlld0xlbmd0aCwgdXRmOExv
Y2FsZUJ1ZmZlci5kYXRhKCksICZlcnJvcik7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoZXJyb3Ip
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1l
KGVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAgICAgICAgIGxvd2VyID0gU3RyaW5nKGJ1ZmZlci5k
YXRhKCksIHJlc3VsdExlbmd0aCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB1X2Vycm9yTmFtZShlcnJvcikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7CiAKICAgICAv
LyAxOC4gUmV0dXJuIEwuCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhzdGF0
ZSwgbG93ZXIpKTsKQEAgLTE0MzgsOSArMTQ5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQmlnKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENv
ZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0xNDQ5LDkgKzE1MDUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1NtYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVj
dENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
IFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xNDYwLDkgKzE1MTksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0JsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNDcxLDkgKzE1MzMsMTIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0JvbGQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNr
T2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0ODIsOSArMTU0NywxMiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG9GdW5jRml4ZWQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNo
ZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0OTMsOSArMTU2MSwxMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRhbGljcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUwNCw5ICsxNTc1LDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdHJpa2UoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1MTUsOSArMTU4OSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3ViKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTI2LDkgKzE2MDMsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1cChFeGVjU3RhdGUqIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUzNyw5ICsxNjE3LDEyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1NTMsOSArMTYz
NiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MDUs
OSArMTY5MSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NjIxLDkgKzE3MTAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTE2NjcsOCArMTc1OSwxMSBAQCBlbnVtIHsKIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIHRyaW1T
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgaW50IHRyaW1LaW5kKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHN0ciA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTE3MjAsMjEgKzE4MTUsMjMgQEAg
c3RhdGljIGlubGluZSB1bnNpZ25lZCBjbGFtcEFuZFRydW5jYXRlVAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4
ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90
b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBl
LnN0YXJ0c1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3Ry
aW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTE3NTYsMjEgKzE4NTMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09i
amVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwog
CiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNoSW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNS
ZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAg
ICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIGNhbm5vdCBi
ZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2Fubm90IGJlIGEgUmVn
RXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4MDgsMjEgKzE5
MDcsMjMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZ1RvU2VhcmNo
SW4gPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhw
KHZtLCBleGVjLCBhMCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgaWYgKGlzUmVndWxhckV4cHJlc3Npb24p
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJBcmd1bWVudCB0byBTdHJp
bmcucHJvdG90eXBlLmluY2x1ZGVzIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90
b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhwIik7CiAKICAgICBTdHJpbmcgc2VhcmNo
U3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKQEAgLTE4NTUsNDIgKzE5NTYsNTEgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBidWlsdGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhl
Yy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBz
dHJpbmcpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgbm9ybWFsaXplKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgVUNoYXIqIHNvdXJjZSwgc2l6ZV90IHNvdXJjZUxlbmd0aCwgVU5vcm1hbGl6YXRpb25N
b2RlIGZvcm0pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKICAgICBpbnQzMl90IG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGggPSB1bm9ybV9ub3Jt
YWxpemUoc291cmNlLCBzb3VyY2VMZW5ndGgsIGZvcm0sIDAsIG51bGxwdHIsIDAsICZzdGF0dXMp
OwogCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgewogICAgICAgICAvLyBUaGUgYmVoYXZpb3IgaXMgbm90IHNwZWNpZmllZCB3
aGVuIG5vcm1hbGl6ZSBmYWlscy4KICAgICAgICAgLy8gTm93IHdlIHRocm93IGEgdHlwZSBlcm9y
ciBzaW5jZSBpdCBzZWVtcyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGFyZSBpbnZh
bGlkLgotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZl
ciA9IG51bGxwdHI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZChub3JtYWxpemVkU3RyaW5nTGVuZ3RoLCBidWZmZXIpOwogICAgIGlmICghaW1wbCkK
LSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CiAgICAgdW5vcm1fbm9ybWFsaXplKHNvdXJjZSwgc291cmNlTGVuZ3RoLCBm
b3JtLCAwLCBidWZmZXIsIG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsICZzdGF0dXMpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIFdURk1vdmUoaW1wbCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZzo6U2FmZVZpZXcgc291cmNlID0gdGhpc1Zh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTE5MTEsNyArMjAyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG8KICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAgICAgICBm
b3JtID0gVU5PUk1fTkZLRDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiYXJndW1l
bnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSIpKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiYXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24g
Zm9ybSIpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShub3JtYWxpemUo
ZXhlYywgc291cmNlLmdldCgpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBzb3VyY2UubGVuZ3Ro
KCksIGZvcm0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yOCw3ICsyOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBKU1ZhbHVl
IFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXI6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKCkKIHsKLSAg
ICByZXR1cm4gSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgIFZNJiB2
bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgcmV0dXJuIEpTQzo6dGhyb3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29w
ZSk7CiB9CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6ZW1wdHlTdHJpbmcoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTg3LDcgKzg3LDkgQEAgSlNPYmplY3QqIFN5bWJvbDo6dG9PYmplY3QoRXhlY1N0YXRl
KiBleAogCiBkb3VibGUgU3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7
Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBh
IHN5bWJvbCB0byBhIG51bWJlciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51
bWJlciIpKTsKICAgICByZXR1cm4gMC4wOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTExMCwxNiArMTEwLDE5IEBAIGNvbnN0IGNoYXIqIFN5bWJvbEtleUZvclR5cGVF
cnJvciA9ICJTeW0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25zdHJ1
Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHN5bWJvbFZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5p
c1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIFN5bWJvbEtleUZvclR5cGVFcnJvcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3Ip
KTsKIAogICAgIFN5bWJvbEltcGwqIHVpZCA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0
ZU5hbWUoKS51aWQoKTsKICAgICBpZiAoIXVpZC0+c3ltYm9sUmVnaXN0cnkoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEFTU0VSVCh1aWQt
PnN5bWJvbFJlZ2lzdHJ5KCkgPT0gJmV4ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBleGVjLT52bSgpLnN5bWJvbFJl
Z2lzdHJ5KCkua2V5Rm9yU3ltYm9sKCp1aWQpKSk7CisgICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVn
aXN0cnkoKSA9PSAmdm0uc3ltYm9sUmVnaXN0cnkoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyhleGVjLCB2bS5zeW1ib2xSZWdpc3RyeSgpLmtleUZvclN5bWJvbCgqdWlk
KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtNzIsMTYgKzcyLDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBTeW1ib2xWYWx1ZU9mVHlwZUVy
cm8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNUb1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIFN5bWJvbCogc3ltYm9sID0gbnVsbHB0cjsKICAg
ICBpZiAodGhpc1ZhbHVlLmlzU3ltYm9sKCkpCiAgICAgICAgIHN5bWJvbCA9IGFzU3ltYm9sKHRo
aXNWYWx1ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmlu
Z1R5cGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aW5o
ZXJpdHMoU3ltYm9sT2JqZWN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9y
KTsKICAgICAgICAgc3ltYm9sID0gYXNTeW1ib2woanNDYXN0PFN5bWJvbE9iamVjdCo+KHRoaXNP
YmplY3QpLT5pbnRlcm5hbFZhbHVlKCkpOwogICAgIH0KIApAQCAtOTAsMTYgKzkzLDE5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRoaXNWYWx1ZSk7CiAKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9y
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJvbFZh
bHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0
aGlzVmFsdWUpOwogICAgIGlmICghdGhpc09iamVjdC0+aW5oZXJpdHMoU3ltYm9sT2JqZWN0Ojpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xWYWx1
ZU9mVHlwZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Nhc3Q8U3ltYm9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUaHJvd1Njb3BlLmgiCisKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAg
ICAKKyNpZiBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCituYW1lc3BhY2Ugewor
CisvLyBMb2dzIGFsbCBUaHJvd1Njb3BlIGFjdGl2aXR5IHRvIGhlbHAgZGVidWcgdGhlIHNvdXJj
ZSBvZiBhIHZlcmlmaWNhdGlvbiBmYWlsdXJlLgorYm9vbCB0cmFjZU9uID0gZmFsc2U7CisKKy8v
IEEgbW9yZSB2ZXJib3NlIGxvZ2dpbmcgb3B0aW9uIHRvIGR1bXAgdGhlIEMrKyBzdGFjayB0cmFj
ZSBhdCBzdHJhdGVnaWMgcG9pbnRzIHRvIGFpZCBkZWJ1Z2dpbmcuCitib29sIHRyYWNlV2l0aFN0
YWNrVHJhY2VzID0gZmFsc2U7CisKKy8vIERpc2FibGVkIHRlbXBvcmFyaWx5IHVudGlsIGFsbCBr
bm93biB2ZXJpZmljYXRpb24gZmFpbHVyZXMgYXJlIGZpeGVkLgorYm9vbCB2ZXJpZmljYXRpb25P
biA9IGZhbHNlOworCit1bnNpZ25lZCB0cmFjZUNvdW50ID0gMDsKK307CisKKy8qCisgICAgVGhy
b3dTY29wZSB2ZXJpZmljYXRpb24gd29ya3MgdG8gc2ltdWxhdGUgZXhjZXB0aW9uIHRocm93cyBh
bmQgY2F0Y2ggY2FzZXMgd2hlcmUKKyAgICBleGNlcHRpb24gY2hlY2tzIGFyZSBtaXNzaW5nLiBU
aGlzIGlzIGhvdyBpdCB3b3JrczoKKworIDEuIFRoZSBWTSBoYXMgYSBtX25lZWRFeGNlcHRpb25D
aGVjayBiaXQgdGhhdCBpbmRpY2F0ZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNoZWNrIGlzCisgICAg
bmVlZGVkLiBZb3UgY2FuIHRoaW5rIG9mIHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQgYmVp
bmcgc2V0IGFzIGEgc2ltdWxhdGVkCisgICAgdGhyb3cuCisKKyAyLiBFdmVyeSB0aHJvdyBzaXRl
IG11c3QgZGVjbGFyZSBhIFRocm93U2NvcGUgaW5zdGFuY2UgdXNpbmcgREVDTEFSRV9USFJPV19T
Q09QRSBhdAorICAgIHRoZSB0b3Agb2YgaXRzIGZ1bmN0aW9uIChhcyBlYXJseSBhcyBwb3NzaWJs
ZSkgZS5nLgorIAorICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCAuLi4pOworICAgICAgICB9CisKKyAgICBOb3RlOiBWTTo6
dGhyb3dFeGNlcHRpb24oKSBtZXRob2RzIGFyZSBwcml2YXRlLCBhbmQgb25seSBjYWxsZWFibGVi
eSB0aGUgVGhyb3dTY29wZQorICAgIGZyaWVuZCBjbGFzcy4gQWxsIHRocm93cyBtdXN0IGdvIHRo
cm91Z2ggYSBUaHJvd1Njb3BlLiBIZW5jZSwgd2UgYXJlIGd1YXJhbnRlZWQgdGhhdAorICAgIGFu
eSBmdW5jdGlvbiB0aGF0IGNhbiB0aHJvdyB3aWxsIGhhdmUgYSBUaHJvd1Njb3BlLgorCisgICAg
Tm90ZTogYnkgY29udmVudGlvbiwgZXZlcnkgdGhyb3cgaGVscGVyIGZ1bmN0aW9uIG11c3QgdGFr
ZSBhIFRocm93U2NvcGUgYXJndW1lbnQKKyAgICBpbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgaXRz
IG93biBUaHJvd1Njb3BlLiAgVGhpcyBhbGxvd3MgdGhlIHRocm93IHRvIGJlIGF0dHJpYnV0ZWQK
KyAgICB0byB0aGUgY2xpZW50IGNvZGUgcmF0aGVyIHRoYW4gdGhlIHRocm93IGhlbHBlciBpdHNl
bGYuCisKKyAzLiBWZXJpZmljYXRpb24gb2YgbmVlZGVkIGV4Y2VwdGlvbiBjaGVja3MKKworICAg
IGEuIE9uIGNvbnN0cnVjdGlvbiwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06
Om1fbmVlZEV4Y2VwdGlvbkNoZWNrIGlzCisgICAgICAgbm90IHNldC4KKyAKKyAgICAgICBUaGlz
IGVuc3VyZXMgdGhhdCB0aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGhhcyBjaGVj
a2VkIGZvciBleGNlcHRpb25zCisgICAgICAgd2hlcmUgbmVlZGVkIGJlZm9yZSBkb2luZyBtb3Jl
IHdvcmsgd2hpY2ggbGVkIHRvIGNhbGxpbmcgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisKKyAgICBi
LiBPbiBkZXN0cnVjdGlvbiwgZWFjaCBUaHJvd1Njb3BlIHdpbGwgdmVyaWZ5IHRoYXQgVk06Om1f
bmVlZEV4Y2VwdGlvbkNoZWNrIGlzCisgICAgICAgbm90IHNldC4gVGhpcyB2ZXJpZmljYXRpb24g
d2lsbCBiZSBza2lwcGVkIGlmIHRoZSBUaHJvd1Njb3BlIGhhcyBiZWVuIHJlbGVhc2VkCisgICAg
ICAgKHNlZSAoNSkgYmVsb3cpLgorCisgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGZ1bmN0
aW9uIHRoYXQgb3ducyB0aGlzIFRocm93U2NvcGUgaXMgbm90IG1pc3NpbmcgYW55CisgICAgICAg
ZXhjZXB0aW9uIGNoZWNrcyBiZWZvcmUgcmV0dXJuaW5nLgorIAorICAgIGMuIFdoZW4gdGhyb3dp
bmcgYW4gZXhjZXB0aW9uLCB0aGUgVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25l
ZWRFeGNlcHRpb25DaGVjaworICAgICAgIGlzIG5vdCBzZXQsIHVubGVzcyBpdCdzIGJlZW4gYXNr
IHRvIHJldGhyb3cgdGhlIHNhbWUgRXhjZXB0aW9uIG9iamVjdC4KKworIDQuIFNpbXVsYXRlZCB0
aHJvd3MKKworICAgIFRocm93cyBhcmUgc2ltdWxhdGVkIGJ5IHNldHRpbmcgdGhlIG1fbmVlZEV4
Y2VwdGlvbkNoZWNrIGJpdC4KKworICAgIFRoZSBiaXQgd2lsbCBvbmx5IGJlIHNldCBpbiB0aGUg
VGhyb3dTY29wZSBkZXN0cnVjdG9yIGV4Y2VwdCB3aGVuIHRoZSBUaHJvd1Njb3BlCisgICAgZGV0
ZWN0cyB0aGUgY2FsbGVyIGlzIGEgTExJbnQgb3IgSklUIGZ1bmN0aW9uLiBMTEludCBvciBKSVQg
ZnVuY3Rpb25zIHdpbGwgYWx3YXlzCisgICAgY2hlY2sgZm9yIGV4Y2VwdGlvbnMgYWZ0ZXIgYSBo
b3N0IEMrKyBmdW5jdGlvbiByZXR1cm5zIHRvIGl0LiBIb3dldmVyLCB0aGV5IHdpbGwKKyAgICBu
b3QgY2xlYXIgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdC4KKworICAgIEhlbmNlLCBpZiB0
aGUgVGhyb3dTY29wZSBkZXN0cnVjdG9yIGRldGVjdHMgdGhlIGNhbGxlciBpcyBhIExMSW50IG9y
IEpJVCBmdW5jdGlvbiwKKyAgICBpdCB3aWxsIGp1c3Qgc2tpcCB0aGUgc2V0dGluZyBvZiB0aGUg
Yml0LgorCisgICAgTm90ZTogdGhlcmUgaXMgbm8gbmVlZCwgYW5kIGl0IGlzIGluY29ycmVjdCB0
byBzZXQgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdAorICAgIGluIHRoZSB0aHJvd0V4Y2Vw
dGlvbiBtZXRob2RzLiBUaGlzIGlzIGJlY2F1c2UsIGluIHByYWN0aWNlLCB3ZSBhbHdheXMgcmV0
dXJuCisgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLiBJdCBkb2Vz
bid0IG1ha2Ugc2Vuc2UgdG8gc2V0IHRoZSBiaXQgaW4KKyAgICB0aGUgdGhyb3cganVzdCB0byBo
YXZlIHRvIGNsZWFyIGl0IGltbWVkaWF0ZWx5IGFmdGVyIGJlZm9yZSB3ZSBkbyB2ZXJpZmljYXRp
b24gaW4KKyAgICB0aGUgVGhyb3dTY29wZSBkZXN0cnVjdG9yLgorCisgNS4gVXNpbmcgVGhyb3dT
Y29wZTo6cmVsZWFzZSgpCisKKyAgICBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG9ubHkg
YmUgdXNlZCBhdCB0aGUgYm90dG9tIG9mIGEgZnVuY3Rpb24gaWY6CisgCisgICAgYS4gVGhpcyBm
dW5jdGlvbiBpcyBnb2luZyB0byBsZXQgaXRzIGNhbGxlciBjaGVjayBhbmQgaGFuZGxlIHRoZSBl
eGNlcHRpb24uCisgCisgICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBnb28oKTsgLy8gbWF5IHRocm93LgorCisgICAgICAgICAgICAuLi4gLy8gQ2xl
YW51cCBjb2RlIHRoYXQgd2lsbCBhcmUgbm90IGFmZmVjdGVkIGJ5IGEgcGVuZGluZyBleGNlcHRp
b25zLgorCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIHRlbGwgdGhlIFRocm93U2Nv
cGUgdGhhdCB0aGUgY2FsbGVyIHdpbGwgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgCisgICAgYi4gVGhpcyBmdW5jdGlvbiBpcyBn
b2luZyB0byBkbyBhIHRhaWwgY2FsbCB0aGF0IG1heSB0aHJvdy4KKworICAgICAgICB2b2lkIGZv
byguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgp
OyAvLyB0ZWxsIHRoZSBUaHJvd1Njb3BlIHRoYXQgdGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUg
ZXhjZXB0aW9uLgorICAgICAgICAgICAgcmV0dXJuIGdvbygpOyAvLyBtYXkgdGhyb3cuCisgICAg
ICAgIH0KKyAKKyAgICBUaHJvd1Njb3BlOjpyZWxlYXNlKCkgc2hvdWxkIG5vdCBiZSB1c2VkIGlu
IHRoZSBjb2RlIHBhdGhzIHRoYXQgYnJhbmNoLiBGb3IgZXhhbXBsZToKKyAKKyAgICAgICAgdm9p
ZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gZ29vMSgpOyAvLyBt
YXkgdGhyb3cuCisgICAgICAgICAgICBzY29wZS5yZWxlYXNlKCk7IC8vIDw9PT09PT09PT09PT09
PT09PT09IHRoZSBXUk9ORyB3YXkgISEhCisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5
IHRocm93LgorICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICB9CisgCisgICAgVGhlIGFib3ZlIHdpbGwgcmVzdWx0IGluIGEgdmVyaWZpY2F0aW9uIGZh
aWx1cmUgaW4gZ29vMigpJ3MgVGhyb3dTY29wZS4gIFRoZSBwcm9wZXIgd2F5CisgICAgdG8gZml4
IHRoaXMgdmVyaWZpY2F0aW9uIGlzIHRvIGRvIHdpdGhlciAoNikgb3IgKDcpIGJlbG93LgorIAor
ICA2LiBDaGVja2luZyBleGNlcHRpb25zIHdpdGggVGhyb3dTY29wZTo6ZXhjZXB0aW9uKCkKKyAK
KyAgICAgVGhyb3dTY29wZTo6ZXhjZXB0aW9uKCkgcmV0dXJucyB0aGUgdGhyb3duIEV4Y2VwdGlv
biBvYmplY3QgaWYgdGhlcmUgaXMgb25lIHBlbmRpbmcuCisgICAgIEVsc2UgaXQgcmV0dXJucyBu
dWxscHRyLgorIAorICAgICBJdCBhbHNvIGNsZWFycyB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sg
Yml0IHRoZXJlYnkgaW5kaWNhdGluZyB0aGF0IHdlJ3ZlIHNhdGlzaWZlZAorICAgICB0aGUgbmVl
ZGVkIGV4Y2VwdGlvbiBjaGVjay4KKyAKKyAgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6CisgCisg
ICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdv
bzEoKTsgLy8gbWF5IHRocm93LgorICAgICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAv
LyBtYXkgdGhyb3cuCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH0KKyAKKyAgICBCdXQgc29tZXRpbWVzLCBmb3Igb3B0aW1pemF0aW9uIHJlYXNv
bnMsIHdlIG1heSBjaG9vc2UgdG8gdGVzdCB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsZWUKKyAgICBm
dW5jdGlvbiBpbnN0ZWFkIGRvaW5nIGEgbG9hZCBvZiB0aGUgVk0gZXhjZXB0aW9uIHZhbHVlLiBT
ZWUgKDcpIGJlbG93LgorIAorIDcuIENoZWNraW5nIGV4Y2VwdGlvbiBieSBjaGVja2luZyBjYWxs
ZWUgcmVzdWx0CisgCisgICAgVGhpcyBhcHByb2FjaCBzaG91bGQgb25seSBiZSBhcHBsaWVkIHdo
ZW4gaXQgbWFrZXMgYSBkaWZmZXJlbmNlIHRvIHBlcmZvcm1hbmNlLgorICAgIElmIHdlIG5lZWQg
dG8gZG8gdGhpcywgd2Ugc2hvdWxkIGFkZCBhbiBBU1NFUlQoKSB0aGF0IGludm9rZXMgVGhyb3dT
Y29wZTo6ZXhjZXB0aW9uKCkKKyAgICBhbmQgdmVyaWZ5IHRoZSByZXN1bHQuIFNpbmNlIFRocm93
U2NvcGUgdmVyaWZpY2F0aW9uIGlzIG9ubHkgZG9uZSBvbiBERUJVRyBidWlsZHMsCisgICAgdGhp
cyBBU1NFUlQgd2lsbCBzYXRpc2Z5IHRoZSB2ZXJpZmljYXRpb24gcmVxdWlyZW1lbnRzIHdoaWxl
IG5vdCBpbXBhY3RpbmcgcGVyZm9ybWFuY2UuCisgCisgICAgVGhpcyBpcyBob3cgd2UgZG8gaXQ6
CisKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAgIGJvb2wgZmFpbGVk
ID0gZ29vMSgpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgICAgICBBU1NFUlQoISFzY29wZS5leGNl
cHRpb24oKSA9PSBmYWlsZWQpCisgICAgICAgICAgICBpZiAoZmFpbGVkKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgcmVzdWx0ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cu
CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0K
KyAKKyA4LiBEZWJ1Z2dpbmcgdmVyaWZpY2F0aW9uIGZhaWx1cmVzLgorCisgICAgYS4gV2hlbiB2
ZXJpZmljYXRpb24gZmFpbHMsIHlvdSB3aWxsIHNlZSBhIGhlbHBmdWwgbWVzc2FnZSBmb2xsb3dl
ZCBieSBhbiBhc3NlcnRpb24gZmFpbHVyZS4KKyAgICAgICBGb3IgZXhhbXBsZToKKyAKKyAgICBG
QUlMRUQgZXhjZXB0aW9uIGNoZWNrIHZlcmlmaWNhdGlvbjoKKyAgICAgICAgRXhjZXB0aW9uIHRo
cm93biBmcm9tIFRocm93U2NvcGUgWzJdIEV4aXQ6IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEv
d3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoxMjQ1CisgICAgICAgIGlzIHVuY2hlY2tlZCBpbiBUaHJvd1Njb3BlIFsxXTogdmFyYXJn
c1NldHVwIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEzOTgKKworICAgICAgIFRoZSBtZXNzYWdlIHRl
bGxzIHlvdSB0aGF0IGZhaWx1cmUgd2FzIGRldGVjdGVkIGF0IGluIHZhcmFyZ3NTZXR1cCgpIEAg
TExJbnRTbG93UGF0aHMuY3BwCisgICAgICAgbGluZSAxMzk4LCBhbmQgdGhhdCB0aGUgbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2sgc2hvdWxkIGhhdmUgaGFwcGVuZWQgc29tZXdoZXJlIGJldHdlZW4K
KyAgICAgICB0aGUgY2FsbCB0byBzZXRVcENhbGwoKSBAIExMSW50U2xvd1BhdGhzLmNwcCBsaW5l
IDEyNDUgYW5kIGl0LgorCisgICAgICAgSWYgdGhhdCBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRp
b24sIHlvdSBjYW4gLi4uCisKKyAgICBiLiBUdXJuIG9uIFRocm93U2NvcGUgdHJhY2luZworIAor
ICAgICAgIEp1c3Qgc2V0IHRyYWNlT249dHJ1ZSBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
LCBhbmQgcmVidWlsZC4gVGhlcmVhZnRlciwgeW91IHNob3VsZAorICAgICAgIHNlZSBhIHRyYWNl
IG9mIFRocm93U2NvcGVzIGJlaW5nIGVudGVyZWQgYW5kIGV4aXRlZCBhcyB3ZWxsIGFzIHRoZWly
IGRlcHRoIGUuZy4KKworICAgIFRocm93U2NvcGUgWzFdIEVudGVyOiBsbGludF9zbG93X3BhdGhf
amZhbHNlIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEwMzIKKyAgICBUaHJvd1Njb3BlIFsxXSBFeGl0
OiBsbGludF9zbG93X3BhdGhfamZhbHNlIEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOjEwMzIKKworICAg
ICAgIFlvdSB3aWxsIGFsc28gc2VlIHRyYWNlcyBvZiBzaW11bGF0ZWQgdGhyb3dzIGUuZy4KKwor
ICAgIFRocm93U2NvcGUgWzJdIFRocm93IGZyb206IHNldFVwQ2FsbCBAIC9Wb2x1bWVzL0RhdGEv
d3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoxMjQ1CisKKyAgICAgICBJZiB0aGF0IGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbiwg
eW91IGNhbiAuLi4KKworICAgIGMuIFR1cm4gb24gVGhyb3dTY29wZSBzdGFjayBkdW1wcworCisg
ICAgICAgSnVzdCBzZXQgdHJhY2VXaXRoU3RhY2tUcmFjZXM9dHJ1ZSBhdCB0aGUgdG9wIG9mIFRo
cm93U2NvcGUuY3BwLCBhbmQgcmVidWlsZC4KKyAgICAgICBUaGVyZWFmdGVyLCB5b3Ugc2hvdWxk
IHNlZSBhIHN0YWNrIHRyYWNlcyBhdCB2YXJpb3VzIHJlbGV2YW50IFRocm93U2NvcGUgZXZlbnRz
LgorCisgICAgZC4gVXNpbmcgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKQorCisgICAgICAg
SWYgeW91IGhhdmUgaXNvbGF0ZWQgdGhlIG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrIHRvIGEgZnVu
Y3Rpb24gdGhhdCBpcyBsYXJnZSBidXQKKyAgICAgICBpcyB1bnN1cmUgd2hpY2ggc3RhdGVtZW50
IGNhbiB0aHJvdyBhbmQgaXMgbWlzc2luZyB0aGUgY2hlY2ssIHlvdSBjYW4gc3ByaW5rbGUKKyAg
ICAgICB0aGUgZnVuY3Rpb24gd2l0aCBjYWxscyB0byB0aHJvd1Njb3BlUHJpbnRJZk5lZWRDaGVj
aygpLgorCisgICAgICAgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB3aWxsIGxvZyBhIGxp
bmUgIk5lZWQgZXhjZXB0aW9uIGNoZWNrIGF0IC4uLiIgdGhhdAorICAgICAgIGlubGN1ZGVzIHRo
ZSBmaWxlIGFuZCBsaW5lIG51bWJlciBvbmx5IHdoZW4gaXQgc2VlIHRoZSBtX25lZWRFeGNlcHRp
b25DaGVjayBzZXQuCisgICAgICAgVGhpcyB3aWxsIHRlbGwgeW91IHdoaWNoIHN0YXRlbWVudCBz
aW11bGF0ZWQgdGhlIHRocm93IHRoYXQgaXMgbm90IGJlaW5nIGNoZWNrZWQKKyAgICAgICBpLmUu
IHRoZSBvbmUgdGhhdCBwcmVjZWRlZCB0aGUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKSB0
aGF0IHByaW50ZWQgYSBsaW5lLgorKi8KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6
OlRocm93U2NvcGUoVk0mIHZtLCBUaHJvd1Njb3BlTG9jYXRpb24gbG9jYXRpb24pCisgICAgOiBt
X3ZtKHZtKQorICAgICwgbV9wcmV2aW91c1Njb3BlKHZtLm1fdG9wVGhyb3dTY29wZSkKKyAgICAs
IG1fbG9jYXRpb24obG9jYXRpb24pCisgICAgLCBtX2RlcHRoKG1fcHJldmlvdXNTY29wZSA/IG1f
cHJldmlvdXNTY29wZS0+bV9kZXB0aCArIDEgOiAwKQoreworICAgIG1fdm0ubV90b3BUaHJvd1Nj
b3BlID0gdGhpczsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0
cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEVudGVyOiAiLCBsb2Nh
dGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBsb2NhdGlvbi5maWxlLCAiOiIsIGxvY2F0aW9uLmxp
bmUpOworICAgICAgICBpZiAobV92bS5tX25lZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAg
IGRhdGFMb2coIiwgbmVlZHMgY2hlY2siKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAg
ICAgICBpZiAodHJhY2VXaXRoU3RhY2tUcmFjZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNr
dHJhY2UoKTsKKyAgICB9CisKKyAgICB2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmll
ZChTaXRlOjpTY29wZUVudHJ5KTsKK30KKworSlNfRVhQT1JUX1BSSVZBVEUKK1Rocm93U2NvcGU6
On5UaHJvd1Njb3BlKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLm1fdG9wVGhyb3dTY29w
ZSk7CisKKyAgICBpZiAoIW1faXNSZWxlYXNlZCkKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hl
Y2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6U2NvcGVFeGl0KTsKKyAgICBlbHNlIHsKKyAgICAgICAg
Ly8gSWYgd2UgcmVsZWFzZWQgdGhlIHNjb3BlLCB0aGF0IG1lYW5zIHdlJ3JlIGxldHRpbmcgb3Vy
IGNhbGxlcnMgZG8gdGhlCisgICAgICAgIC8vIGV4Y2VwdGlvbiBjaGVjay4gSG93ZXZlciwgYmVj
YXVzZSBvdXIgY2FsbGVyIG1heSBiZSBhIExMSW50IG9yIEpJVAorICAgICAgICAvLyBmdW5jdGlv
biAod2hpY2ggYWx3YXlzIGNoZWNrcyBmb3IgZXhjZXB0aW9ucyBidXQgd29uJ3QgY2xlYXIgdGhl
CisgICAgICAgIC8vIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCksIHdlIHNob3VsZCBjbGVhciBt
X25lZWRFeGNlcHRpb25DaGVjayBoZXJlCisgICAgICAgIC8vIGFuZCBsZXQgY29kZSBiZWxvdyBk
ZWNpZGUgaWYgd2UgbmVlZCB0byBzaW11bGF0ZSBhIHJlLXRocm93LgorICAgICAgICBtX3ZtLm1f
bmVlZEV4Y2VwdGlvbkNoZWNrID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCB3aWxsQmVIYW5k
bGVCeUxMSW50T3JKSVQgPSBmYWxzZTsKKyAgICB2b2lkKiBwcmV2aW91c1Njb3BlID0gbV9wcmV2
aW91c1Njb3BlOworICAgIHZvaWQqIHRvcENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOwor
ICAgIAorICAgIC8vIElmIHRoZSB0b3BDYWxsRnJhbWUgd2FzIHB1c2hlZCBvbiB0aGUgc3RhY2sg
YWZ0ZXIgdGhlIHByZXZpb3VzU2NvcGUgd2FzIGluc3RhbnRpYXRlZCwKKyAgICAvLyB0aGVuIHRo
aXMgVk1FbnRyeSB0aHJvd1Njb3BlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIExMSU5UIG9yIEpJVCBj
b2RlIHRoYXQgYWx3YXlzIGRvCisgICAgLy8gYW4gZXhjZXB0aW9uIGNoZWNrLiBJbiB0aGF0IGNh
c2UsIHNraXAgdGhlIHNpbXVsYXRlZCB0aHJvdyBiZWNhdXNlIHRoZSBMTEludCBhbmQgSklUCisg
ICAgLy8gd2lsbCBiZSBjaGVja2luZyBmb3IgdGhlIGV4Y2VwdGlvbiB0aGVpciBvd24gd2F5IGlu
c3RlYWQgb2YgY2FsbGluZyB2bS5leGNlcHRpb24oKS4KKyAgICBpZiAodG9wQ2FsbEZyYW1lICYm
IHByZXZpb3VzU2NvcGUgPiB0b3BDYWxsRnJhbWUpCisgICAgICAgIHdpbGxCZUhhbmRsZUJ5TExJ
bnRPckpJVCA9IHRydWU7CisgICAgCisgICAgaWYgKCF3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQp
CisgICAgICAgIHNpbXVsYXRlVGhyb3coKTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAg
IGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJd
IEV4aXQ6ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxl
LCAiOiIsIG1fbG9jYXRpb24ubGluZSk7CisgICAgICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTElu
dE9ySklUKQorICAgICAgICAgICAgZGF0YUxvZygiLCB3aXRoIHJldGhyb3ciKTsKKyAgICAgICAg
aWYgKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spCisgICAgICAgICAgICBkYXRhTG9nKCIsIG5l
ZWRzIGNoZWNrIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAgICAgaWYgKHRyYWNl
V2l0aFN0YWNrVHJhY2VzKQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAg
fQorCisgICAgbV92bS5tX3RvcFRocm93U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7Cit9CisKK3Zv
aWQgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24q
IGV4Y2VwdGlvbikKK3sKKyAgICBpZiAobV92bS5leGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlv
bigpICE9IGV4Y2VwdGlvbikKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRp
c2ZpZWQoU2l0ZTo6VGhyb3cpOworICAgIAorICAgIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
ZXhjZXB0aW9uKTsKK30KKworSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCit7CisgICAgaWYgKCFlcnJvci5hc0NlbGwoKSB8
fCAhanNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPihlcnJvci5hc0NlbGwoKSkpCisgICAgICAgIHZl
cmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAg
ICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK0pTT2JqZWN0
KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBv
YmopCit7CisgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG9iaikpCisgICAgICAg
IHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAK
KyAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit2b2lkIFRo
cm93U2NvcGU6OnByaW50SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25z
dCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQoreworICAgIGlmIChtX3ZtLm1fbmVlZEV4Y2Vw
dGlvbkNoZWNrKQorICAgICAgICBkYXRhTG9nKCI8IiwgdHJhY2VDb3VudCsrLCAiPiBOZWVkIGV4
Y2VwdGlvbiBjaGVjayBhdCAiLCBmdW5jdGlvbk5hbWUsICIgQCAiLCBmaWxlLCAiOiIsIGxpbmUs
ICJcbiIpOworfQorCit2b2lkIFRocm93U2NvcGU6OnNpbXVsYXRlVGhyb3coKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKG1fdm0ubV90b3BUaHJvd1Njb3BlKTsKKyAgICBtX3ZtLm1fc2ltdWxhdGVk
VGhyb3dQb2ludExvY2F0aW9uID0gbV9sb2NhdGlvbjsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhy
b3dQb2ludERlcHRoID0gbV9kZXB0aDsKKyAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0g
dHJ1ZTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNv
dW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIFRocm93IGZyb206ICIsIG1fbG9j
YXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRp
b24ubGluZSwgIlxuIik7CisgICAgICAgIGlmICh0cmFjZVdpdGhTdGFja1RyYWNlcykKKyAgICAg
ICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOworICAgIH0KK30KKworSlNfRVhQT1JUX1BSSVZB
VEUKK3ZvaWQgVGhyb3dTY29wZTo6dmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQo
VGhyb3dTY29wZTo6U2l0ZSBzaXRlKQoreworICAgIGlmICghdmVyaWZpY2F0aW9uT24pCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChVTkxJS0VMWShtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNr
KSkgeworICAgICAgICBhdXRvIGZhaWxEZXB0aCA9IG1fdm0ubV9zaW11bGF0ZWRUaHJvd1BvaW50
RGVwdGg7CisgICAgICAgIGF1dG8mIGZhaWxMb2NhdGlvbiA9IG1fdm0ubV9zaW11bGF0ZWRUaHJv
d1BvaW50TG9jYXRpb247CisKKyAgICAgICAgYXV0byBzaXRlTmFtZSA9IFtdIChTaXRlIHNpdGUp
IC0+IGNvbnN0IGNoYXIqIHsKKyAgICAgICAgICAgIHN3aXRjaCAoc2l0ZSkgeworICAgICAgICAg
ICAgY2FzZSBTaXRlOjpTY29wZUVudHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiRW50cnki
OworICAgICAgICAgICAgY2FzZSBTaXRlOjpTY29wZUV4aXQ6CisgICAgICAgICAgICAgICAgcmV0
dXJuICJFeGl0IjsKKyAgICAgICAgICAgIGNhc2UgU2l0ZTo6VGhyb3c6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICJUaHJvdyI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH07CisKKyAgICAgICAgZGF0YUxvZygKKyAgICAgICAgICAgICJGQUlMRUQgZXhjZXB0aW9uIGNo
ZWNrIHZlcmlmaWNhdGlvbjpcbiIKKyAgICAgICAgICAgICIgICAgRXhjZXB0aW9uIHRocm93biBm
cm9tIFRocm93U2NvcGUgWyIsIGZhaWxEZXB0aCwgIl0gIiwgc2l0ZU5hbWUoc2l0ZSksICI6ICIs
IGZhaWxMb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBmYWlsTG9jYXRpb24uZmlsZSwgIjoi
LCBmYWlsTG9jYXRpb24ubGluZSwgIlxuIgorICAgICAgICAgICAgIiAgICBpcyB1bmNoZWNrZWQg
aW4gVGhyb3dTY29wZSBbIiwgbV9kZXB0aCwgIl06ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1l
LCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIgorICAg
ICAgICAgICAgIlxuIik7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fdm0ubV9uZWVkRXhj
ZXB0aW9uQ2hlY2spOworICAgIH0KK30KKworI2VuZGlmIC8vIEVOQUJMRShUSFJPV19TQ09QRV9W
RVJJRklDQVRJT04pCisgICAgCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJWTS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworY2xhc3MgSlNPYmplY3Q7
CisKKyNpZiBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCitjbGFzcyBUaHJvd1Nj
b3BlIHsKK3B1YmxpYzoKKyAgICBKU19FWFBPUlRfUFJJVkFURSBUaHJvd1Njb3BlKFZNJiwgVGhy
b3dTY29wZUxvY2F0aW9uKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB+VGhyb3dTY29wZSgpOwor
CisgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorCisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFs
dWUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqLCBKU09iamVjdCopOworCisgICAgaW5saW5lIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkK
KyAgICB7CisgICAgICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVs
ZWFzZSgpIHsgbV9pc1JlbGVhc2VkID0gdHJ1ZTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBwcmludElmTmVlZENoZWNrKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hh
ciogZmlsZSwgdW5zaWduZWQgbGluZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaW11bGF0ZVRo
cm93KCk7CisKKyAgICBlbnVtIGNsYXNzIFNpdGUgeworICAgICAgICBTY29wZUVudHJ5LAorICAg
ICAgICBTY29wZUV4aXQsCisgICAgICAgIFRocm93CisgICAgfTsKKyAgICB2b2lkIHZlcmlmeUV4
Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGUpOworCisgICAgVk0mIG1fdm07CisgICAg
VGhyb3dTY29wZSogbV9wcmV2aW91c1Njb3BlOworICAgIFRocm93U2NvcGVMb2NhdGlvbiBtX2xv
Y2F0aW9uOworICAgIHVuc2lnbmVkIG1fZGVwdGg7CisgICAgYm9vbCBtX2lzUmVsZWFzZWQgeyBm
YWxzZSB9OworfTsKKworI2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKKyAgICBK
U0M6OlRocm93U2NvcGUodm1fXywgSlNDOjpUaHJvd1Njb3BlTG9jYXRpb24oX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pKQorCisjZGVmaW5lIHRocm93U2NvcGVQcmludElmTmVlZENo
ZWNrKHNjb3BlX18pIFwKKyAgICBzY29wZV9fLnByaW50SWZOZWVkQ2hlY2soX19GVU5DVElPTl9f
LCBfX0ZJTEVfXywgX19MSU5FX18pCisKKyNlbHNlIC8vIG5vdCBFTkFCTEUoVEhST1dfU0NPUEVf
VkVSSUZJQ0FUSU9OKQorCitjbGFzcyBUaHJvd1Njb3BlIHsKK3B1YmxpYzoKKyAgICBUaHJvd1Nj
b3BlKFZNJiB2bSkKKyAgICAgICAgOiBtX3ZtKHZtKQorICAgIHsgfQorCisgICAgVk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gbV92bTsgfQorICAgIAorICAgIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGV4Y2VwdGlvbik7IH0KKyAgICBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVj
LCB2YWx1ZSk7IH0KKyAgICBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogb2JqKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7
IH0KKyAgICAKKyAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbigpIHsgcmV0dXJuIG1fdm0uZXhjZXB0
aW9uKCk7IH0KKyAgICB2b2lkIHJlbGVhc2UoKSB7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgVk0m
IG1fdm07Cit9OworCisjZGVmaW5lIERFQ0xBUkVfVEhST1dfU0NPUEUodm1fXykgXAorICAgIEpT
Qzo6VGhyb3dTY29wZSh2bV9fKQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklG
SUNBVElPTikKKworQUxXQVlTX0lOTElORSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIHNj
b3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cit9CisKK0FMV0FZU19JTkxJTkUg
SlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihleGVj
LCB2YWx1ZSk7Cit9CisKK0FMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEpTT2JqZWN0KiBvYmopCit7CisgICAg
cmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxv
Y2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhy
b3dTY29wZUxvY2F0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFRocm93U2NvcGVMb2NhdGlvbiB7
CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKCkgeyB9CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZmlsZSwgdW5zaWduZWQgbGluZSkK
KyAgICAgICAgOiBmdW5jdGlvbk5hbWUoZnVuY3Rpb25OYW1lKQorICAgICAgICAsIGZpbGUoZmls
ZSkKKyAgICAgICAgLCBsaW5lKGxpbmUpCisgICAgeyB9CisgICAgCisgICAgY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRy
IH07CisgICAgdW5zaWduZWQgbGluZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29k
ZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGVMb2NhdGlvbi5o
IgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiVk1FbnRyeVJlY29yZC5oIgpAQCAtMTA4LDYgKzEwOSw3IEBA
IGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFJlZ0V4cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOwor
Y2xhc3MgVGhyb3dTY29wZTsKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRFdmFsQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC00
NDksMTAgKzQ1MSw2IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb24qIGxhc3RFeGNlcHRpb24oKSBj
b25zdCB7IHJldHVybiBtX2xhc3RFeGNlcHRpb247IH0KICAgICBKU0NlbGwqKiBhZGRyZXNzT2ZM
YXN0RXhjZXB0aW9uKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm1fbGFz
dEV4Y2VwdGlvbik7IH0KIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdGhyb3dFeGNlcHRp
b24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLQog
ICAgIHZvaWQgc2V0RmFpbE5leHROZXdDb2RlQmxvY2soKSB7IG1fZmFpbE5leHROZXdDb2RlQmxv
Y2sgPSB0cnVlOyB9CiAgICAgYm9vbCBnZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkK
ICAgICB7CkBAIC02NDQsNiArNjQyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIG1fbGFzdEV4Y2Vw
dGlvbiA9IGV4Y2VwdGlvbjsKICAgICB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0Kik7CisKICNpZiBFTkFCTEUoQVNTRU1CTEVSKQogICAgIGJvb2wgbV9jYW5Vc2VBc3NlbWJs
ZXI7CiAjZW5kaWYKQEAgLTY2OCw2ICs2NzAsMTMgQEAgcHJpdmF0ZToKIAogICAgIEV4Y2VwdGlv
biogbV9leGNlcHRpb24geyBudWxscHRyIH07CiAgICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNlcHRp
b24geyBudWxscHRyIH07CisjaWYgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKyAg
ICBUaHJvd1Njb3BlKiBtX3RvcFRocm93U2NvcGUgeyBudWxscHRyIH07CisgICAgVGhyb3dTY29w
ZUxvY2F0aW9uIG1fc2ltdWxhdGVkVGhyb3dQb2ludExvY2F0aW9uOworICAgIHVuc2lnbmVkIG1f
c2ltdWxhdGVkVGhyb3dQb2ludERlcHRoIHsgMCB9OworICAgIG11dGFibGUgYm9vbCBtX25lZWRF
eGNlcHRpb25DaGVjayB7IGZhbHNlIH07CisjZW5kaWYKKwogICAgIGJvb2wgbV9mYWlsTmV4dE5l
d0NvZGVCbG9jayB7IGZhbHNlIH07CiAgICAgRGVsZXRlUHJvcGVydHlNb2RlIG1fZGVsZXRlUHJv
cGVydHlNb2RlIHsgRGVsZXRlUHJvcGVydHlNb2RlOjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2ds
b2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93IHsgdHJ1ZSB9OwpAQCAtNjkwLDYgKzY5
OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93Q2hpY2tl
bj4gbV9zaGFkb3dDaGlja2VuOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5PiBtX2J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk7CisKKyAgICBmcmllbmQgY2xh
c3MgVGhyb3dTY29wZTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgVk1FbnRyeVNjb3BlKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSB+Vk1FbnRyeVNjb3BlKCk7CiAKKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBt
X3ZtOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2xvYmFsT2JqZWN0OyB9CiAKICAgICB2b2lkIGFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCwxMSArNDgsMTYgQEAgdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vh
a01hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFr
TWFwIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldl
YWtNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVjdHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IElu
dGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1Rh
cmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQpAQCAtNjksMTEgKzc0LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7
CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJG
dW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhl
YywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRl
bSkgewogICAgICAgICBpZiAoIW5leHRJdGVtLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NiwxNSArNTYsMTggQEAgdm9pZCBXZWFrTWFwUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgV2Vha01hcERhdGEqIGdldFdlYWtN
YXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2
bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rp
b24gb24gbm9uLW9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBz
Y29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1v
YmplY3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGlmIChKU1dl
YWtNYXAqIHdlYWtNYXAgPSBqc0R5bmFtaWNDYXN0PEpTV2Vha01hcCo+KHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIHdlYWtNYXAtPndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihj
YWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBh
IG5vbi1XZWFrTWFwIG9iamVjdCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNj
b3BlLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24t
V2Vha01hcCBvYmplY3QiKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTk5LDEzICsx
MDIsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBn
ZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlm
ICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2Jq
ZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwg
YXNPYmplY3Qoa2V5KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAi
KSkpOworICAgIG1hcC0+c2V0KHZtLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3Ry
dWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDExICs0OCwxNiBAQCB2b2lkIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIldlYWtTZXQiKSk7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fu
bm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsK
IH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1Nl
dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiB3ZWFrU2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGds
b2JhbE9iamVjdC0+d2Vha1NldFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCkBAIC02OSw3ICs3NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5
cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRk
ZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENh
bGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUs
IFsmXShWTSYsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE0
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTQsMTUgKzU0LDE4IEBAIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5v
bi1vYmplY3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdU
Rjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBub24tb2JqZWN0Iikp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoSlNXZWFrU2V0KiB3
ZWFrU2V0ID0ganNEeW5hbWljQ2FzdDxKU1dlYWtTZXQqPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biB3ZWFrU2V0LT53ZWFrTWFwRGF0YSgpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vh
a1NldCBvYmplY3QiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RG
OjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQg
b2JqZWN0IikpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC04NiwxMyArODksMTYgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtTZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFw
RGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFs
dWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFt
ZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0
byBhIFdlYWtTZXQiKSkpOwotICAgIG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qo
a2V5KSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRl
ZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkpOworICAgIG1hcC0+c2V0
KHZtLCBhc09iamVjdChrZXkpLCBqc1VuZGVmaW5lZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRv
IGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgIC0gSW50cm9kdWNl
ZCB0aGUgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikgZmxhZy4KKwogMjAxNi0wOC0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVSTFBhcnNlciBzaG91bGQgcGFyc2UgcmVsYXRpdmUgVVJMcwpJbmRleDogU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05MTgsNiArOTE4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9NQVNNX1BST0JFIDAKICNl
bmRpZgogCisjaWZuZGVmIEVOQUJMRV9USFJPV19TQ09QRV9WRVJJRklDQVRJT04KKyNkZWZpbmUg
RU5BQkxFX1RIUk9XX1NDT1BFX1ZFUklGSUNBVElPTiAoIWRlZmluZWQoTkRFQlVHKSkKKyNlbmRp
ZgorCiAvKiBQaWNrIHdoaWNoIGFsbG9jYXRvciB0byB1c2U7IHdlIG9ubHkgbmVlZCBhbiBleGVj
dXRhYmxlIGFsbG9jYXRvciBpZiB0aGUgYXNzZW1ibGVyIGlzIGNvbXBpbGVkIGluLgogICAgT24g
bm9uLVdpbmRvd3MgeDg2LTY0LCBpT1MsIGFuZCBBUk02NCB3ZSB1c2UgYSBzaW5nbGUgZml4ZWQg
bW1hcCwgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG1tYXAgb24gZGVtYW5kLiAqLwogI2lmIEVOQUJM
RShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NTkgQEAKKzIwMTYt
MDgtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVj
ZSB0aGUgVGhyb3dTY29wZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50aWF0
ZSBhIFRocm93U2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjExNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIG9ubHkgYW4gaW50ZXJuYWwgQVBJ
IGNoYW5nZS4gSWYgaXQgYnVpbGRzLCBpdCBzaG91bGQgYmUgZ29vZC4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1J
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFlc0NiY1BhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVBZXNLZXlHZW5QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFyYW1z
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYUtleUdlblBhcmFtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVSc2FPYWVwUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJz
YVNzYVBhcmFtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldEpTQXJyYXlGcm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpnZXRTdHJpbmdG
cm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb29sZWFuRnJvbUpTT04pOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9u
SldLKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVj
b25jaWxlQWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxl
VXNhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6
a2V5RGF0YU9jdGV0U2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
YWRkSldLQWxnb3JpdGhtVG9KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSzo6c2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0
b09wZXJhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvT3BlcmF0aW9uRGF0
YUZyb21KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1
cGdyYWRlRWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVn
aXN0cnlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q3VzdG9tRWxlbWVudENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzZXRET01FeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OnRvU21hbGxlckludCk6CisgICAgICAgIChXZWJDb3JlOjp0b1Nt
YWxsZXJVSW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkFjY2Vzc0RvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRocm93VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm90
U3VwcG9ydGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dJbnZhbGlkU3RhdGVFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlY3VyaXR5RXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6dGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXJyYXlFbGVtZW50
VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXR0cmlidXRlVHlwZUVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0
VW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NlcXVlbmNlVHlwZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm9uRmluaXRlVHlwZUVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRocm93R2V0dGVyVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93U2V0dGVyVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93VGhpc1R5cGVFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsVGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVmUHRyTmF0aXZlQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6dG9OYXRpdmVBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGU6OmNhbGxUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpKU0J1aWx0aW5Db25z
dHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXcmFwcGVyVHlwZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6aXRlcmF0b3JDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyPjo6bmV4
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpwdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyk6CisgICAgICAgIChXZWJDb3JlOjpoYW5k
bGVQb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdHJ1Y3RKU0RhdGFDdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1
bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRmlsZSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2Fu
dmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERv
Y3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVt
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9u
UmFuZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJREJEYXRh
YmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01l
ZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVh
bVRyYWNrOjpnZXRTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJh
Y2s6OmdldENhcGFiaWxpdGllcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9y
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsTWVzc2FnZVBvcnRBcnJheSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oOgorICAgICAgICAoV2Vi
Q29yZTo6aGFuZGxlUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9EZWNpc2lvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjppbnNlcnRCZWZv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6
OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGx1Z2luRWxlbWVudFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xl
bmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
V2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFG
dW5jdGlvbmkpOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0
bzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRs
ZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmV4cG9ydEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29y
a2VyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVCYXNlOjp0aHJvd1N0YWNrT3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnRocm93VmFsaWRhdGlvbkVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklm
U2VyaWFsaXphdGlvbkZhaWxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpz
ZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6
CisgICAgICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAg
ICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhc3Rl
ZFRoaXMpOgorICAgICAgICAoR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKToKKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZh
Y2VOYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4
Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0
cnVjdG9yQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0
dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJp
dmF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmplY3RQ
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVt
ZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50c1N0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0
cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNS
ZWFkT25seUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3Rh
dGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRz
U3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
Myk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1l
bnRhbFN0YXRpY0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
RnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxl
bWVudHNNZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRo
b2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rp
b25TdXBwbGVtZW50YWxNZXRob2Q0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2Rl
Q29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdG
dW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPik6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6Ok9wdGlvbmFsPik6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0PEFsdGVybmF0ZUVudW1OYW1lPik6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0PFRlc3RPYmo6OkVudW1BPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6
OkVudW1CPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkVudW1DPik6Cisg
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OktpbmQ+KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnQ8VGVzdE9iajo6U2l6ZT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxU
ZXN0T2JqOjpDb25maWRlbmNlPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFy
eTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlv
bmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRT
aG91bGRUb2xlcmF0ZU51bGw+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5
PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRP
bmx5TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5n
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmop
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpFbnVtQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpCeXRlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqU2hvcnRBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdMb25nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialVzdnN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdE9i
akF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqVW5mb3JnZWFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJp
bmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFs
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVTVlVSTEF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQ3VzdG9tQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPbmZv
byk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPbndlYmtpdGZvbyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpT
dHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmlu
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpFbnVt
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpCeXRlQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNsYW1w
ZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdl
U2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVzdnN0
cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqSW1wbGVtZW50
YXRpb25FbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqUmVmbGVjdGVkVVNWVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
akF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iak9uZm9vKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iak9ud2Via2l0Zm9vKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
MSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iak11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iaklkKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0
YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhS
ZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndh
cmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5n
aWZpZXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25CeXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJs
ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVt
QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DdXN0b21NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0U3RhdGVWb2lkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxs
ZXJEb2N1bWVudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRUd29PcHRpb25hbEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBdG9taWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc1VuZGVmaW5lZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bWljU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJ
c05hTik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNp
Z25lZExvbmdMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVl
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW5Jc0ZhbHNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVXcmFwcGVySXNOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRo
b2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDMpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMTApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBh
cmFtZXRlcjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5j
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0Fy
cmF5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Eb21TdHJpbmdMaXN0RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
Mik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQz
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9p
bnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkltbXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PcmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblBy
b21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zl
cmxvYWRlZEZ1bmN0aW9uMVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVy
bG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9u
V2l0aEV4Y2VwdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3Zl
cmxvYWQxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxPdmVybG9hZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UxKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVh
ZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0
cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3JUZXN0U3ViT2JqKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBl
ZGVmc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzVW5z
aWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNJ
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
RnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXApOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBv
aW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVl
bmNlVGhhdFJlcXVpcmVzSW5jbHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ompz
YXR0cmlidXRlUmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6anNhdHRyaWJ1dGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpqc3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNyZWFkb25seUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlv
blRvRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVs
dE1ldGhvZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZUNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUp
OgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpj
SW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgIChPYmpj
SW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQXJyYXk6OnNldFZhbHVlQXQpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0FycmF5Ojp2YWx1ZUF0KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfdXRpbGl0eS5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5t
bToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnRocm93RXJyb3IpOgorICAgICAgICAqIGJyaWRn
ZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhH
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6
OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAg
ICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1l
X29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxs
YmFja09iamVjdEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0
OjpmaWVsZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0Ojpt
ZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6
OnB1dCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFs
dWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0Ojp0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisK
IDIwMTYtMDgtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdyZXNzaW9uKHIyMDQ5MjMpOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2V0ICdMb2NhdGlv
bi5ocmVmJyBjcm9zcyBvcmlnaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uIikpOwogCiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHVpbnQxNl90IHN0YXR1cyA9IGNvbnZlcnQ8dWludDE2
X3Q+KHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC03MCwx
NSArNzMsMTggQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcAogCiBK
U1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
dGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2Rl
KHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBwbGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRo
cm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBz
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdWludDE2X3Qgc3RhdHVzID0gY29udmVydDx1aW50MTZf
dD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTEwNCwx
NSArMTEwLDE4IEBAIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHAKIAog
SlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRo
cm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uIikpOwogCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIERpY3Rpb25hcnkgbmV3VG90YWwgPSB7ICZzdGF0ZSwgc3RhdGUu
YXJndW1lbnQoMCkgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9i
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCbG9iQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02MywxMiArNjQsMTUgQEAgSlNWYWx1
ZSB0b0pTKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTQmxvYihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNv
bnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3RydWN0
b3IpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0
b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoZXhlYywgIkJsb2IiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkJsb2IiKTsK
IAogICAgIGlmICghZXhlYy5hcmd1bWVudENvdW50KCkpIHsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQRVIoanNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0
KCksIEJsb2IsIEJsb2I6OmNyZWF0ZSgpKSk7CkBAIC04Nyw3ICs5MSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMKICAgICAgICAgSlNWYWx1ZSBibG9iUHJvcGVy
dHlCYWdWYWx1ZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMSk7CiAKICAgICAgICAgaWYgKCFi
bG9iUHJvcGVydHlCYWdWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoJmV4ZWMsICJTZWNvbmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlz
IG5vdCBvZiB0eXBlIE9iamVjdCIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJmV4ZWMsIHNjb3BlLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBu
b3Qgb2YgdHlwZSBPYmplY3QiKTsKIAogICAgICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwg
dGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCiAgICAgICAgIEpTT2JqZWN0KiBibG9i
UHJvcGVydHlCYWdPYmplY3QgPSBibG9iUHJvcGVydHlCYWdWYWx1ZS50b09iamVjdCgmZXhlYyk7
CkBAIC0xMDIsNyArMTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKUwogCiAgICAgICAgIGlmIChjb250YWluc0VuZGluZ3MpIHsKICAgICAgICAgICAgIGlmIChl
bmRpbmdzICE9ICJ0cmFuc3BhcmVudCIgJiYgZW5kaW5ncyAhPSAibmF0aXZlIikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgIlRoZSBlbmRpbmdzIHByb3Bl
cnR5IG11c3QgYmUgZWl0aGVyIFwidHJhbnNwYXJlbnRcIiBvciBcIm5hdGl2ZVwiIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiVGhlIGVu
ZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwibmF0aXZl
XCIiKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IHRoZSB0eXBlIHBy
b3BlcnR5LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0OCw4ICszNDgs
MTEgQEAgYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKAogCiBKU1ZhbHVl
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29y
aXRobURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDkgQEAgZW51bSBjbGFzcyBIYXNoUmVxdWlyZW1l
bnQgewogCiBib29sIEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRl
bnRpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXImIGFsZ29yaXRobUlkZW50aWZpZXIpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyB0
eXBlZGVmIChBbGdvcml0aG0gb3IgRE9NU3RyaW5nKSBBbGdvcml0aG1JZGVudGlmaWVyOwogCiAg
ICAgU3RyaW5nIGFsZ29yaXRobU5hbWU7CkBAIC04MSw3ICs4NCw3IEBAIGJvb2wgSlNDcnlwdG9B
bGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKCFhbGdvcml0aG1OYW1lLmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKLSAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEyMiw4ICsxMjUsMTEgQEAgc3Rh
dGljIGJvb2wgZ2V0SGFzaEFsZ29yaXRobShKU0RpY3Rpb25hcgogCiBzdGF0aWMgUmVmUHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUFlc0NiY1BhcmFtcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xNDAsNyArMTQ2LDcgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogICAgIH0KIAogICAgIGlmIChpdkRhdGEuc2Vjb25kICE9IDE2KSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkFFUy1DQkMgaW5p
dGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzIikpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkFFUy1DQkMgaW5pdGlhbGl6YXRp
b24gZGF0YSBtdXN0IGJlIDE2IGJ5dGVzIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTE1MSw4ICsxNTcsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNy
ZWF0ZUFlc0tleUdlblBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE2OSw4ICsxNzgsMTEgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNQYXJhbXMoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNP
YmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC0xODcsOCArMTk5LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVh
dGVIbWFjS2V5UGFyYW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjA5LDggKzIyNCwxMSBAQCBzdGF0
aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUnNhS2V5R2VuUGFyYW1zKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlz
T2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMjMyLDcgKzI1MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4KIAogICAgIFJlZlB0cjxVaW50OEFycmF5PiBwdWJsaWNFeHBvbmVudEFycmF5ID0g
dG9VaW50OEFycmF5KHB1YmxpY0V4cG9uZW50VmFsdWUpOwogICAgIGlmICghcHVibGljRXhwb25l
bnRBcnJheSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsICJFeHBlY3RlZCBhIFVp
bnQ4QXJyYXkgaW4gcHVibGljRXhwb25lbnQiKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBzY29wZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVudCIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmVzdWx0LT5wdWJsaWNFeHBvbmVu
dC5hcHBlbmQocHVibGljRXhwb25lbnRBcnJheS0+ZGF0YSgpLCBwdWJsaWNFeHBvbmVudEFycmF5
LT5ieXRlTGVuZ3RoKCkpOwpAQCAtMjUwLDggKzI2OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4gY3JlYXRlUnNhT2FlcFBhcmFtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yODQsOCArMzA1LDEx
IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJl
ZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FTc2FQYXJhbXMoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9D
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxMyArMzgsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkg
PCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKICAgICBKU1ZhbHVlIGJ1ZmZlciA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAg
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJW
aWV3KGJ1ZmZlcik7CiAgICAgaWYgKCFhcnJheUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBzY29wZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCku
Z2V0UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0suY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw2
ICs1Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZy
b21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwg
SlNBcnJheSomIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChqc29uLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIApA
QCAtNjEsNyArNjQsNyBAQCBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRl
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CiAg
ICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFpc0pTQXJyYXkodmFs
dWUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBl
Y3RlZCBhbiBhcnJheSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5
IGZvciBcIiVzXCIgSlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTcyLDYgKzc1LDkgQEAgc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4
ZWNTdGF0ZQogCiBzdGF0aWMgYm9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC04NCw3ICs5MCw3IEBAIHN0YXRpYyBi
b29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSoKICAgICAgICAgLy8gQ2FuIGdldCBhbiBv
dXQgb2YgbWVtb3J5IGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBTdHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYSBzdHJpbmcgdmFsdWUgZm9yIFwiJXNcIiBKU09O
IGtleSIsICBrZXkpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmlu
Zzo6Zm9ybWF0KCJFeHBlY3RlZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5Iiwg
IGtleSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05Myw2ICs5OSw5IEBA
IHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSoKIAogc3RhdGljIGJvb2wg
Z2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0
IGNoYXIqIGtleSwgYm9vbCYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFBy
b3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwogCkBAIC0xMDIsNyArMTExLDcgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09O
KEV4ZWNTdGF0ZQogICAgIEpTVmFsdWUganNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRl
bnRpZmllcik7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFq
c1ZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlu
Zzo6Zm9ybWF0KCJFeHBlY3RlZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIs
ICBrZXkpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZzo6Zm9y
bWF0KCJFeHBlY3RlZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTEyLDE3ICsxMjEsMjAgQEAg
c3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZQogCiBzdGF0aWMgYm9vbCBn
ZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNv
biwgY29uc3QgY2hhcioga2V5LCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFN0cmluZyBiYXNlNjR1cmxFbmNvZGVkTnVtYmVyOwogICAgIGlmICghZ2V0U3Ry
aW5nRnJvbUpTT04oZXhlYywganNvbiwga2V5LCBiYXNlNjR1cmxFbmNvZGVkTnVtYmVyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoYmFzZTY0dXJs
RW5jb2RlZE51bWJlciwgcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBkYXRhIGluIEpXSyIpKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdFswXSA9PSAwKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXplIHRo
ZSBtaW5pbXVtIG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0lu
dGVnZXIgbXVzdCB1dGlsaXplIHRoZSBtaW5pbXVtIG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVz
ZW50IHRoZSB2YWx1ZSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTMy
LDE2ICsxNDQsMTkgQEAgc3RhdGljIGJvb2wgZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKAog
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0so
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIGpzb25TdHJpbmcpCiAgICAgOiBtX2V4ZWMo
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUganNvblZhbHVlID0gSlNPTlBhcnNl
KGV4ZWMsIGpzb25TdHJpbmcpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFqc29uVmFsdWUgfHwgIWpzb25WYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBK
V0sgc2VyaWFsaXphdGlvbiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fanNvbi5zZXQobV9leGVjLT52bSgpLCBhc09iamVjdChqc29u
VmFsdWUpKTsKKyAgICBtX2pzb24uc2V0KHZtLCBhc09iamVjdChqc29uVmFsdWUpKTsKIH0KIAog
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldL
KCkKQEAgLTE2NSw2ICsxODAsOSBAQCBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+IGNyCiAKIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSogc3VnZ2VzdGVk
QWxnb3JpdGhtLCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKiBzdWdnZXN0ZWRQYXJhbWV0ZXJz
KSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAiYWxnIiwgbV9qd2tBbGdvcml0aG1OYW1lKSkgewogICAgICAg
ICAvLyBBbGdvcml0aG0gaXMgb3B0aW9uYWwgaW4gSldLLgogICAgICAgICByZXR1cm4gQ3J5cHRv
QWxnb3JpdGhtUGFpciB7IHN1Z2dlc3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9
OwpAQCAtMjE2LDcgKzIzNCw3IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5
cHRvS2UKICAgICAgICAgYWxnb3JpdGhtID0gYWxnb3JpdGhtUmVnaXN0eS5jcmVhdGUoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6QUVTX0tXKTsKICAgICAgICAgcGFyYW1ldGVycyA9IGFkb3B0
UmVmKCpuZXcgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiVW5zdXBwb3J0ZWQgSldLIGFsZ29yaXRobSAiICsg
bV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29w
ZSwgIlVuc3VwcG9ydGVkIEpXSyBhbGdvcml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAg
ICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0KIApAQCAtMjU0LDkgKzI3MiwxMiBAQCBPcHRp
b25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiBKU0NyeXB0b0tlCiAKIHN0YXRpYyBib29sIHRyeUpX
S0tleU9wc1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgQ3J5cHRvS2V5VXNhZ2UmIHVzYWdlcywgY29u
c3QgU3RyaW5nJiBvcGVyYXRpb24sIGNvbnN0IFN0cmluZyYgdHJ5T3BlcmF0aW9uLCBDcnlwdG9L
ZXlVc2FnZSB0cnlVc2FnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChvcGVyYXRpb24gPT0g
dHJ5T3BlcmF0aW9uKSB7CiAgICAgICAgIGlmICh1c2FnZXMgJiB0cnlVc2FnZSkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250
YWlucyBhIGR1cGxpY2F0ZSBvcGVyYXRpb24iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250YWlucyBhIGR1cGxp
Y2F0ZSBvcGVyYXRpb24iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgdXNhZ2VzIHw9IHRyeVVzYWdlOwpAQCAtMjY2LDYgKzI4Nyw5IEBAIHN0YXRpYyBi
b29sIHRyeUpXS0tleU9wc1ZhbHVlKEV4ZWNTdGF0ZSoKIAogdm9pZCBKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0s6OnJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZSYgc3VnZ2VzdGVkVXNh
Z2VzKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBDcnlwdG9LZXlVc2FnZSBqd2tVc2Fn
ZXMgPSAwOwogCiAgICAgSlNBcnJheSoga2V5T3BzOwpAQCAtMjc1LDcgKzI5OSw3IEBAIHZvaWQg
SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmMKICAgICAgICAgICAgIFN0cmluZyBv
cGVyYXRpb247CiAgICAgICAgICAgICBpZiAoIWpzVmFsdWUuZ2V0U3RyaW5nKG1fZXhlYywgb3Bl
cmF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpXSyBrZXlfb3BzIGF0dHJpYnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOworICAgICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkpXSyBrZXlfb3BzIGF0dHJpYnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghdHJ5SldL
S2V5T3BzVmFsdWUobV9leGVjLCBqd2tVc2FnZXMsIG9wZXJhdGlvbiwgQVNDSUlMaXRlcmFsKCJz
aWduIiksIENyeXB0b0tleVVzYWdlU2lnbikpCkBAIC0zMTAsNyArMzM0LDcgQEAgdm9pZCBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uYwogICAgICAgICBlbHNlIGlmIChqd2tVc2VT
dHJpbmcgPT0gInNpZyIpCiAgICAgICAgICAgICBqd2tVc2FnZXMgfD0gKENyeXB0b0tleVVzYWdl
U2lnbiB8IENyeXB0b0tleVVzYWdlVmVyaWZ5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBc
IiIgKyBqd2tVc2VTdHJpbmcgKyAiXCIiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgc2NvcGUsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBcIiIgKyBqd2tVc2VT
dHJpbmcgKyAiXCIiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg
LTM2MiwyMSArMzg2LDI0IEBAIGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlT
aXoKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UoKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1f
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcga2V5QmFzZTY0VVJMOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9l
eGVjLCBtX2pzb24uZ2V0KCksICJrIiwga2V5QmFzZTY0VVJMKSkgewogICAgICAgICBpZiAoIW1f
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
U2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9jdGV0U2VxdWVuY2U7CiAg
ICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoa2V5QmFzZTY0VVJMLCBvY3RldFNlcXVlbmNlKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29k
ZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBk
YXRhIGluIEpXSyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYg
KCFrZXlTaXplSXNWYWxpZChvY3RldFNlcXVlbmNlLnNpemUoKSAqIDgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKG1fZXhlYywgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandr
QWxnb3JpdGhtTmFtZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsICJL
ZXkgc2l6ZSBpcyBub3QgdmFsaWQgZm9yICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTM4NSwyNCArNDEyLDI3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVu
dHMoKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gbW9kdWx1
czsKICAgICBWZWN0b3I8dWludDhfdD4gZXhwb25lbnQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBy
aXZhdGVFeHBvbmVudDsKIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAibiIsIG1vZHVsdXMpKSB7CiAgICAgICAgIGlmICghbV9leGVj
LT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVND
SUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlcXVp
cmVkIEpXSyBcIm5cIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCiAgICAgaWYgKCFrZXlTaXplSXNWYWxpZChtb2R1bHVzLnNpemUoKSAqIDgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgIktleSBzaXplIGlzIG5vdCB2YWxp
ZCBmb3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgc2NvcGUsICJLZXkgc2l6ZSBpcyBub3QgdmFsaWQgZm9yICIgKyBtX2p3a0FsZ29yaXRo
bU5hbWUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWdldEJp
Z0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImUiLCBleHBvbmVu
dCkpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBcImVcIiBt
ZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5n
IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ1OCwyMiArNDg4LDIy
IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sKICAgICAgICAgaWYg
KG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgaWYgKCFlbGVtZW50LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgXCJvdGhcIiBhcnJheSBtZW1iZXIgaXMgbm90
IGFuIG9iamVjdCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSldLIFwib3RoXCIgYXJyYXkgbWVtYmVyIGlzIG5vdCBhbiBvYmplY3Qi
KSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAo
IWdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAi
ciIsIGluZm8ucHJpbWVGYWN0b3IpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwib3RoXCIgZGlj
dGlvbmFyeSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwi
b3RoXCIgZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgYXNP
YmplY3QoZWxlbWVudCksICJkIiwgaW5mby5mYWN0b3JDUlRFeHBvbmVudCkpIHsKICAgICAgICAg
ICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9u
ZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQg
ZmFjdG9yIENSVCBleHBvbmVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdl
dEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAidCIs
IGluZm8uZmFjdG9yQ1JUQ29lZmZpY2llbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmlt
ZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgY29l
ZmZpY2llbnQgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgb3RoZXJQcmltZUluZm9zLmFw
cGVuZChpbmZvKTsKQEAgLTQ4NCwxMCArNTE0LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9L
ZXlEYXRhPiBKU0NyeXB0b0sKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YSgpIGNvbnN0CiB7CisgICAgVk0mIHZtID0g
bV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFN0cmluZyBqd2tLZXlUeXBlOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9l
eGVjLCBtX2pzb24uZ2V0KCksICJrdHkiLCBqd2tLZXlUeXBlKSkgewogICAgICAgICBpZiAoIW1f
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwia3R5XCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlJlcXVpcmVkIEpXSyBcImt0eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ5Nyw3ICs1MzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LCiAgICAgaWYgKGp3a0tleVR5cGUgPT0gIlJTQSIpCiAg
ICAgICAgIHJldHVybiBrZXlEYXRhUlNBQ29tcG9uZW50cygpOwogCi0gICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBlICIgKyBqd2tLZXlUeXBlKTsKKyAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBl
ICIgKyBqd2tLZXlUeXBlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNTYwLDYgKzU5
Myw5IEBAIHN0YXRpYyB2b2lkIGFkZEJvb2xUb0pTT04oRXhlY1N0YXRlKiBleGUKIAogc3RhdGlj
IHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpz
b24sIGNvbnN0IENyeXB0b0tleSYga2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3
a0FsZ29yaXRobTsKICAgICBzd2l0Y2ggKGtleS5hbGdvcml0aG1JZGVudGlmaWVyKCkpIHsKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OkhNQUM6CkBAIC02NTIsNyArNjg4LDcg
QEAgc3RhdGljIHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09OKEV4ZWNTdAogCiAgICAgaWYgKGp3
a0FsZ29yaXRobS5pc051bGwoKSkgewogICAgICAgICAvLyBUaGUgc3BlYyBkb2Vzbid0IGN1cnJl
bnRseSB0ZWxsIHdoZXRoZXIgZXhwb3J0IHNob3VsZCBmYWlsLCBvciBqdXN0IHNraXAgImFsZyIg
KHdoaWNoIGlzIGFuIG9wdGlvbmFsIGtleSBpbiBKV0spLgotICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0
byBhbnkgSldLIGFsZ29yaXRobSBpZGVudGlmaWVyIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5v
dCBtYXAgdG8gYW55IEpXSyBhbGdvcml0aG0gaWRlbnRpZmllciIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNjg5LDEwICs3MjUsMTMgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9K
U09OKEV4ZWNTdGF0ZSogZQogCiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpz
ZXJpYWxpemUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBrZXlEYXRhID0ga2V5
LmV4cG9ydERhdGEoKTsKICAgICBpZiAoIWtleURhdGEpIHsKICAgICAgICAgLy8gVGhpcyBnZW5l
cmFsbHkgc2hvdWxkbid0IGhhcHBlbiBhcyBsb25nIGFzIGFsbCBrZXkgdHlwZXMgaW1wbGVtZW50
IGV4cG9ydERhdGEoKSwgYnV0IGFzIHVuZGVybHlpbmcgbGlicmFyaWVzIHJldHVybiBlcnJvcnMs
IHRoZXJlIG1heSBiZSBzb21lIHJhcmUgZmFpbHVyZSBjb25kaXRpb25zLgotICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGV4cG9ydCBrZXkgbWF0ZXJp
YWwiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNvdWxkbid0IGV4cG9ydCBrZXkgbWF0ZXJpYWwiKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICB9CiAKQEAgLTcxMyw3ICs3NTIsNyBAQCBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjpzZXJpCiAgICAgZWxzZSBpZiAoaXM8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVu
dHM+KCprZXlEYXRhKSkKICAgICAgICAgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhleGVjLCBk
b3duY2FzdDxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpLCByZXN1bHQpOwog
ICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIktl
eSBkb2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJLZXkgZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtleSIp
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJh
dGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM2LDEyICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgY3J5cHRvT3BlcmF0
aW9uRGF0YUZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKEFycmF5QnVm
ZmVyKiBidWZmZXIgPSB0b0FycmF5QnVmZmVyKHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3Rk
OjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5ieXRlTGVuZ3RoKCkpOwogICAgIGVsc2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGJ1
ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSkpCiAgICAgICAgIHJlc3VsdCA9IHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVz
cygpKSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJh
eUJ1ZmZlclZpZXcgb2JqZWN0cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEi
KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9u
bHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQg
YXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEwOSw3ICsxMDksOSBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZTo6dXBncmFkZUVsCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxKU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotICAgIEpTTG9ja0hvbGRlciBsb2Nr
KG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CisgICAgVk0mIHZtID0gbV9pc29sYXRlZFdvcmxkLT52
bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIW1fY29uc3RydWN0b3IpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0NCw3ICsxNDYsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
dXBncmFkZUVsCiAKICAgICBFbGVtZW50KiB3cmFwcGVkRWxlbWVudCA9IEpTRWxlbWVudDo6dG9X
cmFwcGVkKHJldHVybmVkRWxlbWVudCk7CiAgICAgaWYgKCF3cmFwcGVkRWxlbWVudCB8fCB3cmFw
cGVkRWxlbWVudCAhPSAmZWxlbWVudCkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KCpzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0byB1cGdyYWRlIGFu
IGVsZW1lbnQiKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcigqc3RhdGUsIHNjb3Bl
LCAiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVu
dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHdyYXBwZWRFbGVtZW50LT5zZXRDdXN0
b21FbGVtZW50SXNSZXNvbHZlZCgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxl
bWVudENhbGxiYWNrKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTT2JqZWN0JiBwcm90b3R5cGUsIGNvbnN0
IElkZW50aWZpZXImIGlkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9
IHByb3RvdHlwZS5nZXQoJnN0YXRlLCBpZCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoY2FsbGJhY2suaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKCFjYWxsYmFjay5pc0Z1bmN0aW9u
KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkEgY3Vz
dG9tIGVsZW1lbnQgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkEgY3VzdG9tIGVsZW1lbnQg
Y2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAgICAgcmV0dXJuIGNhbGxiYWNrLmdldE9iamVjdCgpOwpAQCAtNTYsOCArNTksMTEg
QEAgc3RhdGljIEpTT2JqZWN0KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhYwogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy8jZG9tLWN1c3RvbWVsZW1lbnRyZWdpc3RyeS1kZWZpbmUKIEpT
VmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZShFeGVjU3RhdGUmIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lKHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCkBAIC02NSw3ICs3MSw3IEBAIEpT
VmFsdWUgSlNDdXN0b21FbGVtZW50UmVnaXN0cnk6OmRlZmluZSgKIAogICAgIEpTVmFsdWUgY29u
c3RydWN0b3JWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGlmICghY29u
c3RydWN0b3JWYWx1ZS5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEg
Y29uc3RydWN0b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVj
dG9yIikpOwogICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0
T2JqZWN0KCk7CiAKICAgICAvLyBGSVhNRTogVGhyb3cgYSBUeXBlRXJyb3IgaWYgY29uc3RydWN0
b3IgZG9lc24ndCBpbmhlcml0IGZyb20gSFRNTEVsZW1lbnQuCkBAIC03NSwxMSArODEsMTEgQEAg
SlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogICAgIGNhc2UgQ3VzdG9t
RWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWls
dGluTmFtZXM6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBvZiB0aGUg
YnVpbHRpbiBlbGVtZW50cyIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0
YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBz
YW1lIGFzIG9uZSBvZiB0aGUgYnVpbHRpbiBlbGVtZW50cyIpKTsKICAgICBjYXNlIEN1c3RvbUVs
ZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Tm9IeXBoZW46Ci0gICAgICAgIHJldHVybiB0aHJv
d1N5bnRheEVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIG11
c3QgY29udGFpbiBhIGh5cGhlbiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIG11c3QgY29u
dGFpbiBhIGh5cGhlbiIpKTsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0
YXR1czo6Q29udGFpbnNVcHBlckNhc2U6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9y
KCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWlu
IGFuIHVwcGVyIGNhc2UgbGV0dGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJv
cigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90
IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IENoZWNrIHJlLWVudHJhbmN5IGhlcmUuCkBAIC04NywyMSArOTMsMjAgQEAgSlNWYWx1ZSBKU0N1
c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogCiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5
JiByZWdpc3RyeSA9IHdyYXBwZWQoKTsKICAgICBpZiAocmVnaXN0cnkuZmluZEludGVyZmFjZShs
b2NhbE5hbWUpKSB7Ci0gICAgICAgIHRocm93Tm90U3VwcG9ydGVkRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUg
c2FtZSB0YWcgbmFtZSIpKTsKKyAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVu
dHMgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgfQogCiAgICAgaWYgKHJlZ2lzdHJ5LmNvbnRhaW5zQ29uc3RydWN0b3IoY29uc3Ry
dWN0b3IpKSB7Ci0gICAgICAgIHRocm93Tm90U3VwcG9ydGVkRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2Ft
ZSBjbGFzcyIpKTsKKyAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0
aCB0aGUgc2FtZSBjbGFzcyIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
fQogCi0gICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QoKS0+dm0oKTsKICAgICBKU1ZhbHVlIHBy
b3RvdHlwZVZhbHVlID0gY29uc3RydWN0b3ItPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IncyBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3QiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJ3MgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0
IikpOwogICAgIEpTT2JqZWN0JiBwcm90b3R5cGVPYmplY3QgPSAqYXNPYmplY3QocHJvdG90eXBl
VmFsdWUpOwogCiAgICAgUXVhbGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIEhU
TUxOYW1lczo6eGh0bWxOYW1lc3BhY2VVUkkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgs
MTggKzMzOCwyNCBAQCBKU1ZhbHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4CiAK
IHZvaWQgc2V0RE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlRE9NRXhjZXB0aW9uKGV4ZWMsIGVjKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYykpOwogfQogCiB2b2lkIHNldERPTUV4Y2Vw
dGlvbihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JiBlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZWMuY29kZSB8fCBleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMuY29kZSwgZWMubWVzc2FnZSkpOwor
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywg
ZWMuY29kZSwgZWMubWVzc2FnZSkpOwogfQogCiAjdW5kZWYgVFJZX1RPX0NSRUFURV9FWENFUFRJ
T04KQEAgLTQzMCwxMyArNDM2LDE2IEBAIHN0YXRpYyBTdHJpbmcgcmFuZ2VFcnJvclN0cmluZyhk
b3VibGUgdmEKIAogc3RhdGljIGRvdWJsZSBlbmZvcmNlUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSwg
ZG91YmxlIHgsIGRvdWJsZSBtaW5pbXVtLCBkb3VibGUgbWF4aW11bSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0p
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgcmFuZ2VFcnJvclN0cmlu
Zyh4LCBtaW5pbXVtLCBtYXhpbXVtKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICB4
ID0gdHJ1bmMoeCk7CiAgICAgaWYgKHggPCBtaW5pbXVtIHx8IHggPiBtYXhpbXVtKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBt
YXhpbXVtKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIHJhbmdlRXJy
b3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgcmV0dXJuIHg7CkBAIC00NzUsNiArNDg0LDkgQEAgc3RydWN0IEludFR5cGVMaW1pdHM8
dWludDE2X3Q+IHsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21h
bGxlckludChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46
OnZhbHVlLCAiU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3Igc2lnbmVkIGludGVncmFsIHR5cGVzIik7
CiAKICAgICB0eXBlZGVmIEludFR5cGVMaW1pdHM8VD4gTGltaXRzVHJhaXQ7CkBAIC00ODcsNyAr
NDk5LDcgQEAgc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUmIAogICAgICAg
ICBjYXNlIE5vcm1hbENvbnZlcnNpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgY2FzZSBDbGFtcDoKICAgICAgICAgICAgIHJldHVybiBkIDwgTGltaXRz
VHJhaXQ6Om1pblZhbHVlID8gTGltaXRzVHJhaXQ6Om1pblZhbHVlIDogTGltaXRzVHJhaXQ6Om1h
eFZhbHVlOwpAQCAtNTIxLDYgKzUzMyw5IEBAIHN0YXRpYyBpbmxpbmUgVCB0b1NtYWxsZXJJbnQo
RXhlY1N0YXRlJiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21h
bGxlclVJbnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNp
b25Db25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdW5zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8
VD46OnZhbHVlLCAiU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdHlw
ZXMiKTsKIAogICAgIHR5cGVkZWYgSW50VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTUz
Myw3ICs1NDgsNyBAQCBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmCiAg
ICAgICAgIGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxUPihkKTsKICAgICAgICAgY2FzZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBDbGFtcDoKICAgICAg
ICAgICAgIHJldHVybiBMaW1pdHNUcmFpdDo6bWF4VmFsdWU7CkBAIC03NjIsNiArNzc3LDkgQEAg
RE9NV2luZG93JiBmaXJzdERPTVdpbmRvdyhFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEb2N1bWVudCog
dGFyZ2V0RG9jdW1lbnQsIFNlY3VyaXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09wdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXRhcmdldERvY3VtZW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKQEAgLTc3Miw3ICs3OTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuQWNj
ZXNzRG9jdW1lbnQoSlNDCiAKICAgICBzd2l0Y2ggKHJlcG9ydGluZ09wdGlvbikgewogICAgIGNh
c2UgVGhyb3dTZWN1cml0eUVycm9yOgotICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRl
LCB0YXJnZXREb2N1bWVudC0+ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNz
YWdlKGFjdGl2ZSkpOworICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRlLCBzY29wZSwg
dGFyZ2V0RG9jdW1lbnQtPmRvbVdpbmRvdygpLT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2Fn
ZShhY3RpdmUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMb2dTZWN1cml0eUVycm9yOgog
ICAgICAgICBwcmludEVycm9yTWVzc2FnZUZvckZyYW1lKHRhcmdldERvY3VtZW50LT5mcmFtZSgp
LCB0YXJnZXREb2N1bWVudC0+ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNz
YWdlKGFjdGl2ZSkpOwpAQCAtNzk5LDkgKzgxNyw5IEBAIGJvb2wgQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1QKICAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50
KHN0YXRlLCAmdGFyZ2V0LT5kb2N1bWVudCgpLCBMb2dTZWN1cml0eUVycm9yKTsKIH0KICAgICAK
LXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJvd1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRo
cm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJnN0YXRlLCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KCZzdGF0ZSwgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEFy
Z3VtZW50TXVzdEJlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKQpAQCAtODM2LDc1ICs4NTQsNzUgQEAgdm9pZCByZXBv
cnREZXByZWNhdGVkU2V0dGVyRXJyb3IoSlNDOjpFeAogICAgIGNvbnRleHQuYWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmco
IkRlcHJlY2F0ZWQgYXR0ZW1wdCB0byBzZXQgcHJvcGVydHkgJyIsIGF0dHJpYnV0ZU5hbWUsICIn
IG9uIGEgbm9uLSIsIGludGVyZmFjZU5hbWUsICIgb2JqZWN0LiIpKTsKIH0KIAotdm9pZCB0aHJv
d05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogbWVz
c2FnZSkKK3ZvaWQgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgQVNT
RVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7CiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcobWVz
c2FnZSk7Ci0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZURPTUV4
Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJSLCAmbWVzc2FnZVN0cmluZykpOworICAg
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUs
IE5PVF9TVVBQT1JURURfRVJSLCAmbWVzc2FnZVN0cmluZykpOwogfQogCi12b2lkIHRocm93SW52
YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdl
KQordm9pZCB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQo
IXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdl
KTsKLSAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CisgICAgdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5W
QUxJRF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZvaWQgdGhyb3dTZWN1cml0
eUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9p
ZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5o
YWRFeGNlcHRpb24oKSk7Ci0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFNFQ1VSSVRZX0VSUiwgbWVzc2FnZSkpOworICAgIHRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFNF
Q1VSSVRZX0VSUiwgbWVzc2FnZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJn
dW1lbnRNdXN0QmVFbnVtRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1
bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
SW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBl
Y3RlZFZhbHVlcykKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVmFsdWVzKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBh
cHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUs
IGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVu
ZExpdGVyYWwoIm9uZSBvZjogIik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRWYWx1ZXMp
OwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygp
KTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBidWlsZGVyLnRv
U3RyaW5nKCkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRl
eCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnRO
YW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUp
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJl
KGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgaW50ZXJmYWNlTmFtZSwgZnVu
Y3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImEgZnVuY3Rpb24iKTsKLSAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7Cisg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVpbGRlci50b1N0cmlu
ZygpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciog
YXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQorSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciog
YXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQogewogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1
bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25O
YW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoImFuIGluc3RhbmNlIG9mICIpOwogICAg
IGJ1aWxkZXIuYXBwZW5kKGV4cGVjdGVkVHlwZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgdGhyb3dB
cnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQordm9pZCB0aHJvd0Fy
cmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlIikpOwogfQogCi12
b2lkIHRocm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRUeXBlKQordm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlw
ZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVy
ZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBpbnN0
YW5jZSBvZiAiLCBleHBlY3RlZFR5cGUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUs
ICIgYXR0cmlidXRlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7CiB9
CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSkKIHsKLSAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJnN0YXRl
LCBtYWtlU3RyaW5nKGludGVyZmFjZU5hbWUsICIgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVj
dXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJv
cigmc3RhdGUsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmco
aW50ZXJmYWNlTmFtZSwgIiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0
IGlzIHVuYXZhaWxhYmxlIikpKTsKIH0KIAotdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBl
RXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7Cisg
ICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlZhbHVlIGlzIG5v
dCBhIHNlcXVlbmNlIikpOwogfQogCi12b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEV4ZWNT
dGF0ZSYgc3RhdGUpCit2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIlRoZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlIikpOworICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHByb3ZpZGVk
IHZhbHVlIGlzIG5vbi1maW5pdGUiKSk7CiB9CiAKIFN0cmluZyBtYWtlR2V0dGVyVHlwZUVycm9y
TWVzc2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVO
YW1lKQpAQCAtOTEyLDE0ICs5MzAsMTQgQEAgU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNz
YWdlKGNvbnN0IAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwg
Jy4nLCBhdHRyaWJ1dGVOYW1lLCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNl
cyBvZiAiLCBpbnRlcmZhY2VOYW1lKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0dl
dHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRl
TmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIG1ha2VHZXR0ZXJU
eXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBtYWtlR2V0dGVyVHlwZUVycm9yTWVz
c2FnZShpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKSk7CiB9CiAKLWJvb2wgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQorYm9vbCB0aHJvd1NldHRlclR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgdGhy
b3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLics
IGF0dHJpYnV0ZU5hbWUsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9m
ICIsIGludGVyZmFjZU5hbWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIG1h
a2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgc2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkyOCw5ICs5NDYsOSBAQCBTdHJpbmcgbWFrZVRo
aXNUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNhbiBv
bmx5IGNhbGwgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBmdW5jdGlvbk5hbWUsICIgb24gaW5zdGFu
Y2VzIG9mICIsIGludGVyZmFjZU5hbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCitFbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7Ci0gICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoaW50
ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgbWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGZ1bmN0
aW9uTmFtZSkpOwogfQogCiB2b2lkIGNhbGxGdW5jdGlvbldpdGhDdXJyZW50QXJndW1lbnRzKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgdGhpc09iamVjdCwgSlNDOjpKU0Z1
bmN0aW9uJiBmdW5jdGlvbikKQEAgLTk1NSw3ICs5NzMsOSBAQCB2b2lkIERPTUNvbnN0cnVjdG9y
SlNCdWlsdGluT2JqZWN0Ojp2aXNpCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVy
YXRvciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvciIpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMsMjUgKzExMywyNSBAQCBET01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEpTQzo6RXhlY1N0YXRl
CiBXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0
IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnREZXByZWNh
dGVkU2V0dGVyRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKIAotdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci12b2lkIHRocm93SW52
YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLXZv
aWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhy
b3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5
cGUpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEpT
Qzo6RXhlY1N0YXRlJik7Ci12b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpT
VmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVmFsdWVzKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4
LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVHlwZSk7Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JT
Y3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUpOwordm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Cit2
b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2Nv
cGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsKK3ZvaWQgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBl
eHBlY3RlZFR5cGUpOworV0VCQ09SRV9FWFBPUlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9y
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJik7CitXRUJDT1JFX0VYUE9SVCBib29s
IHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgSlNDOjpUaHJvd1Njb3BlJik7Cit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK1dFQkNP
UkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5k
ZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFs
dWVzKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCB1bnNpZ25lZCBhcmd1bWVudElu
ZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3Vt
ZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUpOwogCiBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciog
aW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiBTdHJpbmcgbWFrZVRo
aXNUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpOwogCi1XRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRo
cm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkVu
Y29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CitXRUJDT1JFX0VY
UE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVl
IHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CiAKIFdF
QkNPUkVfRVhQT1JUIEpTQzo6U3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01H
bG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogV0VCQ09SRV9FWFBPUlQgSlND
OjpTdHJ1Y3R1cmUqIGNhY2hlRE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpT
dHJ1Y3R1cmUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpAQCAtNDkwLDkgKzQ5MCwxMiBAQCBp
bmxpbmUgaW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWCiAvLyBWYWxpZGF0ZXMgdGhh
dCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEz
IG9mIHRoZSBXZWJJREwgc3BlYy4KIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2Uo
SlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0
aCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1
ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICB0aHJvd1NlcXVlbmNl
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC01MDEsNyArNTA0LDcg
QEAgaW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2Vx
dWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTcxOCwyNSArNzIxLDMzIEBAIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVl
VHJhaXRzPGRvdWIKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBWZWN0b3I8
UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6
OkpTVmFsdWUgdmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gVmVj
dG9yPFJlZlB0cjxUPj4oKTsKICAgICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPFQ+PiByZXN1bHQ7
Ci0gICAgZm9yRWFjaEluSXRlcmFibGUoJmV4ZWMsIHZhbHVlLCBbJnJlc3VsdF0oSlNDOjpWTSYs
IEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpIHsKKyAgICBmb3JF
YWNoSW5JdGVyYWJsZSgmZXhlYywgdmFsdWUsIFsmcmVzdWx0XShKU0M6OlZNJiB2bSwgSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU0M6OkpTVmFsdWUganNWYWx1ZSkgeworICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgaWYgKGpzVmFsdWUuaW5o
ZXJpdHMoSlNUOjppbmZvKCkpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChKU1Q6OnRvV3Jh
cHBlZChqc1ZhbHVlKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93QXJyYXlFbGVt
ZW50VHlwZUVycm9yKCpzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd0FycmF5RWxlbWVudFR5cGVF
cnJvcigqc3RhdGUsIHNjb3BlKTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0
ZSYgZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIFZlY3RvcjxUPigpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ1LDcgKzQ2
LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgIHsKLSAg
ICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgY29u
c3RydWN0b3IiKSk7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICBKU0M6OnRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgY29uc3RydWN0b3Ii
KSk7CiAgICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzTnVsbCgpKTsK
ICAgICB9CiAKQEAgLTIyNiw4ICsyMjksMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4g
aW5saW5lIEpTQzo6RQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCogb2JqZWN0KQogeworICAg
IEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0
cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Ioc3RhdGUsIGluZm8o
KS0+Y2xhc3NOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihzdGF0ZSwgc2NvcGUsIGluZm8oKS0+Y2xhc3NO
YW1lKTsKICAgICByZXR1cm4gY2FsbENvbnN0cnVjdG9yKHN0YXRlLCAqb2JqZWN0KTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3MywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgRW5hYmxlSWZGbG9hCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gaW5s
aW5lIFQqIGNvbnZlcnRXcmFwcGVyVHlwZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSB2YWx1ZSwgSXNOdWxsYWJsZSBpc051bGxhYmxlKQogeworICAgIEpTQzo6Vk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgVCogb2JqZWN0ID0gSlNUOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmICghb2JqZWN0ICYm
IChpc051bGxhYmxlID09IElzTnVsbGFibGU6Ok5vIHx8ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVs
bCgpKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApAQCAtMjc1LDkg
KzI3NywxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDY0X3Q+IDogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBEZWZhdWx0Q29u
dmVydGVyPFQ+IHsKICAgICBzdGF0aWMgVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKICAgICB7Cisg
ICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUudG9O
dW1iZXIoJnN0YXRlKTsKICAgICAgICAgaWYgKGFsbG93ID09IFNob3VsZEFsbG93Tm9uRmluaXRl
OjpObyAmJiBVTkxJS0VMWSghc3RkOjppc2Zpbml0ZShudW1iZXIpKSkKLSAgICAgICAgICAgIHRo
cm93Tm9uRmluaXRlVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgICAgIHRocm93Tm9uRmluaXRl
VHlwZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihu
dW1iZXIpOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01JdGVyYXRvci5oCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzAsOSArMTMxLDEyIEBAIEpTQzo6RW5j
b2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3Jh
cHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JDcmVhdGUoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBJdGVyYXRpb25LaW5kIGtpbmQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsK
KyAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0
PEpTV3JhcHBlcio+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBw
ZXIpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBKU1dyYXBwZXI6
OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwg
cHJvcGVydHlOYW1lKTsKICAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKndy
YXBwZXItPmdsb2JhbE9iamVjdCgpOwogICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShK
U0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46OmNyZWF0ZShnbG9iYWxPYmplY3Qudm0oKSwgZ2V0RE9N
U3RydWN0dXJlPEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPj4oZ2xvYmFsT2JqZWN0LnZtKCksIGds
b2JhbE9iamVjdCksICp3cmFwcGVyLCBraW5kKSk7CiB9CkBAIC0xODAsOSArMTg0LDEyIEBAIGFw
cGVuZEZvckVhY2hBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHMKIHRlbXBsYXRlPHR5cGVuYW1l
IEpTV3JhcHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4o
c3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFz
c05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUp
OwogCiAgICAgSlNDOjpKU1ZhbHVlIGNhbGxiYWNrID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAg
SlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwpAQCAtMTkwLDcgKzE5
Nyw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKICAgICBKU0M6
OkNhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKGNhbGxiYWNrLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6
Q2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAg
YXV0byBpdGVyYXRvciA9IHdyYXBwZXItPndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOwogICAg
IHdoaWxlIChhdXRvIHZhbHVlID0gaXRlcmF0b3IubmV4dCgpKSB7CkBAIC0yMjYsOSArMjMzLDEy
IEBAIEpTQzo6SlNWYWx1ZSBKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46Om4KIHRlbXBsYXRlPHR5
cGVuYW1lIEpTV3JhcHBlcj4KIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RP
TUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlcj46Om5leHQoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNEeW5h
bWljQ2FzdDxKU0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghaXRlcmF0b3IpCi0gICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkgb24g
YSBub24tSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAgIHJldHVybiBK
U0M6OkpTVmFsdWU6OmVuY29kZShpdGVyYXRvci0+bmV4dCgqc3RhdGUpKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUganNET01XaW5kb3dXZWJLaXQoCiAKIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0
T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2VzcyhKU0RPTVdpbmRvdyogdGhpc09iamVjdCwg
RnJhbWUqIGZyYW1lLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICAvLyBXZSBkb24ndCB3YW50IGFueSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3Nl
IiBhbmQgImNsb3NlZCIgb24gYSBmcmFtZWxlc3Mgd2luZG93CiAgICAgLy8gKGkuZS4gb25lIHdo
b3NlIHBhZ2UgZ290IGNsb3NlZCwgb3Igd2hvc2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAv
LyBGSVhNRTogVGhpcyBoYW5kbGluZyBmb3IgZnJhbWVsZXNzIHdpbmRvd3MgZHVwbGljYXRlcyBz
aW1pbGFyIGJlaGF2aW91ciBmb3IgY3Jvc3Mtb3JpZ2luCkBAIC0xMzUsNyArMTM4LDcgQEAgc3Rh
dGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAgICAgICAvLyBGb3IgYW55
IG90aGVyIGVudHJpZXMgaW4gdGhlIHN0YXRpYyBwcm9wZXJ0eSB0YWJsZSwgZGVueSBhY2Nlc3Mu
IChFYXJseSByZXR1cm4gYWxzbyBwcmV2ZW50cwogICAgICAgICAvLyBuYW1lZCBnZXR0ZXIgZnJv
bSByZXR1cm5pbmcgZnJhbWVzIHdpdGggbWF0Y2hpbmcgbmFtZXMgLSB0aGlzIHNlZW1zIGEgbGl0
dGxlIHF1ZXN0aW9uYWJsZSwgc2VlCiAgICAgICAgIC8vIEZJWE1FIGNvbW1lbnQgb24gcHJvdG90
eXBlIHNlYXJjaCBiZWxvdy4pCi0gICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgZXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJy
b3JNZXNzYWdlKTsKICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTQ5LDcgKzE1Miw3IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93
R2V0T3duUHJvcGVydHlTbG8KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGhy
b3dTZWN1cml0eUVycm9yKCpleGVjLCBlcnJvck1lc3NhZ2UpOworICAgIHRocm93U2VjdXJpdHlF
cnJvcigqZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQo
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIzMCw2ICsyMzMsOSBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluCiAKIGJvb2wgSlNET01XaW5kb3c6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICgh
dGhpc09iamVjdC0+d3JhcHBlZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTI0Myw3ICsyNDksNyBAQCBib29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQotICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVycm9y
TWVzc2FnZSk7CisgICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgc2NvcGUsIGVycm9y
TWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQzNCw4ICs0NDAs
MTEgQEAgaW5saW5lIEpTVmFsdWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdQogCiBKU1ZhbHVl
IEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2soJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQpAQCAtNDU1LDggKzQ2NCwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93
TW9kYWxEaWFsb2coRXhlCiAKIHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdp
bmRvdyYgaW1wbCwgRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgTWVzc2FnZVBv
cnRBcnJheSBtZXNzYWdlUG9ydHM7CiAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7
CkBAIC01MDIsOCArNTE0LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4
ZWNTdGEKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0
eVBvbGljeSA9IHdyYXBwZWQoKS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGds
b2JhbE9iamVjdCgpLT53b3JsZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwpAQCAtNTI0LDgg
KzUzOSwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0CiAKIEpT
VmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0g
d3JhcHBlZCgpLmRvY3VtZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCkgOiBudWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rp
b24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCktPndvcmxkKCksIGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ5LDEwICs0OSwxMyBAQCB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0
YXRlJiBzdGF0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNEYXRh
Q3VlKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JP
YmplY3QqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNh
bGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKGV4ZWMuYXJndW1lbnRD
b3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAK
ICAgICBkb3VibGUgc3RhcnRUaW1lKGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIo
JmV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy5oYWRFeGNlcHRpb24oKSkpCkBAIC02NCwx
MyArNjcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJv
d0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywg
IkRhdGFDdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFDdWUiKTsKIAogICAg
IFN0cmluZyB0eXBlOwogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIGlmIChleGVjLmFy
Z3VtZW50Q291bnQoKSA+IDMpIHsKICAgICAgICAgaWYgKCFleGVjLnVuY2hlY2tlZEFyZ3VtZW50
KDMpLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihleGVjLCAzLCAidHlwZSIsICJEYXRhQ3VlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDMsICJ0
eXBlIiwgIkRhdGFDdWUiLCBudWxscHRyLCAiRE9NU3RyaW5nIik7CiAgICAgICAgIHR5cGUgPSBl
eGVjLnVuY2hlY2tlZEFyZ3VtZW50KDMpLmdldFN0cmluZygmZXhlYyk7CiAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAJKHJl
dmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3OSw5ICsxNzksMTIgQEAgdm9pZCBKU0RpY3Rpb25hcnk6
OmNvbnZlcnRWYWx1ZShFeGVjU3RhdAogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1
bHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byogd2luZG93ID0gSlNET01XaW5kb3c6OnRv
V3JhcHBlZCgqc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXdpbmRvdykgJiYgIXZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBvZiB0eXBlIFdpbmRvdyIpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBv
ZiB0eXBlIFdpbmRvdyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlc3VsdCA9IHdp
bmRvdzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0x
MzAsMTIgKzEzMCwxNSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91
Y2hMaXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIHRvdWNo
TGlzdCA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGF1dG8qIGl0ZW0gPSBKU1Rv
dWNoOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgICAgICBpZiAo
IWl0ZW0pCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRU
eXBlRXJyb3Ioc3RhdGUsIGksICJ0b3VjaGVzIiwgIkRvY3VtZW50IiwgImNyZWF0ZVRvdWNoTGlz
dCIsICJUb3VjaCIpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dB
cmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIGksICJ0b3VjaGVzIiwgIkRvY3VtZW50Iiwg
ImNyZWF0ZVRvdWNoTGlzdCIsICJUb3VjaCIpKTsKIAogICAgICAgICB0b3VjaExpc3QtPmFwcGVu
ZCgqaXRlbSk7CiAgICAgfQpAQCAtMTQ1LDggKzE0OCwxMSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6
OmNyZWF0ZVRvdWNoTGlzdChFeGVjCiAKIEpTVmFsdWUgSlNEb2N1bWVudDo6Z2V0Q1NTQ2FudmFz
Q29udGV4dChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICBhdXRvIGNvbnRl
eHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRmlsZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE3ICs0MywyMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlNGaWxlKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byogY29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAg
ICBBU1NFUlQoY29uc3RydWN0b3IpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCA9IGNvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFj
b250ZXh0KQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRVbmF2YWlsYWJsZUVycm9yKGV4ZWMsICJGaWxlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywg
c2NvcGUsICJGaWxlIik7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAg
ICBKU1ZhbHVlIGFyZyA9IGV4ZWMuYXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZy5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAw
LCAiZmlsZUJpdHMiLCAiRmlsZSIsIG51bGxwdHIsICJzZXF1ZW5jZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMCwgImZpbGVCaXRzIiwgIkZp
bGUiLCBudWxscHRyLCAic2VxdWVuY2UiKTsKIAogICAgIHVuc2lnbmVkIGJsb2JQYXJ0c0xlbmd0
aCA9IDA7CiAgICAgSlNPYmplY3QqIGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZShleGVjLCBhcmcs
IGJsb2JQYXJ0c0xlbmd0aCk7CkBAIC02Myw3ICs2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlMKIAogICAgIGFyZyA9IGV4ZWMuYXJndW1lbnQoMSk7CiAgICAg
aWYgKGFyZy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcihleGVjLCAxLCAiZmlsZW5hbWUiLCAiRmlsZSIsIG51bGxwdHIsICJET01TdHJpbmciKTsK
KyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDEsICJm
aWxlbmFtZSIsICJGaWxlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOwogCiAgICAgU3RyaW5nIGZp
bGVuYW1lID0gYXJnLnRvV1RGU3RyaW5nKCZleGVjKS5yZXBsYWNlKCcvJywgJzonKTsKICAgICBp
ZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKQEAgLTc2LDcgKzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgIGlmICghYXJnLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKICAgICAgICAgSlNPYmplY3QqIGZpbGVQcm9wZXJ0eUJhZ09iamVjdCA9IGFyZy5nZXRP
YmplY3QoKTsKICAgICAgICAgaWYgKCFmaWxlUHJvcGVydHlCYWdPYmplY3QpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAyLCAib3B0aW9ucyIsICJGaWxl
IiwgbnVsbHB0ciwgIkZpbGVQcm9wZXJ0eUJhZyIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDIsICJvcHRpb25zIiwgIkZpbGUiLCBudWxs
cHRyLCAiRmlsZVByb3BlcnR5QmFnIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaWN0aW9u
YXJ5IHdyYXBwZXIgZnJvbSB0aGUgaW5pdGlhbGl6ZXIgb2JqZWN0LgogICAgICAgICBKU0RpY3Rp
b25hcnkgZGljdGlvbmFyeSgmZXhlYywgZmlsZVByb3BlcnR5QmFnT2JqZWN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0LDgg
KzEwNCwxMSBAQCBib29sIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlCiAKIEpT
VmFsdWUgSlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CiAKICAgICBTdHJpbmcgYXJndW1lbnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KCphcmd1bWVudC5pbXBsKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTcxLDggKzcxLDExIEBAIHN0YXRp
YyB2b2lkIGdldDNEQ29udGV4dEF0dHJpYnV0ZXMoRXhlY1MKIAogSlNWYWx1ZSBKU0hUTUxDYW52
YXNFbGVtZW50OjpnZXRDb250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3Rh
dGUpOwpAQCAtOTQsOCArOTcsMTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRD
b250ZXh0KAogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5U3VwcG9ydHND
b250ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEhUTUxDYW52YXNFbGVt
ZW50JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Miw2
ICsxNTIsOSBAQCBzdGF0aWMgRG9jdW1lbnQqIGZpbmRDYWxsaW5nRG9jdW1lbnQoRXhlCiAKIEpT
VmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mg
b3BlbiBjYWxscyB3aXRoIG1vcmUgdGhhbiAyIHBhcmFtZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpID4gMikgewogICAgICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gd3JhcHBlZCgpLmZyYW1lKCkpIHsKQEAgLTE2MSw3ICsxNjQsNyBAQCBKU1ZhbHVlIEpT
SFRNTERvY3VtZW50OjpvcGVuKEV4ZWNTdGF0ZSYgCiAgICAgICAgICAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CiAgICAgICAgICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSA6OmdldENhbGxE
YXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBKU0M6OmNhbGwoJnN0YXRlLCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB3cmFwcGVyLCBBcmdMaXN0KCZzdGF0ZSkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDMwICs0MywzMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdEpTSFRNTEVsZW1lbnQoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBh
dXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5j
YWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3RydWN0b3IpOwogCiAgICAgYXV0byogY29udGV4
dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIkhUTUxFbGVtZW50Iik7CisgICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
ZXhlYywgc2NvcGUsICJIVE1MRWxlbWVudCIpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpOwogCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRl
eHQpOwogCiAgICAgYXV0byogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgaWYg
KCF3aW5kb3cpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxp
dGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJuZXcudGFyZ2V0IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIikpOwogCiAgICAgYXV0byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRS
ZWdpc3RyeSgpOwogICAgIGlmICghcmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3Vz
dG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGlzIG5vdCBhIHZhbGlk
IGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIikpOwogCi0gICAgVk0mIHZtID0gZXhlYy52bSgp
OwogICAgIEpTVmFsdWUgbmV3VGFyZ2V0VmFsdWUgPSBleGVjLnRoaXNWYWx1ZSgpOwogICAgIEpT
T2JqZWN0KiBuZXdUYXJnZXQgPSBuZXdUYXJnZXRWYWx1ZS5nZXRPYmplY3QoKTsKICAgICBhdXRv
KiBlbGVtZW50SW50ZXJmYWNlID0gcmVnaXN0cnktPmZpbmRJbnRlcmZhY2UobmV3VGFyZ2V0KTsK
ICAgICBpZiAoIWVsZW1lbnRJbnRlcmZhY2UpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgZG9lcyBub3QgZGVmaW5lIGEgY3Vz
dG9tIGVsZW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBl
bGVtZW50IikpOwogCiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5pc1VwZ3JhZGluZ0VsZW1l
bnQoKSkgewogICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9i
YWxPYmplY3QoKTsKQEAgLTg0LDcgKzg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKUwogCiAgICAgRWxlbWVudCogZWxlbWVudFRvVXBncmFkZSA9IGVsZW1lbnRJ
bnRlcmZhY2UtPmxhc3RFbGVtZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOwogICAgIGlmICghZWxl
bWVudFRvVXBncmFkZSkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0
cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOworICAgICAgICB0aHJvd0ludmFs
aWRTdGF0ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBpbnN0YW50aWF0
ZSBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBpdHMgb3duIGNvbnN0cmN1dG9yIGR1cmluZyB1cGdy
YWRlcyIpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Niw4ICs1NiwxMSBAQCBib29s
IEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHCiAKIEpTVmFsdWUgSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKIAogICAgIEpTVmFsdWUgdmFsdWUgPSBuYW1lZEl0ZW1zKHN0YXRlLCB0aGlzLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJp
bmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5l
ZCgpID8ganNOdWxsKCkgOiB2YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1
MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNTQgKzM1LDcyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSlNWYWx1ZSBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0
ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBp
bnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBqc051bWJlcihpbnB1dC5z
ZWxlY3Rpb25TdGFydCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVj
dGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlu
cHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpbnB1dC5zZXRT
ZWxlY3Rpb25TdGFydCh2YWx1ZS50b0ludDMyKCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRN
TElucHV0RWxlbWVudDo6c2VsZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAg
ICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKIAogICAgIHJldHVybiBqc051bWJlcihpbnB1dC5zZWxlY3Rpb25FbmQoKSk7CiB9CiAK
IHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlvbkVuZCh2YWx1ZS50b0ludDMy
KCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGly
ZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVT
ZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIGlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0K
IAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSFRNTElucHV0
RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0
aW9uKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkx
LDEyICsxMDksMTUgQEAgdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcgog
CiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVu
dENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFw
cGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSk7CiAKICAgICBpbnQgc3RhcnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgaW50IGVuZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSGlzdG9yeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUs
OSArNTUsMTIgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdAogCiBK
U1ZhbHVlIEpTSGlzdG9yeTo6cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBhdXRvIGFyZ0NvdW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwogICAgIGlm
IChVTkxJS0VMWShhcmdDb3VudCA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGhpc3RvcnlTdGF0ZSA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCksIDAsIDApOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTg2LDkg
Kzg5LDEyIEBAIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiAKIAogSlNW
YWx1ZSBKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgYXV0byBhcmdDb3VudCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoYXJnQ291bnQgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBoaXN0b3J5U3RhdGUg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApLCAwLCAwKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJE
YXRhYmFzZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4ay5vcmc+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDcsOCArNDgsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgU3RyaW5nIG5hbWUgPSBzdGF0ZS5hcmd1bWVudCgwKS50
b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKQEAgLTU2LDcgKzYwLDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmpl
Y3RTdG9yZQogCiAgICAgSlNWYWx1ZSBvcHRpb25zVmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgxKTsK
ICAgICBpZiAoIW9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFvcHRpb25zVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgIk5v
dCBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlLCAiTm90IGFuIG9iamVjdC4iKTsKIAogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBi
b29sIGF1dG9JbmNyZW1lbnQgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ2LDEwICs0NiwxMyBA
QCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNJbWFnZUNvbnN0cnVjdG9yOjpwCiAKIHRlbXBsYXRlPD4g
RW5jb2RlZEpTVmFsdWUgSlNJbWFnZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0ltYWdlQ29uc3RydWN0b3IqIGpzQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8SlNJbWFnZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBqc0NvbnN0cnVjdG9yLT5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKHN0YXRlLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVu
dCBpcyB1bmF2YWlsYWJsZSIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
c2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKHN0YXRlLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNz
b2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIpKTsKIAogICAgIC8vIENhbGxpbmcgdG9K
UyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIHRoZSBKUyBkb2N1bWVudCB3cmFwcGVyIHRvIGJlCiAg
ICAgLy8gYWRkZWQgdG8gdGhlIHdpbmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUg
dGhhdCBKU0RvY3VtZW50Ojp2aXNpdApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEZy
YW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKICAgICAg
ICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKQEAgLTU1LDcgKzU4LDcgQEAgYm9vbCBKU0xvY2F0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIG1lc3NhZ2UpOworICAgIHRocm93U2VjdXJp
dHlFcnJvcigqZXhlYywgc2NvcGUsIG1lc3NhZ2UpOwogICAgIHNsb3Quc2V0VW5kZWZpbmVkKCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1OCw4ICszNTgsMTEgQEAgc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50
cyhjb25zdCBEaWN0aQogCiBKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJv
d1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBhdXRvIGNvbnN0cmFpbnRzRGljdGlvbmFyeSA9IERpY3Rpb25h
cnkoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSwxMCArNDEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpn
ZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU01lZGlhU3RyZWFtVHJhY2sq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRpYVN0cmVhbVRyYWNrIiwg
ImdldFNldHRpbmdzIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhp
c1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdz
IikpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0
ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTEwMiwxMCAr
MTA1LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNhcGFiaWxpdHlWYWx1ZShjb25zdCBDYXAKIAogSlND
OjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRo
aXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5
cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29w
ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAw
OSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTU5LDYgKzU5LDkgQEAgSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdl
KAogCiB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlND
OjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJyYXksIEFycmF5QnVmZmVy
QXJyYXkmIGFycmF5QnVmZmVycykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIENvbnZlcnQgZnJv
bSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgTWVzc2FnZVBvcnRBcnJh
eS4KICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4x
MyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUg
SFRNTDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewpAQCAtOTUs
NyArOTgsNyBAQCB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlCiAgICAg
ICAgICAgICBpZiAoUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZm
ZXIodmFsdWUpKQogICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShh
cnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0
Q3VzdG9tLmgJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVzc2FnZVBvcnRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01MCw4ICs1MSwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpT
Qzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQqIGlt
cGwpCiAgICAgeworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUu
dm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgICAgIE1l
c3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5
QnVmZmVyQXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBKU1Zh
bHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjCiAKIHZvaWQgSlNNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29u
dmVydDx1aW50OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0LDcgKzc3LDcgQEAgdm9p
ZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlYwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMg
bm90IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOworICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2
YWxpZCBkZWNpc2lvblBvaW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24gZGVjaXNpb24pCkBAIC05MSw2ICs5NCw5
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24KIAogc3RhdGljIGlu
bGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29udmVydDx1aW50
OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CkBAIC0xMDIsNyArMTA4
LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdAogICAgICAgICBy
ZXR1cm4gZGVjaXNpb247CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJp
bmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFs
dWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgi
JXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFsdWUpKTsKICAgICBy
ZXR1cm4gRGVjaXNpb246OkFsbG93OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01vZHVsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
Myw2ICsxMDMsOSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6CiAK
IEpTQzo6SlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1Zh
bHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUpCiB7Cisg
ICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9y
dCBKU01vZHVsZVJlY29yZC4KICAgICAvLyBPbmNlIHRoZSByZWZsZWN0aXZlIHBhcnQgb2YgdGhl
IG1vZHVsZSBsb2FkZXIgaXMgc3VwcG9ydGVkLCB3ZSB3aWxsIGhhbmRsZSBhcmJpdHJhcnkgdmFs
dWVzLgogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlZ2lzdHJ5LXBy
b3RvdHlwZS1wcm92aWRlCkBAIC0xMTYsMTAgKzExOSwxMCBAQCBKU0M6OkpTVmFsdWUgSlNNb2R1
bGVMb2FkZXI6OmV2YWx1YXRlKEpTCiAgICAgZWxzZSBpZiAobW9kdWxlS2V5VmFsdWUuaXNTdHJp
bmcoKSkKICAgICAgICAgc291cmNlVXJsID0gVVJMKFVSTCgpLCBhc1N0cmluZyhtb2R1bGVLZXlW
YWx1ZSktPnZhbHVlKGV4ZWMpKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBKU0M6OnRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBpcyBub3QgU3ltYm9sIG9y
IFN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBvciBTdHJpbmcuIikp
OwogCiAgICAgaWYgKCFzb3VyY2VVcmwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gSlNDOjp0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4gaW52YWxp
ZCBVUkwuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJNb2R1bGUga2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKIAogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZXZhbHVhdGluZyBtb2R1bGUgY29kZS4KIApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ0LDE5ICs0NSwy
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy51
bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9i
amVjdCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCAwLCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZlciIs
IG51bGxwdHIsICJNdXRhdGlvbkNhbGxiYWNrIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZl
ciIsIG51bGxwdHIsICJNdXRhdGlvbkNhbGxiYWNrIik7CiAKICAgICBET01Db25zdHJ1Y3Rvck9i
amVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMu
Y2FsbGVlKCkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU011dGF0aW9uQ2FsbGJhY2s6OmNyZWF0
ZShvYmplY3QsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpKTsKICAgICBKU09iamVjdCog
anNPYnNlcnZlciA9IGFzT2JqZWN0KHRvSlNOZXdseUNyZWF0ZWQoJmV4ZWMsIGpzQ29uc3RydWN0
b3ItPmdsb2JhbE9iamVjdCgpLCBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoV1RGTW92ZShjYWxs
YmFjaykpKSk7CiAgICAgUHJpdmF0ZU5hbWUgcHJvcGVydHlOYW1lOwotICAgIGpzT2JzZXJ2ZXIt
PnB1dERpcmVjdChqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgcHJvcGVydHlO
YW1lLCBvYmplY3QpOworICAgIGpzT2JzZXJ2ZXItPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1l
LCBvYmplY3QpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNPYnNlcnZlcik7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA5LTIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTIsMTMgKzExMiwx
NiBAQCBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSCiAKIEpTVmFsdWUg
SlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAg
SlNWYWx1ZSBuZXdDaGlsZFZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
YXV0byogbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChuZXdDaGlsZFZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIW5ld0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImluc2VydEJl
Zm9yZSIsICJOb2RlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJn
dW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAibm9kZSIsICJOb2RlIiwgImluc2VydEJl
Zm9yZSIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKFVO
TElLRUxZKCF3cmFwcGVkKCkuaW5zZXJ0QmVmb3JlKCpuZXdDaGlsZCwgSlNOb2RlOjp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBlYykpKSB7CkBAIC0xMzIsMTYgKzEzNSwx
OSBAQCBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUg
SlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAg
YXV0byogbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgSlNWYWx1ZSBvbGRDaGlsZFZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSk7CiAgICAgYXV0byogb2xkQ2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChvbGRDaGlsZFZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkIHx8ICFvbGRDaGlsZCkpIHsKICAgICAg
ICAgaWYgKCFuZXdDaGlsZCkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJyZXBsYWNlQ2hp
bGQiLCAiTm9kZSIpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHN0YXRlLCAxLCAiY2hpbGQiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAi
Tm9kZSIpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxk
IiwgIk5vZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVu
dFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJjaGlsZCIsICJOb2RlIiwgInJlcGxhY2VDaGls
ZCIsICJOb2RlIikpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTU2
LDEwICsxNjIsMTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlcGxhY2VDaGlsZChFeGVjU3RhdGUmIAog
CiBKU1ZhbHVlIEpTTm9kZTo6cmVtb3ZlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgY2hpbGRWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAg
IGF1dG8qIGNoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoY2hpbGRWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjaGlsZCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1
bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAi
Tm9kZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAi
Tm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSgh
d3JhcHBlZCgpLnJlbW92ZUNoaWxkKCpjaGlsZCwgZWMpKSkgewpAQCAtMTczLDEwICsxODIsMTMg
QEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgcwogCiBKU1ZhbHVlIEpT
Tm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgbmV3Q2hpbGRWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIGF1dG8gbmV3
Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChuZXdDaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIW5ld0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwgIk5v
ZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9k
ZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSghd3Jh
cHBlZCgpLmFwcGVuZENoaWxkKCpuZXdDaGlsZCwgZWMpKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDkgQEAgdWludDE2X3QgSlNOb2RlRmlsdGVyOjph
Y2NlcHROb2RlKE5vZGUqIAogewogICAgIFJlZjxKU05vZGVGaWx0ZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+
dm0oKSk7CisgICAgVk0mIHZtID0gbV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKTsKKyAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtNTQsNyAr
NTYsNyBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb25Pck9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhz
dGF0ZSwgImFjY2VwdE5vZGUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewogICAgICAgICAvLyBSZXRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgc3Rh
dGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAg
ICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0
LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtOTYsMTAgKzk2LDEyIEBAIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3Qo
RXhlY1N0YXRlKiAKICAgICAKIEVuY29kZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTSFRNTEVsZW1lbnQqIHRo
aXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3Qo
ZXhlYywgdGhpc09iamVjdCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZh
dGVDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5v
biBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE0
ICszNywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBQdWJsaWMgSlMgUmVhZGFibGVTdHJl
YW1SZWRlciBhbmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBj
YWxsYmFja3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIp
KTsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9y
IHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKEV4ZWNT
dGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAogICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0
cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkp
OwogICAgIGlmICghc3RyZWFtKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cihleGVjLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0ciwgIlJl
YWRhYmxlU3RyZWFtIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0ciwg
IlJlYWRhYmxlU3RyZWFtIik7CiAKICAgICBKU1ZhbHVlIGpzRnVuY3Rpb24gPSBzdHJlYW0tPmdl
dCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImdldFJlYWRlciIpKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9t
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdMZW5ndGhDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDcsMTMgKzQ4LDE2IEBAIEpTVmFsdWUgSlNTVkdM
ZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmlzTnVtYmVy
KCkgJiYgIXZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0
YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtNzIsNiArNzYsOSBAQCB2b2lkIEpTU1ZHTGVuZ3RoOjpzZXRW
YWx1ZShFeGVjU3RhdGUmIHN0CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNp
ZmllZFVuaXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAod3Jh
cHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBO
T19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKQEAgLTgwLDcgKzg3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lm
aWVkVQogICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnByb3BlcnR5UmVmZXJlbmNl
KCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgdW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQz
Migmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC05Nyw4ICs5NywxMSBAQCBKU1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3lu
CiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVy
KEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRD
b3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBleGVjLnZtKCkudGhyb3dFeGNlcHRpb24oJmV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZleGVjKSk7CiAKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0ID0gd3Jh
cHBlZCgpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50
b0ludDMyKCZleGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzAsOCArMTcwLDExIEBA
IGVudW0gT2JqZWN0VHlwZSB7CiAKIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRlJiBzdGF0ZSwgT2JqZWN0
VHlwZSBvYmplY3RUeXBlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+d3JhcHBlZCgpOwpAQCAt
MjcwLDEzICsyNzMsMTYgQEAgdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0
QQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFk
ZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwogICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiBzaGFkZXJzOwogICAgIGJvb2wgc3Vj
Y2VlZCA9IGNvbnRleHQuZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIHNoYWRlcnMsIGVjKTsK
ICAgICBpZiAoZWMpIHsKQEAgLTI5Myw4ICsyOTksMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5nIG5h
bWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgm
c3RhdGUpOwpAQCAtMzExLDggKzMyMCwxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CkBAIC0zMzUsOCArMzQ3LDExIEBAIEpTVmFsdWUgSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4gc3Rh
dGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCA9IHdyYXBwZWQoKTsKQEAgLTM1MywxNCArMzY4LDE3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dy
YW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9n
cmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNzksMTMgKzM5
NywxNiBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBKU1dlYkdM
U2hhZGVyOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIHVuc2ln
bmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTQxNywxNyArNDM4LDIwIEBAIEpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJH
TFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0
aW9uKiBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQuZ2V0VW5pZm9ybShwcm9n
cmFtLCBsb2NhdGlvbiwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRp
b24oJnN0YXRlLCBlYyk7CkBAIC00ODgsOCArNTEyLDExIEBAIHN0YXRpYyBib29sIGZ1bmN0aW9u
Rm9yVW5pZm9ybShEYXRhRnVuY3QKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25m
KERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUu
YXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlv
biogbG9jYXRpb24gPSAwOwogICAgIGxvbmcgaW5kZXggPSAtMTsKQEAgLTQ5Nyw3ICs1MjQsNyBA
QCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgaWYgKGZ1bmN0
aW9uRm9yVW5pZm9ybShmKSkgewogICAgICAgICBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9j
YXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlm
ICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICB9IGVsc2UK
ICAgICAgICAgaW5kZXggPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0
ZSk7CiAgICAgCkBAIC01NDMsNyArNTcwLDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVu
Y3Rpb25mKERhdGFGdQogICAgIAogICAgIFZlY3RvcjxmbG9hdCwgNjQ+IGFycmF5OwogICAgIGlm
ICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBhcnJheSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgc3dpdGNoIChmKSB7CiAgICAg
Y2FzZSBmX3VuaWZvcm0xdjoKQEAgLTU3OCwxMiArNjA1LDE1IEBAIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZGF0YUZ1bmN0aW9uZihEYXRhRnUKIAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rp
b25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3Rh
dGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSk7CiAgICAgCiAgICAgUmVmUHRyPEludDMyQXJyYXk+IHdlYkdMQXJyYXkgPSB0b0lu
dDMyQXJyYXkoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIApAQCAtNjEzLDcgKzY0
Myw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnUKICAgICAKICAg
ICBWZWN0b3I8aW50LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKICAgICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgpAQCAtNjM4
LDEyICs2NjgsMTUgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdQog
CiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25NYXRy
aXhUb0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9u
ID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWxvY2F0aW9uICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAg
IAogICAgIGJvb2wgdHJhbnNwb3NlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29s
ZWFuKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNjcxLDcgKzcw
NCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KEQKICAgICAKICAg
ICBWZWN0b3I8ZmxvYXQsIDY0PiBhcnJheTsKICAgICBpZiAoIXRvVmVjdG9yKHN0YXRlLCBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgyKSwgYXJyYXkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2
OgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9D
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
S2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03Nyw2ICs3Nyw5IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVh
dGVBbGcKIAogc3RhdGljIGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5Rm9ybWF0JiByZXN1bHQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBTdHJpbmcga2V5Rm9ybWF0U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0
YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTg5LDcgKzkyLDcgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5
Rm9ybWF0RnJvbUpTVmFsdWUoRQogICAgIGVsc2UgaWYgKGtleUZvcm1hdFN0cmluZyA9PSAiandr
IikKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5Rm9ybWF0OjpKV0s7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGtleSBm
b3JtYXQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiVW5rbm93biBrZXkgZm9ybWF0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwpAQCAtOTcsOCArMTAwLDExIEBAIHN0YXRpYyBib29sIGNyeXB0
b0tleUZvcm1hdEZyb21KU1ZhbHVlKEUKIAogc3RhdGljIGJvb2wgY3J5cHRvS2V5VXNhZ2VzRnJv
bUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5VXNhZ2Um
IHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTMyLDgg
KzEzOCwxMSBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZShFCiAKIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTE0
OSw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4CiAK
ICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0
KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVz
YWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CkBAIC0xODUsOCArMTk0LDExIEBAIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAogSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxn
b3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMjAyLDcgKzIxNCw3IEBA
IEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRlY3J5cHQoRXgKIAogICAgIFJlZlB0cjxD
cnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwog
CiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7CiAgICAgICAg
IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBp
bmNsdWRlICdkZWNyeXB0JyIpKTsKQEAgLTIzNyw4ICsyNDksMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
OjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUu
YXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVB
bGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0yNTQsNyArMjY5LDcgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjUwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0g
SlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAg
aWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIWtleS0+
YWxsb3dzKENyeXB0b0tleVVzYWdlU2lnbikpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOwpA
QCAtMjg5LDggKzMwNCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4
ZWNTCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDQp
Ci0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUo
c3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkg
ewpAQCAtMzA2LDcgKzMyNCw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlm
eShFeGUKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2Fn
ZVZlcmlmeSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwo
IktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3ZlcmlmeSciKSk7CkBAIC0zNDcsOCArMzY1LDEx
IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGUKIAogSlNWYWx1ZSBK
U1dlYktpdFN1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0
byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0zODksOCArNDEw
LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2VzdChFeGUKIAogSlNWYWx1
ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTQ0
NSw2ICs0NjksOSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtlCiAK
IHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQg
a2V5Rm9ybWF0LCBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGEsIFJlZlB0cjxDcnlwdG9BbGdvcml0
aG0+IGFsZ29yaXRobSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IHBhcmFtZXRl
cnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5cHRvQWxn
b3JpdGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJh
Y2sgZmFpbHVyZUNhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0tleVNlcmlhbGl6YXRpb24+IGtleVNlcmlhbGl6YXRpb247CiAgICAgc3dpdGNoIChr
ZXlGb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgpAQCAtNDUzLDcgKzQ4
MCw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBjYXNl
IENyeXB0b0tleUZvcm1hdDo6SldLOiB7CiAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcgPSBTdHJp
bmc6OmZyb21VVEY4KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKICAgICAgICAgaWYgKGp3a1N0
cmluZy5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJ
SUxpdGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJK
V0sgSlNPTiBzZXJpYWxpemF0aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBrZXlTZXJpYWxpemF0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s+KCZzdGF0ZSwgandrU3RyaW5nKTsK
QEAgLTQ2Miw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0
ZSwgCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3Ig
aW1wb3J0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9ydCIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDcxLDcgKzQ5OCw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlLCAKICAgICBPcHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNv
bmNpbGVkUmVzdWx0ID0ga2V5U2VyaWFsaXphdGlvbi0+cmVjb25jaWxlQWxnb3JpdGhtKGFsZ29y
aXRobS5nZXQoKSwgcGFyYW1ldGVycy5nZXQoKSk7CiAgICAgaWYgKCFyZWNvbmNpbGVkUmVzdWx0
KSB7CiAgICAgICAgIGlmICghc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBr
ZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1
bWVudCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0
aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00ODAsNyArNTA3LDcg
QEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAgIGFsZ29yaXRo
bSA9IHJlY29uY2lsZWRSZXN1bHQtPmFsZ29yaXRobTsKICAgICBwYXJhbWV0ZXJzID0gcmVjb25j
aWxlZFJlc3VsdC0+cGFyYW1ldGVyczsKICAgICBpZiAoIWFsZ29yaXRobSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiTmVpdGhlciBrZXkgbm9yIGZ1bmN0
aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmllZCIpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJOZWl0aGVyIGtleSBu
b3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBhbGdvcml0aG0gc3BlY2lmaWVkIikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKQEAgLTUwNSw4
ICs1MzIsMTEgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogCiBK
U1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjppbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlmICghY3J5cHRvS2V5Rm9y
bWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CkBA
IC01NjgsOCArNTk4LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmltcG9ydEtl
eSgKIAogc3RhdGljIHZvaWQgZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZv
cm1hdCBrZXlGb3JtYXQsIGNvbnN0IENyeXB0b0tleSYga2V5LCBDcnlwdG9BbGdvcml0aG06OlZl
Y3RvckNhbGxiYWNrIGNhbGxiYWNrLCBDcnlwdG9BbGdvcml0aG06OlZvaWRDYWxsYmFjayBmYWls
dXJlQ2FsbGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWtleS5leHRyYWN0YWJsZSgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJLZXkgaXMg
bm90IGV4dHJhY3RhYmxlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUiKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTU5MywxNSArNjI2LDE4IEBAIHN0YXRpYyB2b2lkIGV4cG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBr
ZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgZXhwb3J0Iikp
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlw
dG86OmV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBr
ZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3Rh
dGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTYxMSw3ICs2NDcsNyBAQCBKU1ZhbHVl
IEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoCiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5
PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEp
KTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVy
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CkBAIC02MzEsOCArNjY3
LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSgKIAogSlNWYWx1
ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDQpCi0gICAgICAgIHJl
dHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAg
IENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9t
SlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTY0Miwx
MSArNjgxLDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXgKIAog
ICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gd3JhcHBpbmdLZXkgPSBKU0NyeXB0
b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpKTsKICAgICBpZiAoIWtl
eSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICghd3JhcHBpbmdLZXkt
PmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5
JyIpKTsKQEAgLTcwMCw4ICs3MzksMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6
d3JhcEtleShFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCA1KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlm
ICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBr
ZXlGb3JtYXQpKSB7CkBAIC03MTcsNyArNzU5LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6dW53cmFwS2V5KAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gdW53cmFwcGluZ0tleSA9
IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOwogICAg
IGlmICghdW53cmFwcGluZ0tleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAg
IGlmICghdW53cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlVW53cmFwS2V5KSkgewog
ICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBk
byBub3QgaW5jbHVkZSAndW53cmFwS2V5JyIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Nywx
MCArNDcsMTMgQEAgSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSYg
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3Ry
dWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKIAog
ICAgIGlmICghZXhlYy5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmZXhlYykpOwogCiAgICAgU3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMudW5jaGVja2Vk
QXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJmV4ZWMpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlv
bigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29w
ZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwg
MjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDggKzgwLDExIEBAIEpTVmFsdWUgSlNX
b3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXAKIAogSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNj
b3BlOjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3Jl
YXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtOTQsOCAr
OTcsMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KAogCiBKU1Zh
bHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9
IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCks
IHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDcsNyArNDgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rp
b24oCiAKIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjppbnZv
a2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBvYmplY3QsIGNvbnN0IGNo
YXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcikKIHsKLSAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKCZzdGF0ZSk7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8gZnVuY3Rpb24gPSBvYmplY3QuZ2V0KCZzdGF0
ZSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAg
ICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTUsNyArNTgsNyBAQCBKU0M6OkpTVmFs
dWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvCiAKICAgICBpZiAoIWZ1bmN0aW9uLmlzRnVu
Y3Rpb24oKSkgewogICAgICAgICBpZiAoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0g
dHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFi
bGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIp
KTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw5IEBA
IHByb3RlY3RlZDoKIAogICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93KCkKICAgICB7Ci0gICAg
ICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihtX2V4ZWMpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKG1fZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsK
ICAgICB9CiAKICAgICB2b2lkIGZhaWwoKQpAQCAtMTU3MCw3ICsxNTcyLDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgdGhyb3dWYWxpZGF0aW9uRXJyb3IoKQogICAgIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRh
LiIpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwog
ICAgIH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbiA8PSBD
dXJyZW50VmVyc2lvbjsgfQpAQCAtMjc1NiwxNSArMjc2MCwxOCBAQCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyCiAKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpt
YXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEV4ZWNTdGF0ZSogZXhlYywg
U2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChj
b2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IHN3aXRjaCAoY29kZSkgewogICAgIGNhc2UgU3RhY2tPdmVyZmxvd0Vycm9yOgotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFZhbGlkYXRpb25F
cnJvcjoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBEYXRhQ2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJSKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDUx
NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMTI2LDExICsxMjYsMTIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
OjpldmFsdWF0ZShjbwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogCiAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKICAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2Rl
KCksIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhj
ZXB0aW9uKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKChyZXR1cm5lZEV4
Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRp
b24pKSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAgICAgZm9yYmlkRXhlY3V0
aW9uKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw3ICsxNDQsNyBAQCB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBz
b3VyY2VDb2RlLnVybCgpLnN0cmluZygpOwogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSBlcnJvcjsKICAgICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0
RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwg
ZXJyb3IsIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpKSB7Ci0gICAgICAgICAgICB2bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSk7
CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhl
YywgZXJyb3JNZXNzYWdlLmltcGwoKSkpOwogICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24g
PSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAg
ICAgIH0KQEAgLTE1Myw3ICsxNTQsOSBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6
OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV93
b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTkwNCw5ICs5MDQsMTEgQEAgc3ViIEdlbmVyYXRl
RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbgogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBs
YXRlPD4gJGNsYXNzTmFtZSBjb252ZXJ0PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVz
dWx0IC49ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0g
IiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiI7CiAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPCRjbGFzc05hbWU+KHN0YXRl
LCB2YWx1ZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKCFyZXN1
bHQpKSB7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgdGhyb3dTY29wZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVy
biB7IH07XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgIHJldHVybiByZXN1bHQudmFsdWUoKTtcbiI7CkBAIC0xMDA5LDExICsxMDExLDEz
IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnQKIAogICAgICAgICAk
cmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFzc05hbWU+IGNvbnZlcnREaWN0aW9u
YXJ5PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgVk0mIHZtID0g
c3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBp
ZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIgaWYgJGRlZmF1bHRWYWx1ZXM7CiAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuICRjbGFzc05hbWUgeyAiIC4gJGRlZmF1bHRW
YWx1ZXMgLiAiIH07XG4iIGlmICRkZWZhdWx0VmFsdWVzOwogICAgICAgICAkcmVzdWx0IC49ICIg
ICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7XG4iOwogICAgICAgICAkcmVzdWx0
IC49ICIgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhw
T2JqZWN0VHlwZSkpIHtcbiI7Ci0gICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIApA
QCAtMTk0MSw2ICsxOTQ1LDkgQEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25z
dHJ1YwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOyAgICAKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFy
Z3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oJG1heEFyZ0NvdW50LCBzdGF0ZS0+YXJndW1lbnRD
b3VudCgpKTsKIEVORAogCkBAIC0yMDE1LDkgKzIwMjIsOSBAQCBFTkQKICAgICB9CiAgICAgbXkg
JG1pbkFyZ0NvdW50ID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKICAgICBpZiAoJG1p
bkFyZ0NvdW50ID4gMCkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
YXJnc0NvdW50IDwgJG1pbkFyZ0NvdW50ID8gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4i
KQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gYXJnc0NvdW50IDwgJG1p
bkFyZ0NvdW50ID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7XG4iKQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtc
biIpCiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI4MTAsNyAr
MjgxNyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKIAotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7CiAKICAgICAgICAgICAg
IGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
ID1+IC9Db25zdHJ1Y3RvciQvKSB7CkBAIC0yODI2LDcgKzI4MzUsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRl
cmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CkBA
IC0zMDA3LDkgKzMwMTYsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVu
Y3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpO1xuIik7CiAKICAgICAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTtc
biIpOwpAQCAtMzAyNiwxMCArMzAzNywxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVuY3Rpb25O
YW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
ZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAKQEAg
LTMxMDksNiArMzEyMiw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke3B1dEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsiKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAg
ICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CkBAIC0zMTIxLDcgKzMxMzcsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwg
XCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTMyMTAsNyArMzIy
Niw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkge1xuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwi
JHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwi
JHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOwpAQCAtMzIyOSw3ICszMjQ1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlw
ZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTMzOTcsNiArMzQxMywxMCBA
QCBFTkQKIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CiAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisKICAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNFUmVhY3Rpb25zIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNp
ZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2s7XG4iKTsKQEAgLTM3MTYsNyArMzczNiw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0
aW9uQ2FzdGVkVGhpcwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFs
dWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpO1xuIik7CiAgICAgICAgIG15ICRjYXN0aW5nSGVscGVyID0gR2V0Q2FzdGluZ0hl
bHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7CkBAIC0zNzMyLDcgKzM3NTIsNyBAQCBzdWIg
R2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICAgICAgbXkgJHZpc2libGVJbnRlcmZhY2VO
YW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJbnRlcmZhY2VOYW1lKCRpbnRlcmZhY2Up
OwogICAgICAgICBteSAkZG9tRnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5h
bWU7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRk
b21GdW5jdGlvbk5hbWVcIik7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR2aXNp
YmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsKICAgICB9CiAK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlLT5u
YW1lIGVxICJFdmVudFRhcmdldCI7CkBAIC0zODAwLDcgKzM4MjAsNyBAQCBzdWIgR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrCiAgICAgaWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkKICAg
ICB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpKVxuIik7Ci0gICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7XG4iKTsKICAgICB9CiB9
CiAKQEAgLTM5MjIsNyArMzk0Miw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5k
ZXgpLmlzT2JqZWN0KCkpXG4iKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlz
aWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJbmRl
eCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25O
YW1lKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgi
KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFt
ZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihzdGF0
ZSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSksIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkpO1xuIik7CkBAIC0z
OTM2LDcgKzM5NTYsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpLmlzT2JqZWN0
KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25F
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9u
T25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihzdGF0ZSwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkpO1xuIik7CkBAIC0zOTU0LDcgKzM5NzQsNyBAQCBz
dWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgZm9yICh1bnNpZ25lZCBpID0gJGFyZ3VtZW50SW5kZXgsIGNvdW50ID0gc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byogaXRlbSA9IEpTJHt0eXBlfTo6
dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKSk7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghaXRlbSlcbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBpLCBcIiRuYW1lXCIsIFwiJHZpc2libGVJ
bnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVuY2hlY2tl
ZEFwcGVuZChpdGVtKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM5OTcsNyArNDAxNyw3IEBAIHN1
YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiJGluZGVudCAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIp
OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIk
bmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KCkpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUVudW1FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRu
YW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8JGNsYXNzTmFtZT4oKSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVlLnZh
bHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC00MDIxLDcg
KzQwNDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwi
LCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBl
XCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJn
dW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVk
RnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3Zl
KCRuYW1lKSI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDA2Nyw3ICs0MDg3LDcgQEAgc3Vi
IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAKICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5
UmVmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
IChVTkxJS0VMWSghJG5hbWUpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsICRhcmd1
bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRG
dW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFj
ZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAg
ICAgICAgICR2YWx1ZSA9ICRpc1RlYXJPZmYgPyAiJG5hbWUtPnByb3BlcnR5UmVmZXJlbmNlKCki
IDogIiokbmFtZSI7CiAgICAgICAgICAgICB9CiAKQEAgLTUyNDMsMTQgKzUyNjMsMTYgQEAgc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksIDw8RU5EKTsKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDwke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3Ry
dWN0b3IpOwogCiAgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2
YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1l
fVwiKTsKIAogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAKICAgICBBdG9t
aWNTdHJpbmcgZXZlbnRUeXBlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5n
KHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTMyNyw2ICs1MzQ5LDkgQEAgRU5ECiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JD
bGFzc05hbWV9Kj4oc3RhdGUtPmNhbGxlZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIEFTU0VSVChjYXN0ZWRUaGlzKTtcbiIpOwogCkBAIC01MzU2LDE0ICs1
MzgxLDE0IEBAIEVORAogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwg
Iipjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFt
ZX1cIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNv
bnN0cnVjdG9yQ2FsbFdpdGgifSwgIkRvY3VtZW50IikpIHsKICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0
cnVjdG9yQXJnTGlzdCwgImRvY3VtZW50Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlz
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIFwiJHt2aXNp
YmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVy
ZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpO1xuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KCpjb250ZXh0KTtcbiIpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFt
ZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTgg
KzExNywyMiBAQCB2b2lkIEpTSW50ZXJmYWNlTmFtZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50ZXJmYWNlTmFt
ZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAogYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MiwxMiArMTQyLDE0IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpkZXN0
cm95KEpTQzoKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9i
amVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3Rp
dmVET01PYmplY3QiLCAiZXhjaXRpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4
Y2l0aW5nQXR0ciIpOwogICAgIH0KICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSwgVGhy
b3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTE1OSwxOCArMTYxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2
ZURPTU9iamVjdEV4Y2kKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVj
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29s
IHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE4NCwzMyArMTkwLDM5IEBA
IEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4
Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RBY3RpdmVET01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFj
dGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIs
ICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAgICAgaWYgKCFCaW5kaW5n
U2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpLmZyYW1lKCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gbmV4dENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoIW5leHRDaGlsZCkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm5leHRDaGlsZCIsICJUZXN0QWN0aXZlRE9NT2JqZWN0Iiwg
ImV4Y2l0aW5nRnVuY3Rpb24iLCAiTm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJuZXh0Q2hpbGQiLCAiVGVzdEFjdGl2
ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIiwgIk5vZGUiKTsKICAgICBpbXBsLmV4Y2l0
aW5nRnVuY3Rpb24oKm5leHRDaGlsZCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3Rp
dmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAicG9zdE1lc3NhZ2UiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMywxOCArMTIzLDIyIEBAIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rl
c3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJv
b2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZp
c2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsOSArMTIzLDExIEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmYKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIEpTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwgKmRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKICAgICAvLyBTaGFkb3dp
bmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNpbmcgdGhlIHNhbWUgY29uc3Ry
dWN0b3Igb2JqZWN0CiAgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSB8IFJl
YWRPbmx5KTsKQEAgLTEzNCwxMCArMTM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2kKIAogYm9vbCBzZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJ
KHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwx
OCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3AKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTg1LDE0ICsxODksMTcgQEAgSlNW
YWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29ucwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90
aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVy
IiwgImFub3RoZXJGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsMTQgKzczLDE2IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RFdmVudENvbnMKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVl
KCkpOwogICAgIEFTU0VSVChqc0NvbnN0cnVjdG9yKTsKIAogICAgIGlmICghanNDb25zdHJ1Y3Rv
ci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1
Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIlRlc3RF
dmVudENvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiKTsKIAogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMTc5LDEyICsxODEsMTQgQEAgdm9p
ZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpkZXN0cm95KEpTQwogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIxIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuYXR0cjEoKSk7CkBAIC0xOTQsMTIgKzE5OCwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RFdmVudENvbnN0cnVj
dG9yIiwgImF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5hdHRyMigpKTsKQEAgLTIxMCwxMiArMjE2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2
ZW50Q29uc3RydWN0b3JBdHQKICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVOVCkKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjMiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5hdHRyMygpKTsKQEAgLTIyNiwxOCArMjM0LDIyIEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0RXZl
bnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRU
YXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RFdmVudFRh
cmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk4LDE0ICsyMDIsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RF
dmVudFRhcmdldDo6Z2V0Q29uc3RydWN0bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0ZW0iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZlbnRUYXJnZXQi
LCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
aW5kZXggPSBjb252ZXJ0PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNCwxMiArMTM0LDE0IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpT
Qzo6SlNDZWwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RFeGNlcHRpb24iLCAibmFtZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwubmFtZSgpKTsKQEAgLTE0OSwxOCArMTUxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1MKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9u
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rl
c3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhj
ZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE4ICsx
MTcsMjIgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpkZXN0cm95KAogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3Rvcihz
dGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc5LDEyICsxNzksMTQgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ry
b3koSlNDOjpKUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9i
amVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9i
YWxPYmplY3QiLCAicmVndWxhckF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJyZWd1
bGFyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5yZWd1bGFyQXR0cmlidXRlKCkpOwpAQCAtMTk0LDEyICsxOTYsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhcgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUF0
dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlKCkpOwpAQCAtMjEwLDEyICsyMTQsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0UHVibGljQQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFs
T2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEds
b2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQcml2
YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7CkBAIC0yMjcsMTIgKzIzMywxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2Jq
ZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2Jh
bE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0
IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSk7CkBAIC0yNDMs
MTggKzI1MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2Jq
ZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVj
dFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBA
IC0yNjMsMTEgKzI3NSwxMyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
KEV4CiAKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJyZWd1
bGFyQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInJlZ3VsYXJBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMjgwLDExICsyOTQs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidQogCiBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5k
UHJpdmF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAg
LTI5OCwxMSArMzE0LDEzIEBAIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJp
dmEKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQ
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZh
dGVDb25kaXRpb25hbEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
ZyhzdGF0ZSk7CkBAIC0zMTcsMTEgKzMzNSwxMyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFB1YmxpY0FuZFByaXZhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQwLDE0
ICszNjAsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3Q6OmdldENvbnN0cnVjdAogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAicmVndWxhck9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAi
cmVndWxhck9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTgsMTQgKzM4MSwxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xv
YmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQ
YXJhbSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNzgsMTQgKzQwNCwxNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8
aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzk4LDYgKzQyNyw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmEKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBz
aXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5n
dWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKQEAgLTQwOSwxNyArNDQx
LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmEKICAgICAgICAg
cmV0dXJuIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uMShzdGF0ZSk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8
IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwg
MSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2Jh
bE9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0
IiwgInRlc3RQcml2YXRlRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInRlc3RQcml2YXRl
RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdEdsb2JhbE9iamVjdDo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGltcGwudGVzdFByaXZhdGVGdW5jdGlvbigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjIsMTAgKzIyMiwxMyBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RTdXBwbGVtZW50YWw6OkNPTlNU
X0lNCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVl
KCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8gc3RyMSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0yMzUsNyArMjM4LDcgQEAgdGVtcGxhdGU8PiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBj
YXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFj
b250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIpOwogICAgIGF1dG8gb2Jq
ZWN0ID0gVGVzdEludGVyZmFjZTo6Y3JlYXRlKCpjb250ZXh0LCBXVEZNb3ZlKHN0cjEpLCBXVEZN
b3ZlKHN0cjIpLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkgewogICAgICAgICBzZXRET01F
eGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTQxMiw3ICs0MTUsOSBAQCB2b2lkIEpTVGVzdEludGVy
ZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihU
ZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQyMyw3ICs0MjgsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQzNCwxMiArNDQxLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG8KICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1w
bGVtZW50c1N0cjEiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmltcGxlbWVudHNTdHIxKCkpOwpAQCAtNDUxLDEyICs0NjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5B
QkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNl
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50c1N0
cjIoKSk7CkBAIC00NjgsMTIgKzQ3OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c1N0cjMoKnN0YXRl
KSk7CiB9CkBAIC00ODMsMTIgKzQ5NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pbXBsZW1lbnRz
Tm9kZSgpKTsKQEAgLTUwMCw3ICs1MTUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRh
bFN0YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFdlYkNvcmU6OlRl
c3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01MTEsNyArNTI4LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0bwogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
NTIyLDEyICs1NDEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
bwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbFN0cjEoaW1wbCkpOwpAQCAtNTM5LDEyICs1NjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
U3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3Ry
MiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wbCkpOwpAQCAtNTU2LDEyICs1NzksMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbFN0cjMoKnN0YXRlKSk7CiB9CkBAIC01NzEsMTIg
KzU5NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50CiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRl
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6
c3VwcGxlbWVudGFsTm9kZShpbXBsKSk7CkBAIC01ODcsMTggKzYxNCwyMiBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEludGVy
ZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCkBAIC02MzAsNyArNjYxLDkgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dEJ5
SW5kZXgoSlNDZWxsKgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQogYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02NDMsMTEgKzY3NiwxMyBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9ySW1wbGVtCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RG
U3RyaW5nKHN0YXRlKTsKQEAgLTY2MiwxMSArNjk3LDEzIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c1N0cjIoRXgKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0
cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKICAgICB9CiAgICAgY2Fz
dGVkVGhpcy0+c2V0SW1wbGVtZW50c1N0cjMoKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC02NzcsMTYgKzcxNCwxOCBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dHNTdHIzKEV4CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
CiBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNOb2RlIiwgIk5vZGUiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIsICJOb2Rl
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRJbXBsZW1lbnRz
Tm9kZSgqbmF0aXZlVmFsdWUpOwpAQCAtNjk4LDcgKzczNyw5IEBAIGJvb2wgc2V0SlNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c05vZGUoRXgKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVt
ZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03MTEsMTEgKzc1MiwxMyBAQCBib29sIHNldEpTVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG9yU3VwcGxlCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVu
dGFsU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTczMCwxMSArNzczLDEzIEBAIGJv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMigKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRh
bFN0cjMiKTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0U3VwcGxlbWVudGFsU3RyMygqc3Rh
dGUsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc0NSwxNiArNzkwLDE4IEBAIGJvb2wg
c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMygKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFj
ZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5v
ZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIsICJOb2RlIik7Cisg
ICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIsICJOb2RlIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVu
dGFsTm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOwpAQCAtNzcxLDEwICs4MTgsMTMgQEAgSlNWYWx1
ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKAogI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmltcGxlbWVudHNN
ZXRob2QxKCk7CkBAIC03ODYsMTQgKzgzNiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtODAzLDcgKzg1Niw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJv
YmpBcmciLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIsICJUZXN0T2JqIik7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QyIiwgIlRl
c3RPYmoiKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0
ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
QEAgLTgxNSwxMCArODY4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbXBsZW1lbnRzTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRz
TWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVk
VGhpcy0+aW1wbGVtZW50c01ldGhvZDMoKnN0YXRlKSk7CiB9CkBAIC04MjgsNiArODg0LDkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtODM3LDEwICs4
OTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRh
bE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxNZXRob2QxIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2Qx
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRl
cmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwp
OwpAQCAtODUyLDE0ICs5MTQsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTg2OSw3ICs5MzQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJn
KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2Jq
QXJnIiwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMiIsICJUZXN0T2JqIik7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiLCAi
VGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1l
dGhvZDIoaW1wbCwgKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZywgZWMpKTsKIAog
ICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtODgxLDEwICs5NDYsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxN
ZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8o
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxN
ZXRob2QzKCpzdGF0ZSkpOwogfQpAQCAtODk0LDYgKzk2Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSwxOCArMTMxLDIyIEBAIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SXRlcmFi
bGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQCB2b2lkIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yOjpkZXN0cm95CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0
cmlidXRlQ3VzdG9tIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0
ZUN1c3RvbSIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PnRlc3RBdHRyaWJ1dGVDdXN0b20oKnN0YXRlKSk7CiB9CkBAIC0xNDcsMTIgKzE0OSwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogICAgIH0KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUpKTsK
IH0KQEAgLTE2MCwxOCArMTY0LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgpAQCAtMTgwLDExICsxODgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cgogCiBib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0
dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVS
V0N1c3RvbSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1
c3RvbSIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRUZXN0QXR0cmlidXRlUldDdXN0b20o
KnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTgsMTAgKzIwOCwxMyBAQCBK
U1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEN1c3RvbUZ1bmN0aW9uIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6aW5mbygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RD
dXN0b21GdW5jdGlvbigqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE4ICsxMjUsMjIgQEAgdm9pZCBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpkZXN0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE1MCwxNiArMTU0LDE5
IEBAIEpTVmFsdWUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2UKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
RnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5j
dGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgMCwgImxpc3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1l
dGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAibGlzdGVuZXIiLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIiLCAibWV0aG9kIik7CiAgICAgYXV0byBsaXN0ZW5lciA9IEpTTWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZChXVEZNb3ZlKGxpc3Rl
bmVyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDEzIEBAIHRlbXBsYXRlPD4g
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ28KIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byBzdHIxID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTE1OSwxOCArMTYyLDIyIEBAIHZvaWQgSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6ZGVzdHJveShKU0MKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAogYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vZGUuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5
LDkgQEAgdHlwZWRlZiBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGU+IEpTVAogCiB0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3ROb2RlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKQEAgLTE2MSwxMiAr
MTY0LDE0IEBAIEpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUoVk0mIHZtLCAKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Tm9kZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CkBAIC0xNzYsMTggKzE4MSwy
MiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RO
b2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk2LDEx
ICsyMDUsMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKgogCiBi
b29sIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwg
Im5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZT
dHJpbmcoc3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAko
cmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMTIg
KzE0NiwxNCBAQCB2b2lkIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmRlc3Ryb3koSlNDCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9u
bHlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVy
bWluaXN0aWMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CiAgICAg
fQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwpAQCAtMTgxLDEyICsxODMsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbgogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwogICAgIH0KICNpZiBF
TkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTIxNiwxMiArMjIwLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihkZWNvZGVk
VGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMi
LCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0yNTEsMTIgKzI1NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAi
bm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgfQogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQpAQCAtMjkwLDEy
ICsyOTgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbgogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRp
b25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVy
RXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
QEAgLTMyNSwxOCArMzM1LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Io
c3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zNDUsMTEgKzM1OSwxMyBAQCBi
b29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvCiAKIGJvb2wgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGlj
IiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1
ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zNjIsMTEgKzM3OCwxMyBAQCBib29sIHNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmlu
ZyhzdGF0ZSk7CkBAIC0zNzksMTEgKzM5NywxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dU
RlN0cmluZyhzdGF0ZSk7CkBAIC0zOTYsMTEgKzQxNiwxMyBAQCBib29sIHNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVy
bWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJu
b25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtNDIwLDEwICs0NDIsMTMgQEAgSlNWYWx1ZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRD
b25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0
aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5v
bmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJu
b25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MCw5ICsxMzAsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcAog
CiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1UeXBlIGNvbnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgdmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0xODEs
OSArMTgzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHAKIAog
dGVtcGxhdGU8PiBUZXN0T2JqOjpPcHRpb25hbCBjb252ZXJ0PFRlc3RPYmo6Ok9wdGlvbmFsPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
YXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpPcHRpb25hbD4oc3RhdGUsIHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMjI0LDkg
KzIyOCwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwCiAKIHRl
bXBsYXRlPD4gQWx0ZXJuYXRlRW51bU5hbWUgY29udmVydDxBbHRlcm5hdGVFbnVtTmFtZT4oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2U8QWx0ZXJuYXRlRW51bU5hbWU+KHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTI2NSw5ICsy
NzEsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFycwogCiB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkVudW1BIGNvbnZlcnQ8VGVzdE9iajo6RW51bUE+KEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3Vs
dCA9IHBhcnNlPFRlc3RPYmo6OkVudW1BPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0zMDgsOSArMzE2LDExIEBAIHRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnMKIAogdGVtcGxhdGU8PiBUZXN0
T2JqOjpFbnVtQiBjb252ZXJ0PFRlc3RPYmo6OkVudW1CPihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxU
ZXN0T2JqOjpFbnVtQj4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMzUxLDkgKzM2MSwxMSBAQCB0ZW1wbGF0ZTw+IE9w
dGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzCiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUMg
Y29udmVydDxUZXN0T2JqOjpFbnVtQz4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6RW51
bUM+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1
bHQudmFsdWUoKTsKQEAgLTM5Niw5ICs0MDgsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0
T2JqOjpLaW5kPiBwYXJzZQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OktpbmQgY29udmVydDxUZXN0
T2JqOjpLaW5kPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpLaW5kPihzdGF0ZSwgdmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBA
IC00MzksOSArNDUzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFy
c2UKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpTaXplIGNvbnZlcnQ8VGVzdE9iajo6U2l6ZT4oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6U2l6ZT4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtNDgyLDkgKzQ5OCwx
MSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+CiAKIHRlbXBsYXRl
PD4gVGVzdE9iajo6Q29uZmlkZW5jZSBjb252ZXJ0PFRlc3RPYmo6OkNvbmZpZGVuY2U+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRv
IHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkNvbmZpZGVuY2U+KHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTQ5NywxMSAr
NTE1LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW4KIAogdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFyeTxU
ZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5IHsgeyB9LCBUZXN0T2JqOjpFbnVtVHlwZTo6
RW51bVZhbHVlMSwgVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nLCAiZGVmYXVsdFN0cmlu
ZyIsIHsgfSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIDAsIDAs
IHsgfSwgeyB9LCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7IH0sIDAsIHsgfSwgMCwgbnVsbHB0
ciwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgeyB9IH07CiAgICAgYXV0byogb2JqZWN0
ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0
LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZVdp
dGhvdXREZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwg
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1l
cmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpKSk7CkBAIC02MDMsOSArNjIzLDExIEBAIHRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4KIAogdGVtcGxhdGU8PiBPcHRpb25h
bDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4gY29udmVydERp
Y3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBh
dXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iamVj
dCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAgICAgYXV0byByZXF1aXJl
ZEVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2Jq
ZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlcXVpcmVk
RW51bWVyYXRpb25WYWx1ZSIpKSk7CkBAIC02MjMsMTEgKzY0NSwxMyBAQCB0ZW1wbGF0ZTw+IE9w
dGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnlUCiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNo
b3VsZFRvbGVyYXRlTnVsbCB7IHsgfSwgeyB9IH07CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUu
Z2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkg
PT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZSA9IGNvbnZlcnRP
cHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlIikpKTsKQEAgLTYz
OSwxMSArNjYzLDEzIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVQK
IAogdGVtcGxhdGU8PiBPcHRpb25hbDxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4gY29udmVydERp
Y3Rpb25hcnk8QWx0ZXJuYXRlRGljdGlvbmFyeU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRP
ck51bGwoKSkKICAgICAgICAgcmV0dXJuIEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lIHsgeyB9LCB7
IH0gfTsKICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5M
SUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAgICAg
YXV0byBlbnVtZXJhdGlvblZhbHVlID0gY29udmVydE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBl
PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZSwgImVudW1lcmF0aW9uVmFsdWUiKSkpOwpAQCAtMTEwMiwxOSArMTEyOCwyMiBAQCBzdGF0aWNf
YXNzZXJ0KFRlc3RPYmo6OnJlYWRvbmx5ID09IDAsICJyCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0
b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFy
Z3VtZW50KDApLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBu
dWxscHRyKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVs
bHB0cik7CiAgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFz
T2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9u
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxw
dHIpOwogICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElL
RUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iik7CisgICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIpOwogICAgIEFTU0VSVChj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KCpjb250ZXh0KTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPYmo6OmNyZWF0ZShkb2N1
bWVudCwgKnRlc3RDYWxsYmFjaywgKnRlc3RDYWxsYmFja0Z1bmN0aW9uKTsKQEAgLTE0OTUsMTIg
KzE1MjQsMTQgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlMb25nQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJl
YWRPbmx5TG9uZ0F0dHIoKSk7CkBAIC0xNTEwLDEyICsxNTQxLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVh
ZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5U3RyaW5n
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZE9u
bHlTdHJpbmdBdHRyKCkpOwpAQCAtMTUyNSwxMiArMTU1OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRP
bmx5VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5VGVzdE9i
akF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLnJlYWRPbmx5VGVzdE9iakF0dHIoKSk7CkBAIC0xNTQwLDcgKzE1NzUsOSBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTU0OSw3ICsxNTg2LDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTU4LDEyICsxNTk3LDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGkKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJUZXN0U3ViT2Jq
Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRD
b25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
QEAgLTE1NzEsMTIgKzE2MTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JUZXN0UwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKICAgICB9CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzLT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC0xNTg5LDEyICsxNjMyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialRlc3RTdWJPYmpFbmFibGUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0
ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIGltcGwuZW51bUF0dHIoKSk7CkBAIC0xNjA0LDEyICsxNjQ5LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGEKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJieXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKQEAgLTE2MTksMTIgKzE2NjYsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YQogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJvY3RldEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKQEAgLTE2MzQsMTIgKzE2ODMsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJzaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2hvcnRBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKQEAgLTE2NDksMTIgKzE3MDAsMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdAogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
bGFtcGVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNsYW1wZWRTaG9y
dEF0dHIoKSk7CkBAIC0xNjY0LDEyICsxNzE3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNsYW1wZWRTaG9ydEF0dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW5mb3JjZVJhbmdl
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
ZW5mb3JjZVJhbmdlU2hvcnRBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5lbmZvcmNlUmFuZ2VTaG9ydEF0dHIo
KSk7CkBAIC0xNjc5LDEyICsxNzM0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuZm9y
Y2VSYW5nZVNob3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZFNo
b3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKQEAgLTE2OTQsMTIgKzE3NTEs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImxvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImxvbmdBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwpAQCAtMTcwOSwxMiArMTc2OCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImxvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTG9u
Z0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwpAQCAt
MTcyNCwxMiArMTc4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIo
RXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRMb25nTG9u
Z0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7CkBAIC0xNzM5LDEyICsx
ODAyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmcKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5n
QXR0cigpKTsKQEAgLTE3NTQsMTIgKzE4MTksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U3RyaW5nQXR0cihFeGVjUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5n
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC51c3ZzdHJpbmdBdHRyKCkpOwpAQCAtMTc2OSwxMiAr
MTgzNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyKEV4CiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVz
dE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLnRlc3RPYmpBdHRyKCkpOwpAQCAtMTc4NCwxMiArMTg1MywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRl
c3ROdWxsYWJsZU9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3ROdWxsYWJsZU9iakF0dHIoKSk7CkBAIC0xNzk5LDcg
KzE4NzAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKQEAgLTE4
MTQsMTIgKzE4ODcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpB
dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdlYWJsZUF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAidW5mb3JnZWFibGVBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC51bmZvcmdlYWJsZUF0dHIoKSk7CkBAIC0xODI5LDEyICsxOTA0LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuZm9yZ2VhYmxlQXR0cigKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSk7CkBAIC0xODQ0LDEy
ICsxOTIxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGkKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3Zz
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3Zz
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcoKSk7CkBAIC0xODU5LDEyICsxOTM4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alVzdnN0cmluZ0F0dHJUcmUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRp
b25FbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
ImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiaW1wbGVtZW50YXRpb25F
bnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1w
bGVtZW50YXRpb25FbnVtQXR0cigpKTsKQEAgLTE4NzQsMTIgKzE5NTUsMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRpb25FbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiWE1MT2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC54bWxPYmpBdHRy
KCkpOwpAQCAtMTg4OSwxMiArMTk3MiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxP
YmpBdHRyKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNyZWF0ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjcmVhdGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwpA
QCAtMTkwNCwxMiArMTk4OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhl
Y1N0YXRlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOwpA
QCAtMTkxOSwxMiArMjAwNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRV
U1ZTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdh
dHRyQXR0cikpOwpAQCAtMTkzNCwxMiArMjAyMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpSZWZsZWN0ZWRVU1ZTdHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZElu
dGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CkBAIC0xOTQ5
LDEyICsyMDQwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmEK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVbnNpZ25lZElu
dGVncmFsQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50
ZWdyYWxhdHRyQXR0cikpKTsKQEAgLTE5NjQsMTIgKzIwNTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJv
b2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRo
b3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0
dHJBdHRyKSk7CkBAIC0xOTc5LDEyICsyMDc0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZEJvb2xlYW4KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJM
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxl
Y3RlZFVSTEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKQEAgLTE5OTQsMTIgKzIwOTEs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cgogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWR1c3Z1cmxhdHRyQXR0cikpOwpAQCAtMjAwOSwxMiArMjEwOCwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3Rl
ZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKQEAgLTIwMjQsMTIgKzIxMjUsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3Vz
dG9tQ29udGVudEludGVncmFsQXR0ckF0dHIpKTsKQEAgLTIwMzksMTIgKzIxNDIsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSQogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cikpOwpAQCAtMjA1NCwxMiAr
MjE1OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21CCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpI
VE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwpAQCAtMjA3MCwxMiArMjE3Nywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJl
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSk7CkBAIC0yMDg2LDEyICsyMTk1LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWUKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwudHlwZWRBcnJheUF0dHIoKSk7CkBAIC0yMTAxLDEyICsyMjEyLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEUKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjEx
OCwxMiArMjIzMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlIGVjOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBA
IC0yMTM1LDEyICsyMjUwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0
dGVyRXgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsK
QEAgLTIxNTAsMTIgKzIyNjcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhT
ZXR0ZXJFeAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoKSk7CkBAIC0yMTY1LDEy
ICsyMjg0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXgKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjE4MiwxMiArMjMwMywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdlCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKCkpOwpAQCAtMjE5NywxMiArMjMyMCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpTdHJpbmdBdHRyV2l0aFNlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjdXN0b21B
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbUF0dHIiKTsKICAgICB9CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21BdHRyKCpzdGF0ZSkpOwogfQpAQCAtMjIx
MCwxMiArMjMzNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNT
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsK
ICAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFt
ZXMoKS5mb29FdmVudCkpOwpAQCAtMjIyNCwxMiArMjM1MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9ud2Vi
a2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib253
ZWJraXRmb28iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib253ZWJraXRmb28iKTsKICAgICB9CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkp
OwpAQCAtMjIzOCwxMiArMjM2NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbndlYmtp
dGZvbyhFeGVjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlKCpzdGF0ZSkpOwpAQCAtMjI1MywxMiArMjM4NCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxs
V2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2Fs
bFdpdGhBdHRyaWJ1dGUoKnN0YXRlKSk7CkBAIC0yMjY4LDEyICsyNDAxLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFMKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMjg2LDEyICsyNDIxLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0K
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwpAQCAtMjMwMywxMiArMjQ0MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byog
Y29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0yMzIzLDEyICsyNDYyLDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihk
ZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMzQxLDEyICsyNDgyLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvKiBjb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTIzNjEsMTIgKzI1MDQsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTIzNzks
MTIgKzI1MjQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
d2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpOwpAQCAtMjM5NSwxMiArMjU0MiwxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRy
MSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CkBAIC0yNDEyLDEyICsyNTYxLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CkBAIC0yNDI5
LDEyICsyNTgwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
b25kaXRpb25hbEF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFs
QXR0cjMoKSk7CkBAIC0yNDQ2LDEyICsyNTk5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVGVzdE9iamVjdEE6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMjQ2MSwxMiArMjYxNiwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYm
IEVOQUJMRShDb25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1
Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qjo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CkBAIC0yNDc2LDEyICsyNjMzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI2
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAgICB9CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI0OTAsMTIgKzI2NDksMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNgogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
YWNoZWRBdHRyaWJ1dGUxIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0g
Y2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdldCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1MDgsMTIgKzI2NjksMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjYWNoZWRBdHRy
aWJ1dGUyIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhp
cy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1MjYsMTIgKzI2ODksMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJh
bnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBpbXBsLmFueUF0dHJpYnV0ZSgpOwpAQCAtMjU0MSwxMiArMjcwNiwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgImNvbnRlbnREb2N1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb250ZW50RG9jdW1lbnQi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBs
LmNvbnRlbnREb2N1bWVudCgpKSA/IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA6IGpzTnVsbCgpKTsKQEAgLTI1NTUsMTIgKzI3
MjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KAogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibXV0
YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RPYmosIFNWR1BvaW50Pjo6Y3Jl
YXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9p
bnQpKTsKQEAgLTI1NzAsMTIgKzI3MzksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0
YWJsZVBvaW50KEV4ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBv
aW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgU1ZHUHJvcGVydHlUZWFyT2ZmPFNW
R1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnQoKSkpOwpAQCAtMjU4NSwxMiArMjc1
NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmF3YmVy
cnkiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwpAQCAtMjYwMCwx
MiArMjc3MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZGVzY3JpcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
ZGVzY3JpcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7
CkBAIC0yNjE1LDEyICsyNzkwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0
aW9uKEV4ZWMKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpZCIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpZCIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5pZCgpKTsKQEAgLTI2MzAsMTIgKzI4MDcsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiaGFzaCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJoYXNoIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwpAQCAtMjY0NSwxMiArMjgyNCwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVw
bGFjZWFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNjYwLDEyICsyODQxLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJu
dWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVy
KGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNjc1LDEyICsyODU4LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXQKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpT
TnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKCkpOwpAQCAtMjY5MCwxMiArMjg3NSwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSgpKTsKQEAgLTI3MDUsMTIg
KzI4OTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nQXR0cmli
dXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgp
KTsKQEAgLTI3MjAsMTIgKzI5MDksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVTdHJpbmdBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051bGxhYmxlSlNOdW1iZXIo
aW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKQEAgLTI3MzUsMTIgKzI5MjYs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdTZXR0
YWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0
cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJs
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKCkpOwpAQCAtMjc1MCwxMiArMjk0MywxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NlCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVVTVlN0cmluZ1NldHRhYmxl
QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxsKHN0YXRlLCBpbXBsLm51bGxhYmxl
VVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNzY1LDEyICsyOTYwLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW4KIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjc4MiwxMiArMjk3
OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZSgp
KTsKQEAgLTI3OTcsMTIgKzI5OTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2
ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
ImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0
ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKQEAgLTI4MTIsMTIg
KzMwMTMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlcwogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc0F0dHJp
YnV0ZSgpKTsKQEAgLTI4MjcsMTIgKzMwMzAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHV0Rm9yd2FyZHNBdHRyaQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051
bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJwdXRG
b3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
KCkpOwpAQCAtMjg0MiwxMiArMzA0NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRG
b3J3YXJkc051bGxhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ2lmaWVyQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
aWZpZXJBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5naWZpZXJBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ2lmaWVyQXR0
cmlidXRlKCkpOwpAQCAtMjg1NywxOCArMzA2NCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpbmdpZmllckF0dHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9i
ajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCkBAIC0yODc3LDcgKzMwODgsOSBAQCBib29sIHNldEpTVGVzdE9iakNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogCiAKIGJvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNT
dHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0yODg4LDExICszMTAxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNTdHJpbmcKIAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIlRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yLgogICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIp
LCB2YWx1ZSk7CkBAIC0yOTAxLDExICszMTE2LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHQKIAogYm9vbCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbnVt
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZTxUZXN0T2JqOjpFbnVtVHlwZT4oKnN0YXRlLCB2
YWx1ZSk7CkBAIC0yOTIwLDExICszMTM3LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHIo
RXhlY1N0YXRlKiBzdGEKIAogYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDhfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CkBAIC0yOTM3LDExICszMTU2LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQnl0
ZUF0dHIoRXhlY1N0YXRlKiBzdGEKIAogYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im9jdGV0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PHVpbnQ4X3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMjk1NCwxMSArMzE3NSwxMyBAQCBib29sIHNldEpT
VGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0CiAKIGJvb2wgc2V0SlNUZXN0T2JqU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInNob3J0QXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJzaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQxNl90Pigq
c3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTI5NzEsMTEgKzMxOTQsMTMgQEAg
Ym9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdAogCiBib29sIHNldEpTVGVz
dE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
Y2xhbXBlZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjbGFtcGVkU2hvcnRBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MTZfdD4oKnN0YXRlLCB2YWx1ZSwgQ2xhbXApOwpAQCAt
Mjk4OCwxMSArMzIxMywxMyBAQCBib29sIHNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhl
Y1N0CiAKIGJvb2wgc2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0QXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxp
bnQxNl90Pigqc3RhdGUsIHZhbHVlLCBFbmZvcmNlUmFuZ2UpOwpAQCAtMzAwNSwxMSArMzIzMiwx
MyBAQCBib29sIHNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cihFCiAKIGJvb2wgc2V0
SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRTaG9ydEF0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDx1aW50MTZfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zMDIyLDExICszMjUxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
VW5zaWduZWRTaG9ydEF0dHIoRXhlY1MKIAogYm9vbCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nQXR0ciIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJsb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzAzOSwxMSArMzI3MCwxMyBAQCBib29sIHNldEpT
VGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhCiAKIGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImxvbmdMb25nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxp
bnQ2NF90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMwNTYsMTEgKzMy
ODksMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKgogCiBib29s
IHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzA3MywxMSArMzMwOCwxMyBAQCBib29s
IHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4CiAKIGJvb2wgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9X
VEZTdHJpbmcoc3RhdGUpOwpAQCAtMzA5MCwxMSArMzMyNywxMyBAQCBib29sIHNldEpTVGVzdE9i
alN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzCiAKIGJvb2wgc2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInVzdnN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0
cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzEwNywxNiArMzM0NiwxOCBAQCBib29sIHNldEpTVGVz
dE9ialVzdnN0cmluZ0F0dHIoRXhlY1N0YXRlCiAKIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAg
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0
dHIiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RPYmpBdHRyIiwgIlRlc3RPYmoiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpbXBsLnNldFRlc3RPYmpBdHRyKCpuYXRp
dmVWYWx1ZSk7CkBAIC0zMTI2LDE4ICszMzY3LDIwIEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9i
akF0dHIoRXhlY1N0YXRlKiAKIAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAidGVzdE51bGxhYmxlT2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVl
ID0gbnVsbHB0cjsKICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAg
ICAgbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIiLCAiVGVz
dE9iaiIpOworICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgIlRlc3RPYmoiKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTMxNDgsNyAr
MzM5MSw5IEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cihFeGUKIAogYm9v
bCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKQEAgLTMxNTcsNyArMzQwMiw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRl
c3RPYmpBdHRyKEV4ZWMKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsZW5pZW50VGVzdE9iakF0dHIiLCAiVGVzdE9i
aiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImxlbmllbnRUZXN0T2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRMZW5pZW50VGVzdE9iakF0dHIoKm5h
dGl2ZVZhbHVlKTsKQEAgLTMxNjcsMTEgKzM0MTIsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMZW5p
ZW50VGVzdE9iakF0dHIoRXhlYwogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmlu
Z0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9T
dHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCB2YWx1ZSk7CkBAIC0zMTg0LDEx
ICszNDMxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEEKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzIwMSwxMSArMzQ1MCwxMyBA
QCBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051CiAKIGJvb2wgc2V0SlNU
ZXN0T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJpbXBsZW1lbnRhdGlvbkVudW1BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltcGxlbWVu
dGF0aW9uRW51bUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2U8QWx0ZXJuYXRlRW51bU5hbWU+
KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMzIyMCwxNiArMzQ3MSwxOCBAQCBib29sIHNldEpTVGVzdE9i
akltcGxlbWVudGF0aW9uRW51bUF0dHIoCiAKIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIlhNTE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQo
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIsICJU
ZXN0T2JqIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRYTUxPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7
CkBAIC0zMjM5LDExICszNDkyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVj
U3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiY3JlYXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNyZWF0ZSIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtMzI1NiwxMSArMzUxMSwxMyBAQCBi
b29sIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlCiAKIGJvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzI3Mywx
MSArMzUzMCwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlCiAK
IGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0
cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzI5MCwxMSArMzU0OSwxMyBAQCBib29sIHNldEpTVGVz
dE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIoCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
SW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3Rl
ZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKQEAgLTMzMDcsMTEgKzM1NjgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRJbnRlZ3JhbEF0dHIoRQogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVu
c2lnbmVkSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8dWludDMyX3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzMyNCwxMSArMzU4NywxMyBAQCBib29sIHNldEpT
VGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVj
dGVkQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTMzNDEsMTEgKzM2MDYs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeAogCiBib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVUkxBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMzNTgsMTEg
KzM2MjUsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdAogCiBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUs
IHZhbHVlKTsKQEAgLTMzNzUsMTEgKzM2NDQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVU1ZVUkxBdHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMzOTIsMTEgKzM2NjMsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNDA5LDExICszNjgyLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWwKIAogYm9vbCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4o
c3RhdGUpOwpAQCAtMzQyNiwxMSArMzcwMSwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbUJvb2xlYW5BCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21VUkxB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQ0NCwxMSArMzcyMSwxMyBAQCBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoCiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQ2MiwxOCArMzc0MSwyMCBAQCBi
b29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1CiAKIGJvb2wgc2V0SlNUZXN0
T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidHlw
ZWRBcnJheUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFu
YXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsKKyAgICAgICAg
dGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVlLmdldCgpKTsK
QEAgLTM0ODMsMTEgKzM3NjQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihF
eGVjU3RhdAogCiBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
NTAwLDExICszNzgzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24KIAogYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25X
aXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzUxNywxMSArMzgwMiwxMyBAQCBib29sIHNldEpT
VGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1MzYsMTEgKzM4MjMsMTMgQEAgYm9vbCBz
ZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbgogCiBib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlIGVjOwpAQCAtMzU1NSwxMSArMzg0NCwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUp
OwpAQCAtMzU3MiwxMSArMzg2MywxMyBAQCBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjCiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1OTEsMTEgKzM4ODQsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4YwogCiBib29sIHNldEpTVGVzdE9iakN1c3Rv
bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJjdXN0b21BdHRyIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEN1
c3RvbUF0dHIoKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNjA0LDExICsz
ODk5LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHMKIAogYm9v
bCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJv
bmZvbyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJvbmZvbyIpOwogICAgIH0KICAgICBzZXRFdmVudEhhbmRs
ZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBl
dmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM2MTcs
MTEgKzM5MTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLAog
CiBib29sIHNldEpTVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CiAg
ICAgfQogICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBj
YXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMzYzMCwxMSArMzkyOSwxMyBAQCBib29sIHNldEpTVGVzdE9iak9u
d2Via2l0Zm9vKEV4ZWNTdGF0ZSogCiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKQEAgLTM2NDcsMTEgKzM5NDgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dAogCiBib29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNl
dHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
NjY0LDE2ICszOTY3LDE4IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2EKIAogYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpA
QCAtMzY4NiwxNiArMzk5MSwxOCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250CiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
IiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMi
LCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKm5hdGl2ZVZhbHVlKTsKQEAg
LTM3MDUsMTYgKzQwMTIsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkg
ewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsK
KyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsICJU
ZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYXV0byogY29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0zNzI3LDE2ICs0MDM2LDE4IEBAIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rl
c3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkp
IHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIlRl
c3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3NDks
MTYgKzQwNjAsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAog
CiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOworICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8q
IGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzc3MSwxNiArNDA4NCwx
OCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250CiAKIGJvb2wgc2V0
SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0
cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwor
ICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3OTMs
MTYgKzQxMDgsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAog
CiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3VtZW50
c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOworICAgICAgICB0
aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0V2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwpAQCAtMzgxMywxMSArNDEz
MCwxMyBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRDCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJf
dD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODMyLDExICs0MTUxLDEz
IEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3QKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9u
YWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBA
IC0zODUxLDExICs0MTcyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihF
eGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0
dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zODcwLDExICs0MTkzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMyhFeGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIGJvb2wgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0
aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3Rvci4KICAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CkBA
IC0zODg1LDExICs0MjEwLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBib29s
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1Iik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNv
bmRpdGlvbmFsQXR0cjUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCiAgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUp
OwpAQCAtMzkwMCwxMSArNDIyNywxMyBAQCBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQog
Ym9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yLgogICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZt
KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZh
bHVlKTsKQEAgLTM5MTQsMTEgKzQyNDMsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI2Q29uc3RydQogCiBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
YW55QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlOwpAQCAtMzkyOSwxOCArNDI2MCwy
MCBAQCBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqCiAKIGJvb2wgc2V0
SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im11dGFibGVQb2ludCIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRl
YXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6
dG9XcmFwcGVkKHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsK
LSAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAibXV0YWJsZVBvaW50IiwgIlNWR1BvaW50Iik7CisgICAgICAgICAgICB0aHJvd0F0dHJpYnV0
ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2lu
dCIsICJTVkdQb2ludCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMzk1MSwxOCArNDI4NCwyMCBAQCBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2lu
dChFeGVjU3RhdGUqCiAKIGJvb2wgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1
ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAg
ICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIHRocm93QXR0cmlidXRl
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiLCAiU1ZHUG9p
bnQiKTsKKyAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiLCAiU1ZHUG9pbnQiKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5NzMsMTEgKzQzMDgs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdAogCiBib29sIHNl
dEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
c3RyYXdiZXJyeSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
OTkwLDExICs0MzI3LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUq
IHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJpZCIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGlu
dDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNDAwNywxMSArNDM0
NiwxMyBAQCBib29sIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuCiAKIGJvb2wg
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVwbGFj
ZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJv
cGVydHkuCiAgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVl
KTsKQEAgLTQwMjAsMTEgKzQzNjEsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0
dHJpYnV0ZShFeAogCiBib29sIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC00MDM3LDExICs0MzgwLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
TnVsbGFibGVMb25nU2V0dGFibGVBdHQKIAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmlu
Z1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51
bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0
aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CkBAIC00MDU0LDExICs0Mzk5LDEz
IEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUEKIAogYm9vbCBzZXRK
U1Rlc3RPYmpOdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0
YXRlLCB2YWx1ZSk7CkBAIC00MDcxLDExICs0NDE4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVs
bGFibGVVU1ZTdHJpbmdTZXR0YWIKIAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFs
dWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAt
NDA4OCwxMSArNDQzNywxMyBAQCBib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUo
RXhlCiAKIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51
bVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gcGFyc2U8VGVzdE9iajo6T3B0aW9uYWw+KCpzdGF0ZSwgdmFsdWUpOwpA
QCAtNDEwNywxMSArNDQ1OCwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNl
cnZlZEVuCiAKIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgUmVmPFRlc3ROb2Rl
PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzQXR0cmli
dXRlKCk7CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0KCk7CkBAIC00MTI1LDEx
ICs0NDc4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXgKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAg
ICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCku
cHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVkSW1wbCkK
QEAgLTQxNDUsMTEgKzQ1MDAsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxh
YmxlQXR0cgogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9V
U1ZTdHJpbmcoc3RhdGUsIHZhbHVlKTsKQEAgLTQxNzcsMTQgKzQ1MzQsMTcgQEAgSlNWYWx1ZSBK
U1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKFZNJiB2bQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUp
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gdGVzdFBhcmFtID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQxOTcsMTQgKzQ1NTcsMTcgQEAgc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJl
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC00MjE3LDYgKzQ1ODAsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+
KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewog
ICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwpAQCAtNDIyOCwxNiArNDU5NCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKHN0YXRlKTsKICNlbmRpZgogICAgIH0KLSAgICBy
ZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJl
dHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9k
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bXBsLnZvaWRNZXRob2QoKTsKQEAgLTQyNDYsMTQgKzQ2MTUsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhBcmdzIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC00MjYyLDE3ICs0NjM0LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgy
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0
aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2
b2lkTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIGltcGwudm9pZE1ldGhvZFdpdGhB
cmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZyk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZU1ldGhvZCgpKTsK
QEAgLTQyODEsMTQgKzQ2NTYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0
aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBieXRlQXJnID0g
Y29udmVydDxpbnQ4X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQyOTcsMTcgKzQ2NzUs
MjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtF
TFkoIW9iakFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIsICJUZXN0
T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIs
ICJUZXN0T2JqIik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRo
b2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9jdGV0TWV0aG9kIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJvY3RldE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9k
KCkpOwpAQCAtNDMxNiwxNCArNDY5NywxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRN
ZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9j
dGV0QXJnID0gY29udmVydDx1aW50OF90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MzMy
LDE3ICs0NzE2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRv
IG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvY3RldE1ldGhvZFdpdGhB
cmdzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRo
b2RXaXRoQXJncyIsICJUZXN0T2JqIik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJn
KSwgKm9iakFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxv
bmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9k
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
bG9uZ01ldGhvZCgpKTsKQEAgLTQzNTEsMTQgKzQ3MzgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC00MzY3LDE3ICs0NzU3LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9k
V2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25n
TWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJB
cmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2JqTWV0aG9k
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkpOwpAQCAtNDM4NiwxNCAr
NDc3OSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9iak1l
dGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2RXaXRoQXJncyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGxvbmdBcmcgPSBjb252ZXJ0PGludDMyX3Q+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ0MDIsMTcgKzQ3OTgsMjAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0g
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMiwgIm9iakFyZyIs
ICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAib2Jq
QXJnIiwgIlRlc3RPYmplY3QiLCAib2JqTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcp
LCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZv
cmdlYWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuZm9y
Z2VhYmxlTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdlYWJsZU1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpOwpAQCAtNDQyMSwxNCArNDgy
MCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZyA9IHZhbHVlVG9TdHJpbmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQzOCwyOSArNDg0MCwzNSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29s
dmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQ
YXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIHJlc29sdmVyID0gSlNYUGF0aE5TUmVzb2x2ZXI6OnRvV3JhcHBlZCgqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXNvbHZlcikpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKCpzdGF0ZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQ
YXRoTlNSZXNvbHZlclBhcmFtZXRlciIsICJYUGF0aE5TUmVzb2x2ZXIiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAicmVzb2x2
ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyIiwg
IlhQYXRoTlNSZXNvbHZlciIpOwogICAgIGltcGwubWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBh
cmFtZXRlcigqcmVzb2x2ZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJs
ZVN0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5u
dWxsYWJsZVN0cmluZ01ldGhvZCgpKTsKQEAgLTQ0NjksMjAgKzQ4NzcsMjYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxsKHN0
YXRlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1NwZWNp
YWxNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDx1aW50
MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ5MiwyMSArNDkwNiwyNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIGVudW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKICAgICBU
ZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNl
PFRlc3RPYmo6OkVudW1UeXBlPigqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvcHRpb25hbFZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51
bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJh
dGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7CisgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImVudW1BcmciLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOwogICAgIGVudW1BcmcgPSBvcHRpb25hbFZhbHVlLnZh
bHVlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJnKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDUxNCwxMCArNDkzMSwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFy
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBlbnVtQXJnVmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CkBAIC00NTI3LDcgKzQ5NDcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFlbnVt
QXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpz
dGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkp
OwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcoZW51bUFyZyk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ1MzUsMTAgKzQ5
NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAtNDU1MCw3ICs0OTczLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb3B0aW9u
YWxWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6RW51bVR5cGU+KCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVF
bnVtRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiLCBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsKICAgICAgICAgZW51bUFyZyA9IG9w
dGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICB9CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxF
bnVtQXJnQW5kRGVmYXVsdFZhbHVlKGVudW1BcmcpOwpAQCAtNDU1OSwyMSArNDk4MiwyNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWly
ZXNBbGxBcmdzQW5kVGhyb3dzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHN0ckFyZyA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsICJUZXN0T2JqIik7CisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9i
akFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3Mi
LCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
cyhXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24o
c3RhdGUsIGVjKTsKQEAgLTQ1ODIsMTQgKzUwMDgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBzdHIgPSB2YWx1ZVRvVVNWU3RyaW5nKHN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDU5OSwxNCArNTAy
OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmciKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIHN0ciA9IHZhbHVlVG9VU1ZTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2so
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC00NjE2LDE0ICs1MDQ4LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFVTVlN0
cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gdmFsdWVUb1VTVlN0cmluZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjMzLDE0ICs1MDY4LDE3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInNlcmlhbGl6ZWRWYWx1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
c2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
c2VyaWFsaXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNDY1MCwxNCArNTA4OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAib3B0aW9uc09iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3B0aW9uc09iamVjdCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9vID0gRGljdGlvbmFyeShzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApKTsKICAgICBhdXRvIG9vbyA9IERpY3Rpb25hcnkoc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgxKSk7CiAgICAgaW1wbC5vcHRpb25zT2JqZWN0KFdURk1vdmUob28pLCBXVEZN
b3ZlKG9vbykpOwpAQCAtNDY2NiwxMCArNTEwNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NjgwLDEwICs1MTI0
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aEV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7CkBAIC00
Njk0LDM0ICs1MTQxLDQzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImN1
c3RvbU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tTWV0aG9kIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRob2QoKnN0YXRlKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImN1c3RvbU1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjdXN0b21NZXRob2RXaXRo
QXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3Vz
dG9tTWV0aG9kV2l0aEFyZ3MoKnN0YXRlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHJpdmF0ZU1ldGhvZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
cHJpdmF0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFy
Z3VtZW50ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3MzEsMTQgKzUxODcsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVNZXRo
b2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00
NzQ4LDIwICs1MjA3LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJhZGRFdmVudExpc3RlbmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdHlwZSA9IHN0YXRlLT5hcmd1bWVu
dCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHN0YXRlLT5hcmd1
bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3RhdGUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3Rl
bmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIsICJh
ZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKICAgICBhdXRvIHVzZUNhcHR1cmUg
PSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTQ3NzEsMjAgKzUyMzMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVu
dExpc3RlbmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2Us
IGN1cnJlbnRXb3JsZChzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQotICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIs
ICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDEsICJsaXN0ZW5lciIsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZl
bnRMaXN0ZW5lciIpOwogICAgIGF1dG8gdXNlQ2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50
b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDc5
NCwxMCArNTI1OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlVm9p
ZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CkBAIC00ODA2LDEwICs1Mjc0LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0
ZU9iaihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0
ZU9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRTdGF0
ZU9iaigqc3RhdGUpKTsKQEAgLTQ4MjAsMTAgKzUyOTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNl
cHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwpAQCAtNDgzNCwxMCArNTMwOCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC00ODUxLDEwICs1MzI4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ4NjYsMTAgKzUzNDYsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtNDg4MSwxMCArNTM2NCwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00OTAxLDEwICs1Mzg3LDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKQEAgLTQ5MTgsMTAgKzU0MDcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2siKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6
Y3JlYXRlU2NyaXB0QXJndW1lbnRzKHN0YXRlLCAwKSk7CkBAIC00OTMxLDEwICs1NDIzLDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFy
Z3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aERvY3VtZW50
QXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhEb2N1bWVudEFyZ3VtZW50Iik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ5NDgsMTAgKzU0NDMsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50
QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbGVy
RG9jdW1lbnRBcmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxlckRvY3VtZW50QXJndW1l
bnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8qIGRvY3VtZW50ID0gY2FsbGVyRE9NV2luZG93KHN0YXRlKS5kb2N1bWVudCgpOwpAQCAt
NDk2MywxMCArNTQ2MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhD
YWxsZXJXaW5kb3dBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoQ2FsbGVyV2luZG93QXJndW1lbnQoY2FsbGVyRE9N
V2luZG93KHN0YXRlKSk7CkBAIC00OTc1LDEwICs1NDc2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9wdCA9IHN0YXRlLT5hcmd1bWVudCgw
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtNDk5MCwxMCArNTQ5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0
VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1
ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNvbnZl
cnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNTAwNSwxNCArNTUxMiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFy
ZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25PcHRp
b25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCks
IE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NTAyNSwxNCArNTUzNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3MiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTA0
OCwxMCArNTU2MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQo
KSA/IFN0cmluZygpIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKQEAgLTUwNjMsMTAgKzU1NzksMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFy
Z3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmcoc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MDc4LDEwICs1NTk3LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsQXRvbWljU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3Rh
dGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01MDkzLDEwICs1NjE1LDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0
cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQVNDSUlMaXRlcmFsKCJmb28iKSA6IHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTA4LDEwICs1NjMz
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1
bHRWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5k
RGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
QXRvbWljU3RyaW5nKCJmb28iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3Ry
aW5nKHN0YXRlKTsKQEAgLTUxMjMsMTAgKzU2NTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
SXNOdWxsIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
c3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTM4LDEwICs1
NjY5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRl
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTUzLDEwICs1Njg3LDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01MTY4LDEw
ICs1NzA1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTgzLDEw
ICs1NzIzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3Ry
aW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3Ry
aW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJp
bmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CkBAIC01MTk4LDEwICs1NzQxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gZW1wdHlBdG9tIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
U3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwpAQCAtNTIxMywxMCArNTc1OSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxEb3VibGVJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PGRvdWJsZT4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwpAQCAtNTIyOCwx
MCArNTc3NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PGZsb2F0Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CkBAIC01
MjQzLDEwICs1Nzk1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmciKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbExvbmdMb25nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50NjRfdD4oKSA6IGNvbnZlcnQ8aW50NjRfdD4oKnN0
YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAt
NTI1OCwxMCArNTgxMywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBj
b252ZXJ0PGludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTUyNzMsMTAgKzU4MzEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVk
TG9uZ0xvbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xv
bmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25h
bDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUyODgsMTAgKzU4NDksMTMgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVy
ID0gY29udmVydDx1aW50NjRfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNTMwMywxMCArNTg2NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkg
OiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwpAQCAtNTMxOCwxMCArNTg4NSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlz
RW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gVmVjdG9yPFN0cmlu
Zz4oKSA6IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CkBAIC01MzMzLDEwICs1OTAzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGIgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGJvb2w+KCkgOiBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTUzNDgsMTAgKzU5MjEsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbklzRmFsc2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbklzRmFsc2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4o
c3RhdGUpOwpAQCAtNTM2MywxMCArNTkzOSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBbnkiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbEFueSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAtNTM3
NiwxNyArNTk1NSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogb2JqID0g
bnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CiAgICAgICAgIG9iaiA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsICJUZXN0T2JqIik7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBw
ZXIiLCAiVGVzdE9iaiIpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxh
YmxlV3JhcHBlcihXVEZNb3ZlKG9iaikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC01Mzk0LDE3ICs1OTc2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklz
TnVsbChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBvYmogPSBudWxscHRyOwogICAgIGlmICgh
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgb2JqID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCFvYmopKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iaiIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsICJU
ZXN0T2JqIik7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFw
cGVySXNOdWxsKFdURk1vdmUob2JqKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTU0MTIsMTAgKzU5OTcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IHJlc29sdmVyID0gbnVsbHB0cjsKQEAgLTU0MjQs
NyArNjAxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAg
ICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBpZiAoVU5MSUtF
TFkoIXJlc29sdmVyKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
WFBhdGhOU1Jlc29sdmVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAicmVzb2x2ZXIi
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCAiWFBh
dGhOU1Jlc29sdmVyIik7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhO
U1Jlc29sdmVyKFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNTQzMiwxNiArNjAyMCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFj
a0FyZyIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2Jq
ZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0NDksMTkg
KzYwNDAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZl
cnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghc3Rh
dGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAx
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0FyZyIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRl
KGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
QXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0NjksMTYgKzYwNjMsMTkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAg
IGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxi
YWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTU0ODcsMTYgKzYwODQsMTkg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3Rpb25BcmciKTsKICAgICBhdXRvIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6
Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNTUwNCwxOSArNjEwNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29udmVydDxpbnQzMl90Pigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQo
MSkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKCpzdGF0ZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAi
Y2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0Z1bmN0aW9uQXJnIik7CiAgICAgYXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb246OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTU1MjQsMTYgKzYxMjcsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5k
T3B0aW9uYWxBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5k
T3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CiAgICAgaWYg
KCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAo
IXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiAgICAgICAgIGNhbGxiYWNr
ID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAgICAg
aW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTU1NDIsMTAgKzYxNDgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBp
ZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlm
ICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICAgICAgY2FsbGJhY2sgPSBj
cmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxsYmFjaz4oc3RhdGUsIGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIH0KICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RX
aXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC01NTU0LDEw
ICs2MTYzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
U3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQo
MCkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBhdXRvIGNhbGxiYWNrID0g
Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+KHN0YXRlLCBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2Fs
bGJhY2tBcmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC01NTY2LDEwICs2MTc4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ28KICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25h
bE1ldGhvZDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSk7CkBA
IC01NTgxLDEwICs2MTk2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0
aW9uYWxNZXRob2QyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuY29uZGl0
aW9uYWxNZXRob2QyKCk7CkBAIC01NTk2LDEwICs2MjE0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25h
bE1ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QzKCk7CkBAIC01NjEwLDE5ICs2MjMxLDIyIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAg
aWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1l
dGhvZCIsICJUZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKICAgICB9CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0
ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTYzMywxOSArNjI1NywyMiBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMihFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
VGVzdE9iaiogb2JqQXJnID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
b2JqQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9i
aiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIs
ICJUZXN0T2JqIik7CiAgICAgfQogICAgIGF1dG8gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgx
KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTY1NiwxNCArNjI4
MywxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTY3
MywxNCArNjMwMywxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQz
Ml90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NjkwLDE2ICs2MzIzLDE5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAg
YXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU3MDcsMTkgKzYzNDMsMjIgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIERPTVN0cmluZ0xpc3QqIGxpc3RBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgbGlzdEFyZyA9IEpT
RE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghbGlzdEFyZykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJsaXN0QXJnIiwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICJET01TdHJpbmdMaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJsaXN0QXJnIiwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01TdHJpbmdMaXN0Iik7CiAgICAgfQog
ICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGxpc3RBcmcpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTcyNywxNCArNjM2NiwxNyBAQCBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC01NzQ0LDMxICs2Mzg2LDM3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJv
YmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAw
LCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7
CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpvYmpBcmcpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOShFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01Nzc4LDE0ICs2
NDI2LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxMChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWlu
dDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTU3OTUsMTQgKzY0NDYsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0
ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01ODEyLDEwICs2NDY2LDEzIEBAIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFyZ3M7CkBAIC01ODI0LDcg
KzY0ODEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICBhdXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgaSwgImJsb2JB
cmdzIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJCbG9iIik7CiAgICAgICAg
IGJsb2JBcmdzLnVuY2hlY2tlZEFwcGVuZChpdGVtKTsKICAgICB9CiAgICAgaW1wbC5vdmVybG9h
ZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsKQEAgLTU4MzMsNiArNjQ5MCw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMiwgc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CiAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihzdGF0
ZSk7CkBAIC01ODY5LDE5ICs2NTI5LDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QyKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0
aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU4ODksNyArNjU1Miw3IEBAIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVu
dCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGlmIChVTkxJ
S0VMWSghb2JqQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRo
T3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RP
YmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsICJUZXN0T2Jq
Iik7CiAgICAgfQogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cihXVEZNb3ZlKHN0ckFyZyksIFdURk1vdmUob2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU4OTcsMTkgKzY1NjAsMjIgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IG51bGxwdHI7CiAgICAgaWYgKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBvYmpBcmcgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBpZiAo
VU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9k
V2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iakFyZyIsICJU
ZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVz
dE9iaiIpOwogICAgIH0KICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTU5MjAsNiArNjU4Niw5IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3Vu
dCA9IHN0ZDo6bWluPHNpemVfdD4oMiwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYg
KGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC01OTM3LDE3ICs2NjA2LDIzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgICAgIHJldHVybiBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJh
bWV0ZXIyKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEoc3RhdGUpOwogICAgIH0KLSAg
ICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAg
IHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFRl
c3RPYmo6OmNsYXNzTWV0aG9kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
YXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGlu
dDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTU5NTcsMTYgKzY2MzIsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9i
ajo6Y2xhc3NNZXRob2QyKHN0YXRlKSk7CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC01OTc5LDggKzY2NjAsMTEgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDbwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDEyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU5OTMsNiArNjY3Nyw5IEBAIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ28KICNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQg
PSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChh
cmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNjAwNCwyMCArNjY5MSwyMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAgICAgICAgIHJldHVybiBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKHN0YXRlKTsKICNlbmRpZgog
ICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENs
YW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhc3NNZXRob2RXaXRo
Q2xhbXAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gb2JqQXJnc1Nob3J0ID0gY29udmVydDx1aW50MTZf
dD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIENsYW1wKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTYwMzAsMTQgKzY3MjAsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBvYmpBcmdzU2hvcnQgPSBjb252ZXJ0PHVp
bnQxNl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgRW5mb3JjZVJhbmdlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNTAsMTQgKzY3NDMsMTcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9u
Z1NlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB1bnNp
Z25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNjcs
MTQgKzY3NjMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InN0cmluZ0FycmF5RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0FycmF5RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgYXV0byB2YWx1ZXMgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpA
QCAtNjA4NywxOCArNjc4NiwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImRvbVN0cmlu
Z0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFw
cGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJ2YWx1ZXMiLCAi
VGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCAiRE9NU3RyaW5nTGlzdCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDAsICJ2YWx1ZXMiLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCAiRE9N
U3RyaW5nTGlzdCIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKCp2YWx1ZXMsIGVj
KSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTYxMDcsMTQgKzY4MDks
MTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMy
X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTYxMjcsMTQgKzY4MzIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJnZXRFbGVtZW50QnlJZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZ2V0RWxlbWVudEJ5
SWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBB
dG9taWNTdHJpbmcoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9FeGlzdGlu
Z0F0b21pY1N0cmluZyhzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNjE0NCwxMCArNjg1MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImdldFNWR0RvY3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJnZXRTVkdEb2N1bWVudCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CkBAIC02MTYxLDM2ICs2ODcyLDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY29udmVydDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQxIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBw
ZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAidmFsdWUiLCAiVGVz
dE9iamVjdCIsICJjb252ZXJ0MSIsICJUZXN0Tm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2Jq
ZWN0IiwgImNvbnZlcnQxIiwgIlRlc3ROb2RlIik7CiAgICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0
MihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJjb252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0
Tm9kZSogdmFsdWUgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQo
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2YWx1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAs
ICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7CiAgICAgfQog
ICAgIGltcGwuY29udmVydDIoV1RGTW92ZSh2YWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MTk4LDE0ICs2OTE1LDE3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY29udmVydDMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQzIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNjIxNSwxNCArNjkzNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNvbnZlcnQ0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIHZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRP
ck51bGxDaGVjayhzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTYyMzIsMTAgKzY5NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNy
ZWF0ZShpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKQEAgLTYyNDQsMTAgKzY5NzAsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9p
bnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJs
ZVBvaW50RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1By
b3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rp
b24oKSkpOwpAQCAtNjI1NiwxMCArNjk4NSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJvcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5iYW5hbmEoKTsKQEAgLTYyNjgs
MTQgKzcwMDAsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNTdHJpbmdNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gc3RhdGUt
PmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTYyODgsMTQgKzcwMjMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
dmFyaWFkaWNEb3VibGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBT
aG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTYzMDgsMjQgKzcwNDYsMjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY05v
ZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0g
SlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
IWhlYWQpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJoZWFkIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAw
LCAiaGVhZCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CiAg
ICAgVmVjdG9yPE5vZGUqPiB0YWlsOwogICAgIEFTU0VSVCgxIDw9IHN0YXRlLT5hcmd1bWVudENv
dW50KCkpOwogICAgIHRhaWwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIC0gMSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgY291bnQgPSBzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvKiBpdGVtID0gSlNO
b2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYg
KCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCBpLCAidGFpbCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsIGksICJ0YWlsIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5v
ZGUiKTsKICAgICAgICAgdGFpbC51bmNoZWNrZWRBcHBlbmQoaXRlbSk7CiAgICAgfQogICAgIGlt
cGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTYzMzQsMTQg
KzcwNzUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYW55Iik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhID0gY29udmVy
dDxmbG9hdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRl
OjpZZXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjM2MCwxMCArNzEw
NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlv
bihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9t
aXNlRGVmZXJyZWQpKTsKQEAgLTYzNzgsMTQgKzcxMjUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURl
ZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRB
cmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8
ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6
Tm8pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjQwMSwxMCArNzE1MSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjQyMSwxMCArNzE3NCwxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpT
UHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVz
dFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IHN0YXRlLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8
aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pOwpAQCAtNjQ0MiwxNCArNzE5OCwxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjFQcm9taXNlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNjQ2NSwyMyArNzIyNCwyOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gcmVxdWVzdCA9IEpTRmV0Y2hSZXF1ZXN0Ojp0b1dyYXBwZWQo
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlcXVlc3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJyZXF1ZXN0IiwgIlRl
c3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iLCAiRmV0Y2hSZXF1ZXN0
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgMCwgInJlcXVlc3QiLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRG
dW5jdGlvbiIsICJGZXRjaFJlcXVlc3QiKTsKICAgICBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRl
ZEZ1bmN0aW9uKCpyZXF1ZXN0LCBEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAg
IEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CkBAIC02NDkxLDcgKzcyNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEoc3RhdGUpOwogICAgICAgICByZXR1cm4ganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEoc3RhdGUp
OwogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvblBy
b21pc2UoRXhlY1N0YXRlKiwgSlNQcm9taXNlRGVmZXJyZWQqKTsKQEAgLTY1MDIsNiArNzI2Nyw5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KIAogc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihE
ZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNjUxNCw2ICs3MjgyLDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVz
dE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRGVmZXJyZWRXcmFw
cGVyKHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihz
dGF0ZSwgZWMpOwpAQCAtNjUyMiwxMyArNzI5MywxNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwogI2VuZGlm
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVh
Y3Rpb25TdGFjayIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJl
YWN0aW9uU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGltcGwubWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2so
KTsKQEAgLTY1MzgsMTQgKzczMTIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogI2lmIEVOQUJMRShDT05ESVRJT04xKQogc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQxKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxPdmVybG9hZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NTU4LDE0ICs3MzM1
LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICNpZiBFTkFC
TEUoQ09ORElUSU9OMikKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRp
dGlvbmFsT3ZlcmxvYWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBh
ID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NTc4LDYgKzcz
NTgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAjaWYgRU5B
QkxFKENPTkRJVElPTjEpIHx8IEVOQUJMRShDT05ESVRJT04yKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwg
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAg
ICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CkBAIC02NTg5LDIwICs3MzcyLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxPdmVybG9hZDEoc3RhdGUpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBhcmdz
Q291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIGFyZ3ND
b3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKIH0KICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDEoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY2MTMsMTQgKzcz
OTksMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVO
QUJMRShDT05ESVRJT04pCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDIoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNjYzMiw2ICs3NDIxLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBz
aXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5n
dWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKQEAgLTY2NDEsMTkgKzc0
MzMsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogI2VuZGlm
CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlv
bmFsT3ZlcmxvYWQxKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0
YWNoU2hhZG93Um9vdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dGFj
aFNoYWRvd1Jvb3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dGFjaFNoYWRvd1Jvb3QiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbml0ID0gY29udmVydERpY3Rpb25hcnk8VGVz
dE9iajo6RGljdGlvbmFyeT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjY2MywxMCArNzQ1OCwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInRvU3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0b1N0cmluZyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0
dHJpYnV0ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNTMgKzY3LDY1IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RP
dmVybG9hZGUKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIo
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWFycmF5QnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiYXJyYXlCdWZmZXIiLCAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiYXJyYXlCdWZmZXIiLCAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsKICAg
ICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmFycmF5
QnVmZmVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAog
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7
CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlm
IChVTkxJS0VMWSghYXJyYXlCdWZmZXJWaWV3KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyVmlldyIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJhcnJheUJ1
ZmZlclZpZXciLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlC
dWZmZXJWaWV3Iik7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6Y3JlYXRlKCphcnJheUJ1ZmZlclZpZXcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1v
dmUob2JqZWN0KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Kj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGJsb2IgPSBKU0Jsb2I6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghYmxvYikpCi0gICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgImJsb2IiLCAiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQmxvYiIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJibG9iIiwg
IlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkJsb2IiKTsKICAgICBhdXRv
IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmJsb2IpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCiBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIHN0cmluZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMjMsNiArMTM1LDkgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhp
cyk7CiAgICAgVmVjdG9yPGludDMyX3Q+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50
MzJfdD4oKnN0YXRlLCAwKTsKQEAgLTEzNCw2ICsxNDksOSBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90Pigx
LCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRl
KTsKQEAgLTE1MCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczUoc3RhdGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczQoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMDgsMTggKzIyNiwyMiBAQCB2b2lkIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3RyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw5IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPdmVybG9hZGUKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNT
RVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8gc2VxdWVuY2VPZlN0cmluZ3MgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFZlY3RvcjxTdHJpbmc+KCkgOiB0b05hdGl2ZUFycmF5
PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNzcsMTAg
KzgwLDEzIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlMKIAogc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
cio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJpbmcgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtOTAsNiArOTYsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UxKHN0YXRlKTsKQEAgLTEwMiw3ICsxMTEsNyBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoc3RhdGUpOwogICAgICAgICByZXR1cm4gY29u
c3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoc3RhdGUpOwog
ICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCkBAIC0xNjAsMTggKzE2OSwyMiBAQCB2b2lkIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTggKzE1OCwyMiBA
QCBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgpAQCAtMTk0LDE0ICsxOTgsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zOjpnZXRDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVt
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAidmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
dmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwudmFsdWUoKS0+ZGVzZXJp
YWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwpA
QCAtMTQ5LDEyICsxNTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
cmVhZG9ubHlWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJy
ZWFkb25seVZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwu
cmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIDApIDoganNOdWxsKCk7CkBAIC0xNjQsMTIgKzE2OCwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgaWYgKEpTVmFsdWUg
Y2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLmdldCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTE4MiwxMiArMTg4LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWwKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7CkBAIC0xOTcsMTIgKzIw
NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRv
bmx5VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRS
ZWFkb25seVZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNh
Y2hlZFJlYWRvbmx5VmFsdWUiKTsKICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUg
PSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwpAQCAtMjE1LDE4ICsyMjUsMjIgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmds
b2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMjM1
LDExICsyNDksMTMgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcgog
CiBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwg
MCk7CkBAIC0yNTIsMTEgKzI2OCwxMyBAQCBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyCiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDE1ICsxMjQs
MTggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZQogCiB0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBoZWxsbyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJn
dW1lbnQoMSkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcigqc3RhdGUsIDEsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdFR5cGVkZWZzIiwg
bnVsbHB0cik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdFR5cGVkZWZzIiwg
bnVsbHB0cik7CiAgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRl
KGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKFdURk1v
dmUoaGVsbG8pLCAqdGVzdENhbGxiYWNrKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3Zl
KG9iamVjdCkpKTsKQEAgLTIxMCwxMiArMjEzLDE0IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRl
c3Ryb3koSlNDOjpKU0NlbGwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25l
ZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2ln
bmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9u
Z0xvbmdBdHRyKCkpOwpAQCAtMjI1LDEyICsyMzAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
VHlwZWRlZnNVbnNpZ25lZExvbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXBsLmltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CkBAIC0yNDAsMTIgKzI0NywxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIlRlc3RTdWJPYmoiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBl
ZGVmcyIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI1MywxMiArMjYyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0y
NzAsMTIgKzI4MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbigpKTsKQEAgLTI4NSwxMiArMjk4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzQXR0cldpdGhTZXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5
cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CkBAIC0zMDIsMTIgKzMxNywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0
cmluZ0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVm
cyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7
CkBAIC0zMTcsMTggKzMzNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMzNywxMSArMzU4LDEzIEBA
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3QKIAogYm9vbCBzZXRKU1Rl
c3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRl
ZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDx1aW50
NjRfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNTQsMTEgKzM3Nywx
MyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0CiAKIGJvb2wgc2V0
SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNj
cmlwdFZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZh
bHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRl
LCB2YWx1ZSwgMCwgMCk7CkBAIC0zNzEsMTEgKzM5NiwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVk
ZWZzSW1tdXRhYmxlU2VyaWFsaXplCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVm
cyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODgsMTEgKzQxNSwxMyBAQCBib29sIHNl
dEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRl
ZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZz
IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00MDcs
MTEgKzQzNiwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlCiAK
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAg
LTQyNCwxMSArNDU1LDEzIEBAIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdl
dHQKIAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ0OCwxMCArNDgxLDEzIEBA
IEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKFYKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgImZ1bmMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byB4ID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkg
PyBWZWN0b3I8aW50MzJfdD4oKSA6IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNDYzLDE0ICs0OTksMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic2V0U2hhZG93Iik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gd2lkdGggPSBjb252ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
U2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC00OTIsMTQgKzUzMSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlw
ZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IHRvUmVmUHRyTmF0aXZlQXJyYXk8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBKU1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTA5
LDE0ICs1NTEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgIm51bGxhYmxlU2VxdWVuY2VBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFi
bGVTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gc2VxdWVuY2VBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTI2LDE0ICs1
NzEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25G
dW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
ImZ1bmNXaXRoQ2xhbXAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJnMSA9IGNvbnZlcnQ8dWludDY0
X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBDbGFtcCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC01NDYsMTAgKzU5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5j
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3Bl
cnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24o
KSkpOwpAQCAtNTU4LDE0ICs2MDksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8gdmFsdWVz
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTU3OCwxNCArNjMyLDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
U2VxdWVuY2VGdW5jdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRl
ZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2Vx
dWVuY2VGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCkBAIC01OTgsMTQgKzY1NSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWly
ZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImNh
bGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxX
aXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IHRvUmVmUHRyTmF0aXZlQXJyYXk8VGVz
dEV2ZW50VGFyZ2V0LCBKU1Rlc3RFdmVudFRhcmdldD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjE1LDEwICs2NzUsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwg
Im1ldGhvZFdpdGhFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aEV4Y2VwdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlw
ZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkocmV2aXNpb24g
MjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0
cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEyICsxMzQsMTQgQEAgdm9pZCBKU2F0
dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogYwogCiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJp
YnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmli
dXRlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRl
IiwgInJlYWRvbmx5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwpAQCAtMTQ5LDE4ICsxNTEs
MjIgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShFeGVjUwogCiBFbmNvZGVk
SlNWYWx1ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTYXR0cmlidXRlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmli
dXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU2F0
dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U2F0dHJpYnV0ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0
ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTcmVhZG9ubHkuY3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
NywxOCArMTE3LDIyIEBAIHZvaWQgSlNyZWFkb25seTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2UK
IAogRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNyZWFkb25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBz
ZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFk
b25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAy
MDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQgUnVudGltZUFycmF5Ojpk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgp
KSk7CiB9CiAKQEAgLTExMyw5ICsxMTYsMTIgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blBy
b3BlcnR5U2xvdEJ5SQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2Ug
ZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKQEAgLTEyNyw5ICsxMzMsMTIgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRoaXNPYmplY3QtPmdldExl
bmd0aCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTYsOSArNTYsMTIgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihWTSYgdgog
CiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRp
bWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV9tZXRob2QtPm51bVBhcmFtZXRlcnMoKSkpOwog
fQogCkBAIC03NSw2ICs3OCw5IEBAIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlT
bG90KEoKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVN
ZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU1ldGhv
ZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGV4ZWMtPmNhbGxlZSgpKTsK
IAogICAgIGlmICghbWV0aG9kLT5tZXRob2QoKSkKQEAgLTg3LDEzICs5MywxMyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAgIFJ1bnRpbWVPYmplY3Qq
IHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oYXNPYmplY3QodGhp
c1ZhbHVlKSk7CiAgICAgICAgIGluc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxJ
bnN0YW5jZSgpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSAKLSAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
YykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCiAgICAg
ICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4o
YXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2Up
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAgICAgQVNTRVJU
KGluc3RhbmNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDExICs2
NCwxNCBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQogCiBFbmNvZGVkSlNWYWx1
ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8UnVudGltZU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICghaW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
YykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKQEAgLTgy
LDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iCiAK
IEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
eyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8
UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8
SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICghaW5z
dGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7
CiAKQEAgLTEwMSwxMSArMTA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZp
ZWxkR2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9
IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAgICAg
aWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAKICAgICBpbnN0YW5jZS0+
YmVnaW4oKTsKIApAQCAtMTE4LDkgKzEyNywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2Jq
ZWN0OjptZXRob2RHZXR0CiAKIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKLSAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE2Myw5ICsxNzUsMTIg
QEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSgogCiBib29sIFJ1bnRp
bWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50
aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0g
ICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC0xOTIsOSArMjA3LDEyIEBAIGJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJv
cGVydHkoSlNDZWwKIAogSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3Qg
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBl
IGhpbnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBjb25zdCBSdW50aW1lT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhp
c09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0
LT5tX2luc3RhbmNlOwogCkBAIC0yNTgsOSArMjc2LDEyIEBAIENvbnN0cnVjdFR5cGUgUnVudGlt
ZU9iamVjdDo6Z2V0Q29uc3RydWMKIAogdm9pZCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVj
dCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3MSw5ICsyOTIsOSBA
QCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAgICAgaW5zdGFuY2Ut
PmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVPYmplY3Q6OnRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0g
ICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWct
aW4uIikpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVk
IHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGlt
ZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAg
ICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3Rh
bmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYs
IDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZvaWQgQ0luc3RhbmNlOjpzZXRHbG9i
YWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25U
b0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZ2xv
YmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsK
ICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5n
KCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4
ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAgICAgZ2xvYmFsRXhjZXB0
aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsxNTcsMTEgQEAgSlNWYWx1ZSBDSW5z
dGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCktPmluaGVyaXRz
KENSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9i
amVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXR0
ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpOwog
CiAgICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8Q01ldGhvZCo+KHJ1bnRpbWVNZXRo
b2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKQEAgLTE4NCw3ICsxOTAsNyBAQCBK
U1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0CiAgICAgfQogCiAgICAgaWYg
KCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVj
dC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkp
OwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFz
ZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMTk3LDYgKzIwMyw5IEBAIEpTVmFsdWUgQ0lu
c3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXQKIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9r
ZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KCFfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZURl
ZmF1bHRNZXRob2QoRQogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
RXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3Ig
Y2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJmNBcmdzW2ldKTsK
QEAgLTIzNiw2ICsyNDUsOSBAQCBib29sIENJbnN0YW5jZTo6c3VwcG9ydHNDb25zdHJ1Y3QoKSBj
b25zCiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFfb2JqZWN0
LT5fY2xhc3MtPmNvbnN0cnVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAg
LTI1OCw3ICsyNzAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KEV4ZWNT
CiAgICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5n
IG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhv
ZCBvbiBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAg
ICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMzExLDYgKzMy
Myw5IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBD
SW5zdGFuY2U6OnRvSlNQcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBuYW1l
LCBKU1ZhbHVlJiByZXN1bHRWYWx1ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE5QSWRl
bnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihuYW1lKTsKICAgICBpZiAo
IV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50KSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzI4LDcgKzM0Myw3IEBAIGJvb2wgQ0luc3RhbmNlOjp0b0pTUHJpbWl0
aXZlKEV4ZWNTdGF0ZSoKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9y
IGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICByZXN1bHRWYWx1ZSA9IGNv
bnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50LCBtX3Jvb3RPYmplY3Qu
Z2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmcmVzdWx0VmFyaWFudCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlz
aW9uIDIwNTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzksNiArNzksOSBAQCB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKE5T
CiAKIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFzX2V4Y2VwdGlvbikgewog
ICAgICAgICBBU1NFUlQoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm47
CkBAIC04Niw3ICs4OSw3IEBAIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9u
VG8KIAogICAgIGlmICghc19leGNlcHRpb25FbnZpcm9ubWVudCB8fCBzX2V4Y2VwdGlvbkVudmly
b25tZW50ID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkgewogICAgICAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzX2V4Y2VwdGlvbik7
CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIHNfZXhjZXB0aW9uKTsKICAgICB9CiAK
ICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBAIC0yMDUsOCArMjA4LDExIEBAIEpTQzo6SlNW
YWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGUKIAogSlNDOjpKU1ZhbHVlIE9iamNJbnN0
YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGlt
ZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tl
IG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGlu
dm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOwogCiAgICAgT2Jq
Y01ldGhvZCAqbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2JqY01ldGhvZCo+KHJ1bnRpbWVNZXRob2Qt
Pm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDIwNTE0OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtOTQsNiArOTQsOSBAQCBPYmpjRmllbGQ6Ok9iamNGaWVsZChDRlN0
cmluZ1JlZiBuYW1lKQogCiBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgCiAgICAgaWQg
dGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNl
KSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2
YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9u
KiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAg
ICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAg
IHRocm93RXJyb3IoZXhlYywgc2NvcGUsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKICAgICB9
CiAKICAgICAvLyBXb3JrIGFyb3VuZCBwcm9ibGVtIGluIHNvbWUgdmVyc2lvbnMgb2YgR0NDIHdo
ZXJlIHJlc3VsdCBnZXRzIG1hcmtlZCB2b2xhdGlsZSBhbmQKQEAgLTEyNyw2ICsxMzAsOSBAQCBz
dGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTCiAKIGJvb2wgT2JqY0ZpZWxk
OjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5z
dGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFu
Y2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNPYmpl
Y3QoZXhlYywgYVZhbHVlKTsKIApAQCAtMTQxLDcgKzE0Nyw3IEBAIGJvb2wgT2JqY0ZpZWxkOjpz
ZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1MKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0
Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKGV4ZWMpOwotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFtsb2NhbEV4Y2VwdGlvbiByZWFz
b25dKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzY29wZSwgW2xvY2FsRXhjZXB0aW9uIHJl
YXNvbl0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpAQCAtMTU2LDEzICsxNjIs
MTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRyIGEsIAogCiBib29sIE9i
amNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwg
SlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghW19h
cnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdElu
ZGV4OildKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJy
YXkgaXMgbm90IG11dGFibGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRz
IGFycmF5IHNpemUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAt
MTc0LDIxICsxODMsMjQgQEAgYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBl
eAogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFsdWUub2JqZWN0VmFsdWUg
YXRJbmRleDppbmRleF07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhj
ZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9
CiAKIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aW50IGluZGV4KSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoaW5kZXggPiBb
X2FycmF5LmdldCgpIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBz
aXplLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgIEB0
cnkgewogICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5kZXhd
OwogICAgICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVU
b1ZhbHVlIChleGVjLCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsK
ICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24pIHsKLSAgICAgICAgcmV0
dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9i
amVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7
CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAtMjMyLDkgKzI0NCwxMiBA
QCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCosCiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKE9iakNSdW50aW1l
T2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNDIsNyArMjU3LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIE9iamNJbnN0YW5jZSogb2Jq
Y0luc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxPYmpDSW5zdGFuY2UoKTsKIAog
ICAgIGlmICghb2JqY0luc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1
bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihleGVjLCBzY29wZSkpOwogICAgIAogICAgIG9iamNJbnN0YW5jZS0+YmVnaW4oKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgJKHJldmlzaW9uIDIw
NTE0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEpTVmFsdWUgY29udmVydE5TU3RyaW5nVG9TdHJp
bmcoRXhlY1N0YXQKIEpTVmFsdWUgY29udmVydE9iamNWYWx1ZVRvVmFsdWUoRXhlY1N0YXRlKiwg
dm9pZCogYnVmZmVyLCBPYmpjVmFsdWVUeXBlLCBSb290T2JqZWN0Kik7CiBPYmpjVmFsdWVUeXBl
IG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNvbnN0IGNoYXIgKnR5cGUpOwogCi1KU09iamVjdCAqdGhy
b3dFcnJvcihFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOworSlNPYmplY3QgKnRocm93
RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIE5TU3RyaW5nICptZXNzYWdlKTsKIAogfSAv
LyBuYW1lc3BhY2UgQmluZGluZ3MKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMxMCwxMCArMzEwLDEwIEBAIE9iamNWYWx1ZVR5cGUgb2JqY1ZhbHVl
VHlwZUZvclR5cGUoY29uc3QKICAgICByZXR1cm4gb2JqY1ZhbHVlVHlwZTsKIH0KIAotSlNPYmpl
Y3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmluZyAqbWVzc2FnZSkKK0pTT2Jq
ZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIE5TU3Ry
aW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAgICBKU09iamVjdCAqZXJy
b3IgPSBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIEpTQzo6Y3JlYXRlRXJyb3IoZXhl
YywgU3RyaW5nKG1lc3NhZ2UpKSk7CisgICAgSlNPYmplY3QgKmVycm9yID0gdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRv
IGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpT
TlBPYmplY3Q6OmNhbGxNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjYWxs
T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2FsbENvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHJvcGVydHlHZXR0
ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVj
U3RhdGUpOgorCiAyMDE2LTA4LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RvcCB1c2luZyBXZWJQcm9jZXNzUHJveHk6OmZyb21Db25uZWN0aW9u
IGluIFdlYlBhZ2VQcm94eQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTQ5
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRo
b2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSlNOUE1ldGhvZDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05Q
TWV0aG9kKiBqc05QTWV0aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7
CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpAQCAtNzgsNyAr
ODEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhvZChleGVjLCBqc05Q
TWV0aG9kLT5ucElkZW50aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IH0KIAogQ2FsbFR5cGUgSlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEm
IGNhbGxEYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsOSArMTA3LDEyIEBAIE5QT2JqZWN0KiBKU05QT2JqZWN0
OjpsZWFrTlBPYmplY3QoKQogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxNZXRob2QoRXhlY1N0
YXRlKiBleGVjLCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9i
amVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
Ly8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFtZXRob2ROYW1lKQpA
QCAtMTQyLDcgKzE0NSw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1ldGhvZChFeGVjU3Rh
dGUKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNbaV0pOwogCiAgICAg
aWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywg
IkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJv
cGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVz
dWx0KTsKQEAgLTE1MSw5ICsxNTQsMTIgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsTWV0aG9k
KEV4ZWNTdGF0ZQogCiBKU0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9iamVjdChKU0M6OkV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVD
VF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJu
IHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQg
PSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgVmVjdG9yPE5QVmFyaWFudCwgOD4gYXJndW1l
bnRzKGFyZ3VtZW50Q291bnQpOwpAQCAtMTgyLDcgKzE4OCw3IEBAIEpTQzo6SlNWYWx1ZSBKU05Q
T2JqZWN0OjpjYWxsT2JqZWN0KEpTQzoKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZh
cmd1bWVudHNbaV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBt
ZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIp
KTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBW
YXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVh
c2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE5MSw5ICsxOTcsMTIgQEAgSlNDOjpKU1Zh
bHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNh
bGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NF
UlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAoIW1fbnBPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAg
cmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIFZlY3RvcjxOUFZh
cmlhbnQsIDg+IGFyZ3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTIxOCw3ICsyMjcsNyBAQCBK
U1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjCiAgICAgfQogCiAgICAgaWYg
KCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOwor
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVy
cm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKICAgICAKICAgICBKU1ZhbHVlIHZh
bHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIHJlc3VsdCk7CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOwpA
QCAtMjY1LDEwICsyNzQsMTMgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1
Y3REYQogCiBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3Qg
PSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25w
T2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCkBAIC0yOTksMTAgKzMxMSwxMyBAQCBib29sIEpTTlBPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU09iCiAKIGJvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVj
dCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlz
T2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM1Myw2ICszNjgsOSBAQCBib29sIEpTTlBP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKCiAKIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7
CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KQEAgLTM2MCw3ICszNzgs
NyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghbV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zODksMTAgKzQw
NywxMyBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0CiAKIHZvaWQg
SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRp
b25Nb2RlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7
Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQzNywxMSArNDU4LDE0IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU08KIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0
PEpTTlBPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqLCBpbmZvKCkpOwogICAgIAogICAgIGlmICghdGhpc09i
ai0+bV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICghdGhpc09iai0+
bV9ucE9iamVjdC0+X2NsYXNzLT5nZXRQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3NywyMyArNTAxLDI2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVj
dDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9i
amVjdCogdGhpc09iaiA9IGpzQ2FzdDxKU05QT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygpKTsK
ICAgICAKICAgICBpZiAoIXRoaXNPYmotPm1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7
CiAKICAgICBOUElkZW50aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlkZW50
aWZpZXIocHJvcGVydHlOYW1lKTsKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJv
bC4KICAgICBpZiAoIW5wSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmds
b2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElkZW50aWZpZXIpKTsK
IH0KIAotSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNT
dGF0ZSogZXhlYykKK0pTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJU
cnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKKyAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9u
IDIwNTE0OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9K
U05QT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlRocm93U2NvcGUmKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmplY3RN
YXA7CiAgICAgTlBPYmplY3QqIG1fbnBPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1l
T2JqZWN0TWFwLmNwcAkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3NCwxMiArMjc0LDE1IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpzZXRHbG9iYWxF
eGNlcHQKICAgICAKIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9u
VG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGds
b2JhbEV4Y2VwdGlvblN0cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7
Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpKSk7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpKSk7CiAgICAgfQogICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5n
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxNDkpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0w
OC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNl
IHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRl
IGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Om1vdmVHbG9iYWxF
eGNlcHRpb25Ub0V4ZWNTdGF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0
YW5jZS5tbToKKyAgICAgICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToK
KwogMjAxNi0wOC0yOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgZG9jdW1lbnQudGl0bGUgc2V0dGVyIGNhbid0IHRocm93LgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQkocmV2aXNpb24gMjA1MTQ5KQorKysgU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9pZCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgewotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihl
eGVjLCBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAgIGdsb2JhbEV4Y2Vw
dGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIwNTE0OSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1ZhbHVlIFByb3h5SW5z
dGFuY2U6OmdldE1ldGhvZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9k
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5o
ZXJpdHMoUHJveHlSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1p
biBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBs
dWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAogICAgIFByb3h5TWV0aG9kKiBt
ZXRob2QgPSBzdGF0aWNfY2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgp
KTsKICAgICBBU1NFUlQobWV0aG9kKTsK
</data>
<flag name="review"
          id="310802"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="310811"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>287359</attachid>
            <date>2016-08-29 17:46:32 -0700</date>
            <delta_ts>2016-08-30 00:10:08 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews117 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1358544</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
aWRlby1jbGlwLWNoYW5nZS1zcmMtc3RkZXJyLnR4dFVUCQADFcvEVxXLxFd1eAsAAQT1AQAABBQA
AADt07GOwjAQBNCer3AJBXHskBCQKCACiQIdEiVC0eKswGDiaGOQ/PfH3RVHRUcBcjdbzbxityIb
p8k4zaJEyB3TDi/Q+lqVhW38mmyD5Dxr9aEGY7BiSDTpCznMU9Y9L/RhBi1+7U+o3JzIUrmsb2B0
BQ6rHuvqxwsc4xt7JYUFqCPywhKusNLwn/oizWQkBzG/VzvrfIMtXxvwSPxe9pfK6c/ASDGja2Qy
zvPONiiCIiieKLI4flRs0L0FQo6SgAiIFyFE8gmfLQZBERRB8av4BlBLAwQKAAAAAADHhh1JAAAA
AAAAAAAAAAAADQAcAGRpc3BsYXlsaXN0cy9VVAkAAyXLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAMeGHUmjV/3oUAAAAI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10
cmFuc2Zvcm1zLXN0ZGVyci50eHRVVAkAAyXLxFcly8RXdXgLAAEE9QEAAAQUAAAAcy9KLMjITC52
zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAoSk3OL0rJzEsHyoC1
FetxuaMbVIxmEDGGAABQSwMEFAACAAgAx4YdSfKWldVHAAAASQAAACkAHABkaXNwbGF5bGlzdHMv
bGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUCQADJcvEVyXLxFd1eAsAAQT1AQAABBQAAABz
L0osyMhMLnbOzytJrSixskpPLXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4v
SsnMSwfKgLUV63EBAFBLAwQUAAIACAB1iB1JmIPmsm9FAAAHoQEAIgAcAER1bXBSZW5kZXJUcmVl
LTEyMzc5LWNyYXNoLWxvZy50eHRVVAkAA13NxFddzcRXdXgLAAEE9QEAAAQUAAAA7J1rc9u4koY/
L38FP2zlyJlxQoB3ldcpW5YnnvhWlpxMnakUCyRBm2uK1JCUL+fXbwOgJIqWbCNxcmZPQTWVkXnp
fhsA0f2QoH1eFhGtqr6++jmYTaYXNI9pOS4p1f9E2HT9r9o5qa+7h8Ln/ecim01o9f7z2fHlyfD9
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
zXHnx8gtP8oFREay8KchFEHfIDI/BPFu5vNDVH2LKqF/H1XSfxRVMn4gVcKvRpXI61El83WpEtJa
rtRypZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKW1wJtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVK
LVdquVLLlba4kt5ypZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKLVfa4kpGy5VartRypZYrtVyp
5UotV2q5UsuVWq7UcqWWK7VcaYsr4ZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKLVdquVKTK2mq
n9H8HvrwL4dTf7PNiiWp/MsbmNoxcdeLioOeoqoZfeypK3dqnkcDj7EQGrxVA1dLbMukhgULMvP3
3RFsNMAL8omncSVBVGtByEJMoxqXle9r8OZN7aZDxR07G0CJmtkN9QICb3DWt/imaXmiBa4jbfsO
WzSgXXdwS5C+QwniDcaGJaHNGAjjDZg3ANawfgtvIDsadK4kmtdlQWDzaGhB/szCuKEdabrGvxUu
03eNCchSTtO7CHKAOry86Ym5ZCvjLEszdZgGrLyyvtNUrvl/x3++mHksKxsRVhRlECU0e1JPZvSO
5XzaNF6a2q1Mqb/Ud6PFbH7FkgASdcZg4v38888H6pE+wkNi4GGX9AdG19CNSdceItIdjO2hMZ7o
iGj9Y/X9bRovZix/f3txenM2fv/2/aa0JQrtEWkwCbgTAUXjYhha6jtYR9VXiV6zvJjeR7NqcXU0
QDPRhs5kYgwBiDnoGn1sde0+GXaH1rA/GgwIRsjehWaf1E1clr6Ny7KDXbgW83maFXVoxkTT+mg4
6poIa11jAD8G2tjqEqs/Mo2+oaPx5AXQ6oI30AHl3UJnh47F0e0PwR1TM97BTfDrEB3idwB0iMZ4
ONH1rk3G4EOdjOHdaNzVDTLQzP5wgBxjF9BNyYch/9pt/t0F728ZhAbINe/7jT51/JT59hZ+j+mI
z72t7xPfhRuNdcuydNwdOho4eDLB3T4mTtchDtbNkWUQW9+Fu5S4G2/ZVscZ0GBrFiBw/w6c+xxs
4f5kPLGHXXs8sbqGjayuMyS4i/rmwMaWifWRvQfofs9WjTWoyLSItwXV9IjTmBIbX9G+07Ejqz/W
x+DT0ahrEIK6A2zh7mSk6X3TGUyM8TOOLeU+596yh1Ii5InAJDZFa+Sri4Hl6OBk/sWAascgxqF+
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
AAAAAAwAHABmYXN0L2NhbnZhcy9VVAkAA3/LxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
APCGHUkszWv+rgAAAN4DAABMABwAZmFzdC9jYW52YXMvY2FudmFzLWNzcy1zaXplLWFmdGVyLWhl
aWdodC1jaGFuZ2Utd2l0aC1kaXNwbGF5LWZsZXgtc3RkZXJyLnR4dFVUCQADdMvEV3TLxFd1eAsA
AQT1AQAABBQAAADtj8EKgkAURfd9xSxroaOTmggtSgpaREJLCXmND5uaHHlOwfx9RouCfsHduatz
TxkmWRxnc+FHoTgxZfEOvWtllZvOFWQ6JOtYr5oWtMaaIdHSC8Uijdn0tlXNGno8nK8o7YbIULVr
n6BVDRbrGZuq3wWW8aN5kMQc5AV5bgj3WCv4khfGifBFFPBBbY11Hfa80OCQ+CD7ULV6H/Ql06pF
JoI0nZRjxVgxVvxVvABQSwMEFAACAAgA9oYdSaNZgMaGAAAAGgEAACYAHABmYXN0L2NhbnZhcy9j
YW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUCQADf8vEV3/LxFd1eAsAAQT1AQAABBQAAADNzj0K
wkAUReHeVdwNGDJqFAcRQiI2VmonFqO56MDkjbxM/Fu9WYbl+apT9jdMljBzWxR2NgVfnTGLLMSr
C6j79rGnNNSjkidjTJ6fsdqoRl1bVNsqSuI7HZh2Xli77m7h5emCb9AMBafqPhYuIdB1CVEIBraU
hLYf4EJIlPGXGrNR+U8zP1BLAwQKAAAAAABDhx1JAAAAAAAAAAAAAAAACQAcAGZhc3QvY3NzL1VU
CQADDczEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAQ4cdSULQGHexAAAAzgEAADYAHABm
YXN0L2Nzcy9wZXJzcGVjdGl2ZS1vcmlnaW4taW5pdGlhbC1pbmhlcml0LXN0ZGVyci50eHRVVAkA
Aw3MxFcNzMRXdXgLAAEE9QEAAAQUAAAAzY8xC8IwFIR3f8XbtIMGwaF0bTuIg9KgnWv6LIEkLySv
Yv69FUVxd3C84+7jrm6afVNAi+edZugJIzhiSMigrTdo0TEMyCVZPzL2kpNBuFCAuccQPSrWV1xS
0IN2y9t8NRMnMqPFKKqOO1G3UjzhQtIYFD5USQGFilGUUn6BK1SmCx1rcivl/WKd55sMCriS7uFV
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
G6/NoAUtaPF+h4MN3ODGjgxa0IIW9wgcbOAG99+53wFQSwMECgAAAAAALYcdSQAAAAAAAAAAAAAA
AAwAHABmYXN0L2ZyYW1lcy9VVAkAA+bLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAC2H
HUko2Xk2sAAAAO4AAAAvABwAZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLXN0
ZGVyci50eHRVVAkAA+bLxFfmy8RXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luU
XSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOx
B0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs
4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfmetI699LSHebx7A1QSwMECgAAAAAA+YYdSQAA
AAAAAAAAAAAAAA0AHABmYXN0L2hpc3RvcnkvVVQJAAOFy8RXX83EV3V4CwABBPUBAAAEFAAAAFBL
AwQUAAIACAD5hh1JKNl5NrAAAADuAAAAQAAcAGZhc3QvaGlzdG9yeS9wYWdlLWNhY2hlLXdlYmRh
dGFiYXNlLW5vLXRyYW5zYWN0aW9uLWRiLXN0ZGVyci50eHRVVAkAA4XLxFeFy8RXdXgLAAEE9QEA
AAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO3ebxvgeTZFmaabiR
sQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLmqkR7br3KOUiFUzqw
oLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht84omvPjXyfQazMfm
etI699LSHebx7A1QSwMECgAAAAAAAocdSQAAAAAAAAAAAAAAAAwAHABmYXN0L2ltYWdlcy9VVAkA
A5PLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAAKHHUkhj704MgAAADMAAAAsABwAZmFz
dC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAkAA5PLxFeTy8RXdXgL
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
/c0EYXDmfpIqYW3duOFIhfMdfH4AG+zqIllQftP4S+iQhec36hyFD8dP4t6L+Zzbu90XeQqkV0z8
oZvo0H8AZJ5E8XbyeZKmHkIl+nyoxJ4KlfgTopLYGyrp+0MlY7+oZCAqISohKiEqISohKiEqISoh
KiEqISohKiEqlVHJRFRCVEJUQlRCVEJUQlRCVEJUQlRCVEJUQlQqo5KFqISohKiEqISohKiEqISo
hKiEqISohKiEqFRGJRtRCVEJUQlRCVEJUQlRCVEJUQlRCVEJUQlRqYxKVENWQlZCVkJWQlZCVkJW
QlZCVkJWQlZCVkJW2mCl7Fdj+r/i100jKyErISshKyErISvt9eum7SDwhjL/UmiItM3mti+cXh3N
X+i6qZtnObZW9Vuo7cDzTLG1wTwR6M8zt1W+w43KvzLEuOXZeQ/6YDSVc0+Wv7+TG89zUNgU/Gs3
nu8QX0YevfLvBIEU66uR53FOLMDmkVc/Fl+Uy2wXfHmcri9AyuMMIoogijyIIgxQpH95iiiCKIIo
giiCKIIogiiCKIIogiiCKIIo8pwowhFFEEUQRRBFEEUQRRBFEEUQRRBFEEUQRZ4fRQSiCKIIogii
CKIIogiiCKIIogiiCKIIosjzo4iOKIIogiiCKIIogiiCKIIogiiCKIIogijy/ChiIIogiiCKIIog
iiCKIIogiiCKIIogiiCKPD+KmIgiiCKIIogiiCKIIogiiCKIIogiiCKIIs+PIhaiCKIIogiiCKII
ogiiCKIIogiiCKIIosjzo4j6vfpVD/rQb+4sCKPD1r/zH4WqDiNCBJKMXQCRcXLlpLD411Bkd0Pc
EMOlIbCh6yWOUKPcj2aTIAtlmza4bwylJ4CMOv2L2eQ0iqYDGd+EvjwDq+dR1hmMslJ6vYtZbnpF
s/An61eTlhKDHWxJL7BI0dJgKv1wGPpKnG2UQm0+OinkEV50d9hS/7rM/1E0a1hcD5hLfpUTGYf+
3HY+5s1mNuMLC8kWpfC6eyMQ9Eindb5ueflCbl6zs2C6n7Vkkb2tJZvsdy0xbWMtjWUQuoeJfy2D
2UgGw3Akw2jffL8+285Uk9v53pKWbwoTNkC4/t1kmYNllLllbT1kipmS9MOrgRy702s4X5m9kCOY
6jcy26CNLSvry0Y93xdWZnTRZ33os5N38y4Go2LbEntIqRzqZBhe5VbO3FC5LKiZra39zEtjf/PS
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
DeWMjq4/qRdlaauhLAayU8D1uT7y2rsxofjID142fXzeBarVJbINlDT0aDZkYQbEOJSbMKDZEts8
TdV9plT9Wnoj+htbw36zdzDpAtsv4z50oZCL6a1weQzht5L/s/4rWXv2UpF3hV4SqO5oeLztwURm
MjWVMvOCwdvmHVBLAwQUAAIACAAXhx1JpHcNtoQAAADAAAAAPQAcAGh0dHAvdGVzdHMvY2FjaGUv
bmV0d29yay1lcnJvci1kdXJpbmctcmV2YWxpZGF0aW9uLXN0ZGVyci50eHRVVAkAA77LxFe+y8RX
dXgLAAEE9QEAAAQUAAAAncwxCgIxEEDRfk8xpTZiRKMbRFjWxkIQLBTEImbHOBAmkkwUb2+8gu3n
87riYdaC0mahzVwDvrNSy0mIzgZI4hI+YxJif1Fq2q6usN7irfiNgYw87DFn6/FE8uitoI/pY2DE
JYRx0/0tE5P8yGPVKfKO79HA+dCDi8zopLb6vGygofkCUEsDBAoAAAAAABSHHUkAAAAAAAAAAAAA
AAASABwAaHR0cC90ZXN0cy9jYW52YXMvVVQJAAO4y8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAAAUhx1JAAAAAAAAAAAAAAAAGAAcAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VUCQADuMvE
V1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAFIcdSdnHaL3KAAAA3QEAADsAHABodHRwL3Rl
c3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2Utc3RkZXJyLnR4dFVUCQAD
uMvEV7jLxFd1eAsAAQT1AQAABBQAAAClkDFrwzAQhef4V9wYLyYObUpFKKTO0EI7lg6hw1k6yyLK
yUhnSv595DZbpuDb7uB9797bjRbWz1Bv1ONGPayAflNdP1U+aPQQRUcaQhTH9lDnWf/A9p278KLA
B2vzGZJglFRVVbG7G7WndrSZlUg+KSW09PFPfc2io4Is9GTmgKfnmsCds2NEcYG/nfRNOA2epu0N
2XiKChrUPRnIbMY2e0KL+khs0rxUX4ni1NfeaVE3bAXLYlHOcmBzLe4vFwrZEM+Zy6P3ZXEBUEsD
BAoAAAAAABaHHUkAAAAAAAAAAAAAAAAvABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25h
dHRhY2htZW50c2FuZGJveC9VVAkAA7vLxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIABaH
HUll0RmIfwAAAJUAAABRABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50
c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC1zdGRlcnIudHh0VVQJAAO7y8RXu8vEV3V4
CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKqqYQd2a4Evye64U63mdXgXD/c
O9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Yc5OalFoxd7uG4RoutwDTC8Z5
fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAFYcdSWXRGYh/AAAAlQAAAGoAHABo
dHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVh
ZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLWFsd2F5cy1zdGRlcnIudHh0VVQJAAO5y8RX
ucvEV3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKqqYQd2a4Evye64U63
mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Yc5OalFoxd7uG4Rou
twDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAFYcdSWXRGYh/AAAAlQAA
AGsAHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVy
ZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLWRlZmF1bHQtc3RkZXJyLnR4dFVU
CQADucvEV7nLxFd1eAsAAQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1LhA2niqqmEHdmu
BL8nuuFOt5nV4Fw/3Dvf6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRa
MXe7huEaLrcA0wvGeX7O8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBBQAAgAIABWHHUll0RmI
fwAAAJUAAABpABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJv
eC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1uZXZlci1zdGRlcnIu
dHh0VVQJAAO5y8RXucvEV3V4CwABBPUBAAAEFAAAAA2IMQ7CMAwAd17hD9CkBQTK3qULUuEDaeKq
qYQd2a4Evye64U63mdXgXD/cO9/ow8N77xKTIVkuWlmLFaZoFtP2aVMj5YW/TlD5kITaakVBOW8Y
c5OalFoxd7uG4RoutwDTC8Z5fs7w/lUcRVgCHJRxLYQZigKxQSTgZcdkpz9QSwMEFAACAAgAFYcd
SWXRGYh/AAAAlQAAAG8AHABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRz
YW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLW5vLXJlZmVy
cmVyLXN0ZGVyci50eHRVVAkAA7rLxFe6y8RXdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQF
BMrepQtS4QNp4qqphB3ZrgS/J7rhTreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9O
UPmQhNpqRUE5bxhzk5qUWjF3u4bhGi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BL
AwQUAAIACAAVhx1JZdEZiH8AAACVAAAAfgAcAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9u
YXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVy
ZXItbm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUtc3RkZXJyLnR4dFVUCQADusvEV7rLxFd1eAsA
AQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1LhA2niqqmEHdmuBL8nuuFOt5nV4Fw/3Dvf
6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRaMXe7huEaLrcA0wvGeX7O
8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBBQAAgAIABWHHUll0RmIfwAAAJUAAABqABwAaHR0
cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRl
ci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1vcmlnaW4tc3RkZXJyLnR4dFVUCQADusvEV7rL
xFd1eAsAAQT1AQAABBQAAAANiDEOwjAMAHde4Q/QpAUEyt6lC1LhA2niqqmEHdmuBL8nuuFOt5nV
4Fw/3Dvf6MPDe+8SkyFZLlpZixWmaBbT9mlTI+WFv05Q+ZCE2mpFQTlvGHOTmpRaMXe7huEaLrcA
0wvGeX7O8P5VHEVYAhyUcS2EGYoCsUEk4GXHZKc/UEsDBBQAAgAIABWHHUll0RmIfwAAAJUAAABu
ABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVy
LWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci11bnNhZmUtdXJsLXN0ZGVyci50eHRV
VAkAA7rLxFe6y8RXdXgLAAEE9QEAAAQUAAAADYgxDsIwDAB3XuEP0KQFBMrepQtS4QNp4qqphB3Z
rgS/J7rhTreZ1eBcP9w73+jDw3vvEpMhWS5aWYsVpmgW0/ZpUyPlhb9OUPmQhNpqRUE5bxhzk5qU
WjF3u4bhGi63ANMLxnl+zvD+VRxFWAIclHEthBmKArFBJOBlx2SnP1BLAwQKAAAAAAAUhx1JAAAA
AAAAAAAAAAAADwAcAGh0dHAvdGVzdHMvY3NzL1VUCQADuMvEV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAFIcdSXqSsdWEAAAAGgEAAC4AHABodHRwL3Rlc3RzL2Nzcy9ib3JkZXItaW1hZ2Ut
bG9hZGluZy1zdGRlcnIudHh0VVQJAAO4y8RXuMvEV3V4CwABBPUBAAAEFAAAAM3MsQrCMBDG8b1P
caMuYopWDCKUujgIgoOCOMT0Gg/CnSRXxbc3voXf+Ofj144B6jWYxi4bu5gDvrMxq1kU7yIk9Qmf
kpQ4XE1ZfYPNDu9j2FrIyP0Bc3YBz6SPzikGSR8LEx5jnFbtH8rEpD/yVHQS3vMgFi7HDrwwo9fS
yuflIvXVF1BLAwQKAAAAAAAohx1JAAAAAAAAAAAAAAAAEQAcAGh0dHAvdGVzdHMvbWVkaWEvVVQJ
AAPcy8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAbhx1JAAAAAAAAAAAAAAAAGgAcAGh0
dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQJAAPGy8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQU
AAIACAAbhx1J7ZTt+1ABAAB/AwAAOQAcAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIt
a2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUCQADxsvEV8bLxFd1eAsAAQT1AQAABBQAAADNUktL
AzEQPttfMUd7Wbp9bOkqhT5EBSuFUjwUD2kym4ZmkyWZWPz3ZrsqC94sgiGXZGa+V7JLs3wU9yAZ
jgevcLu5u19vV+spzIiwrOgZ6WTdcWWNIus2SKHKwVgCj0TKSAgVmKYHyqbpBpgQDr0H5UFbznRn
12IZ/hnLLEjoT+CLC/Dk03ScnIvgiDusrKvhdmlcWdTxaAo7zeO4lDWLJ+bIJ0nyC6gl7oOMWFHx
KqpiEp8a1HkcOuYQBzWKdhKT/j9K4lt+HcHCmkLJ4Bgpa14UHRa2rDTWpwdmhEaXw4LxAwroARq2
j85gz/gRjfCXZbf16OpXWSpO+Q/sHK47V91WiFk2aYfoUa5DWS1Rqzd0M85DGTQjFPNQFLXqXg6i
KYJQ9ZWHwtkSHLLai6VDrHBrDHKK5/FklA36Fzky4vM7nHOMWqR179GHCVp3Ox9QSwMECgAAAAAA
IocdSQAAAAAAAAAAAAAAABUAHABodHRwL3Rlc3RzL21lZGlhL2hscy9VVAkAA8/LxFdfzcRXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIABuHHUl8xU3wuQEAACoFAABAABwAaHR0cC90ZXN0cy9tZWRp
YS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUCQADxsvE
V8bLxFd1eAsAAQT1AQAABBQAAADVk9Fr2zAQxp/Xv+Ie15dQN066eCOQuus2qEcglD6EMS7WWRaR
JU86L/S/3ylZR0reWgab8Ivku+8+fp+0zqbFRL7xKL8af4MPq4+flvfVcg4LZup6/kq882FbeWfY
hxXx0BfgPEMkZuM0DD24Qw10h6L3gEoFihFMBOtrtGfroyn5X5uyGDRczuBpFtAuZtnVaP8TAteB
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
aS2BLzo8alL/X5ZPKlIW/NKaKqp6vrtEhU3psN49Kl84jBIypVdYQBvQqwW/DBZKrzmH6bzezRLG
OmVjq0mesDnRjYvmWQ7f/5QvUEsDBBQAAgAIACCHHUncNB7OfAEAACoGAAA6ABwAaHR0cC90ZXN0
cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJlYW0tc3RkZXJyLnR4dFVUCQADy8vE
V8vLxFd1eAsAAQT1AQAABBQAAADtlEFr20AQhc/1r5hjczFaGce2WgyuXdpAXQROSCH0sF6N1ovX
O2J3VJN/n5GTQ0xOjltoIKCLxNvvzb55aNZayCegLouhPGPAfVJq1PdktIfIJmJDkV2wd0qpPPsN
nxe4bu20gIShWmJK2uKt481cM1qK9wV8DK33F73Zq8kuOO6QK6E7ClehpgJ+lXMwFAIalm+i+aO9
q3p3T/xJP1NjYay+fitvluUUZsy4a/gn8p7idknCpLhCbpsCArGMz505tA2ERw3sHkWfQFdVFG9w
CQ7jHrlM/pnLcWKTk3bBT6v4QdaK4osc2hYgBz0ehZSP/sfxWUeeU6idbaPu9ntoFO0aj93bdx0q
j7GAuTYbrCADDHotN4O1NlvpYTovu5uEsWvZwhkuXrCl0b0PF71dgzZvdBQtlJjKSEauf51K3QVt
AGOkKL2E8moBKsshbaj1gkFQgy6lDGrnEaiuxRIGo8tTkeoZcviSOBzn4/cp/+KU53TqlH/j2yA/
AFBLAwQUAAIACAAihx1JNrHvSCMDAAByiQAAPAAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVv
LWR1cmF0aW9uLWFjY2Vzc2liaWxpdHktc3RkZXJyLnR4dFVUCQADz8vEV8/LxFd1eAsAAQT1AQAA
BBQAAADt3N9P2zAQB/Dn9a+4x/FAmwSxlmxj6lo2kGCqCmiTEA9uck0jHDuzHRD//S60Qp02bWOM
Cbav4AEH5/zJ+ZwfpGLYFJTsUPwi3ZbvHeIrH8f9rraZ0uRC5ri2LpSmOIvjOInO6dWYZ02xm5Jn
kx+x96rgj2VYjFTgwrrrlJ6bRuuNzvC3I5emDG3IY4leWnNg5jalT5MRZdYYzoJskz6XSpd556yN
30+jqJvsxOe0f3IymfLnhn2geVnsh1CvmuMyn3LG5SVP2dfWeB4prWcqu0jJ2DZ0YBPokE0RFuSW
XXPaJHZuZHOm0lMSRT8bUJrjpqrflUbp0+nh0MiolQ08zHMnh5OSWv5AcdLvRvIVy27SlxqnaSHc
tNe7/VU6iKKoV3Feqp7sZBuXse8ttO8VbNhJxjcvbd6tF/WbvJGmJOZ1u8svIFfNkWOJsueclYOs
KslASmwy20g2nBy+Mu3xW5fS7DowOWUKlo35esr0MmWby56y+fvJGsgMH++9n5weTXZpGAJXdfjA
4cq6iyMrM27dMYembmcjSHGFtjSoqcks+1C17PTyNoMyxk0x/aVR1uq5HetOKyWsFsqhLQrp8VZ2
krKTHTWvl/BWHD9GflAujKyRylkV2c16t1WtuW3tSz1olhIZqWwhNSOxjZrJkVG7uuQs4e+Xu1PP
rj0HjMvspjq/ji3nm86zjU5Vc5HUyklfmrCfOCtLxZ/4iWoTna1qszQ0ORhTHCXkF7bREoYp3mqz
FMnK0Ex2Ppchaav/4q4h47WQ299G3B4kgyeivM9s/fiagFmCEkoooYQSSiihhBJKPAVglqCEEkoo
oYQSStxt4W4LSiihhBJKKKGEEkoooYQSSiihhBJKKKGEEkoooYQSSiihhBJKKKGEEkoooXzoTyrF
+KQSlFBCCSWUUEIJJZRQQgkllFBCCSWUUEIJJZRQQgkllFBCCSXeFv+p/y+P99BQQgkllFBCCSXu
kJ7QfQzu46CEEkooofxXr+rJg/3dI8H1EkoooYQSSlwvcVXDLGHFQwkllFBCCSWUUEIJJZRQ4un0
P3qTjqfzx6n8AlBLAwQUAAIACAAbhx1JTllvOMwAAAA3AgAAMgAcAGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtZG9jdW1lbnQtcmVmZXJlci1zdGRlcnIudHh0VVQJAAPFy8RXxcvEV3V4CwABBPUBAAAE
FAAAALWQMW8CMQyF5/IrPMJyaoCWEiEkOAYq0bHqgDr4EhMigoMSn6r+e3Jtt07ohOTFlt73/N6q
dTCeg3rWT2UmQF9ZqVkVosEASUyiS0zi2e2VUi/TT1i88iEuNYToXDlDFkySq6oarG5GbahpXWFl
kjfKGR3tfqnrIjppKMJAtg+4e66OfPCuTSg+8oeXYx3Pl0DdtkW2gZKGGs2RLDwCMTbFExo0J2Kb
+6V6z5S6vjbeiP7H1jAcPIx6ObD9K+4nFwq5mL4Ll9sQ7km+AlBLAwQUAAIACAAbhx1JIZP6NOAA
AACsAgAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQAD
xsvEV8bLxFd1eAsAAQT1AQAABBQAAAC1kU1LA0EMhs/2V+TYXsSR+jWI0G4PCgqCiELxkJ1Np0PH
pMxkFf+9WfHmQXARcklInjd5s+gjHF+AO/UnFnOg9+rc2WGWgBmKhkJ7KZo4rp1z5/MXuFxR28cr
D5W4u6NaMdJT0m2DSlHKh4cp9znPJos/kxMnHZAPRk/CN7wRD8/3DQRhpqBWs543zKkboVJJv9e/
lRitY2lDOw82mGkUWLFoI7xJsS84bPvlj7zuMw3ZNXKXqXhoMGypgyMgxtY0ocWwM1fruKseK5XB
s1UK6n+w7T+Tg9kohf/6+2/kT1BLAwQUAAIACAAdhx1J7JGJQOwAAADGAwAAOQAcAGh0dHAvdGVz
dHMvbWVkaWEvbWVkaWEtcGxheS1zdHJlYW0tY2h1bmtlZC1pY3ktc3RkZXJyLnR4dFVUCQADysvE
V8rLxFd1eAsAAQT1AQAABBQAAADdk0FLAzEQhc/2V8zRXsRIW2soQt0eLCgIIgrSw2x2mobGSUlm
Ff+9s+JJT+viRcglYeZ7b96QZevh7ALMzE71TIDeijHnJzE5jJDFZTqkLIH9szFmPtnAYkV16y8t
FOLmlkpBT49BdhUK+ZTfLRxzG+N4tPw1OXCQDnmv9JB4zdtk4emuApeYyYm+ac0rxtB8U5n18i9f
9m+S91pxpU17C9oYaRBYMEuVeBt8m7Fz+5lPejlE6m7XyE2kbKFCt6MGToEYa9WEGt1eUy3Dpnoo
lLvMVsGJ/cHW/YyOxoMU+uz978jzf07u8ws+AFBLAwQKAAAAAAAuhx1JAAAAAAAAAAAAAAAAHgAc
AGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL1VUCQAD6MvEV1/NxFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAJIcdSfcsq2lTAQAAlwQAAEIAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYXNvdXJjZS1hcHBlbmQtYnVmZmVyLXN0ZGVyci50eHRVVAkAA9PLxFfTy8RXdXgL
AAEE9QEAAAQUAAAAzZFNT8MwDIbv/Arf2A5bm7brPiQOwJhAYhJig8s0TV7ibhFpUjkpUH49ncTH
Bbgyn6xXlv28r1cinwyGkzjri/F4DQXjbo5WF86ozV3t9xdNIA9e7ywaQwqI+awn8jjLofM001/D
V8yONw+WXiuSgdSN1WGKAbvQWZB0VsFpEZrqFDC4EshKV9tATKrbKhAtXM2SLlHuKbp0THNSGr+7
nhjkST/J4uiOXXDtIvLRzHGJ4RqtMsQ+mrtnTdEB6dDMWiMl2fDJ15dgtCUQeRqfJLHIe/Gol4zh
w/6wn6ZDmNZldU9WES+ZaCXaiiejJMuH2Rpudtaxtjto3QR2ZqlL2qIn8BRg24A0ur0HW5JYt+r5
4wLLytBFXRTEU+0rg80tNsTwgh5QqTbN4ADBN1bu2Vn9RvwzWhYfL1r6B9r4f9Hy401t9AtaKrJR
8q9oA3EMD30HUEsDBBQAAgAIACWHHUnrcvhQPQEAAHoDAABQABwAaHR0cC90ZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1iaXRyYXRlLXN0ZGVy
ci50eHRVVAkAA9bLxFfWy8RXdXgLAAEE9QEAAAQUAAAA5ZBBT8JAEIXv/Iq5AQfotpSCJB4EJJJI
QgS9EEKG3Sls3O42s1u1/npLjPIjmNPLy8vM+2YXZ5PhaCLG/SRJ9pAznlZode6MOqwrf57WgTx4
fbJoDCkg5vtenIk0g877Qv+HH5kdH14tfZUkA6ml1WGOAbvQ2ZB0VkE7D3XZBgyuALLSVTYQk+o2
DkQbV7GkGcozRTPHtCKl8ap68TBL+kkqojW74JpF5KOF4wLDE1pliH20ch+aokuli1g0IAXZ8Nev
L8FoSxBnA9HaXaFTcYPQw/GtQCciznpi3Evu4Bc/Fv1BlsK8KsoXsop4y0S7uBkxGSdpNkr3sDxZ
x9qeoKEJ7MxWF3RET+ApwLEGaXRzD44ksWrch7cNFqWhaZXnxHPtS4P1M9bE8IkeUKnmm8EBgq+t
PLOz+pu49QNQSwMEFAACAAgAJocdSdJJUP4+AQAAegMAAFIAHABodHRwL3Rlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1zdGRl
cnIudHh0VVQJAAPYy8RX2MvEV3V4CwABBPUBAAAEFAAAAOWS3U7DMAyF7/cUvoNddP1Zl8IkLoAx
gcSkiQE3E5q8xO0i0qRyUqA8PZnEz0Pgq6Mjyz6f5W0u5rNqnmcTkYsXqBmbFVpdO6N2694froZA
HrxuLBpDCoj5IslFVgo4fV3q3+YbZse7J0sfHclA6s7qsMCAYzjdkHRWwUkdhu4EMLgWyErX20BM
ahwdSDeuZ0nXKA+UXjumFSmNfyrJZ6KYFGWWrtkFFweRT5eOWwy3aJUh9unKvWlKj5GOYhlBWrLh
J99EgtGWIBfTbLT9g55O/yF0Wf0X6CLLRZKdJcU5fOMXk2pWwaJvuweyiviRibZ5rGx+VpSiiv9w
11jH2jYQaQI786hb2qMn8BRgP4A0Ou6DPUnso3v5vMG2M3TV1zXxQvvO4HCPAzG8owdUKl4zOEDw
g5UHdlZ/Eo++AFBLAwQUAAIACAArhx1JOi+LA4sAAACbAAAAOQAcAGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJyLnR4dFVUCQAD4cvEV+HLxFd1eAsA
AQT1AQAABBQAAAANyE0KwjAQQOG9p5gLVJJQ+7dTuhFcaXEjLqbJtAbSpExSJJ7evtXHU0JWhWgK
1YKsulPdKXkUbQv9tqx38oZ4YKKX3BNdo8qqLt9wnX1g62fQwScObrALjRgJIiUYM2hnye8ijdt+
z88HLqujyzZNxL2Nq8N8w0wMX4yAxpCBFAAhZq8/HLz9ER/+UEsDBBQAAgAIACyHHUlIYX+kqQAA
AAcDAAA7ABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3Zl
LXN0ZGVyci50eHRVVAkAA+TLxFfky8RXdXgLAAEE9QEAAAQUAAAAzdAxDoIwGAXg3VP8F9C0BUpl
07CYOClxMQ6l/cEmpSUtxNTTywF0lje9vOnLY4TyLRFbtgfKq6KsWL7jpIB6HsYLOo2hCYh3uoRU
guW8zB5w6p0PxvWgvJuCt40ZsJURIeIEbQJlDbqloZLzsh5uVzmMFo9z12GoTRytTGeZMMBLRpBa
o4bJg4SYnHoG78wbw4Z9pYkftKwQgv2VRulqX6PZel8r10D7AFBLAwQUAAIACAAuhx1JqkqBipoA
AADRAQAARgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJj
ZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAkAA+jLxFfoy8RXdXgLAAEE9QEAAAQUAAAAzc4xDoIw
FMbx3VO8C2DaqqWyaVhMnJS4GIdH+8AmpSUtxNTTywE8AN/0zzf9BOOyYKoQR+CyOpSVUFvJGdTz
MN7IG4pNJHryZaxSYi/L4wsuvQ/R+h508FMMrrEDtZgIEk3QZtDOkl+KNM7Le3rccRgdneeuo1jb
NDrMV8wU4YMJ0BgyMAVASNnrdwzefiluxF/abr00tQbaD1BLAwQUAAIACAAdhx1J5m+2G+wAAABf
AQAALQAcAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUCQAD
ysvEV8rLxFd1eAsAAQT1AQAABBQAAACFTz1PwzAQ3fsrbuqWOCnQppYiVBUQAwOKylQxuPY1seQv
7DNS/z2OoF25u+E9vfdOd8d2zR/KdHV3t/6E18PhfcCvjIngrMeZPmUbXrQT5mN42zk1oPWEO6Ui
psRB/AJoV5u6Kd2WWPFCjgYmosAZu0m8a5qGWVRasG+t0Fc0RU9kUFXGC1XLUT86YbEvK32OEhOj
ckkd1Hl5tfbbuZZ0CdiLEIyWgrR3rHgWx3+f+aP7iILwOUYf995adMQBnfTZEUZUIBzgLHI4XQgh
CjciGHQjTWB1soLkBBWkyWej4HTTVqDTFW+23f3iB1BLAwQUAAIACAAghx1JTnG+hcIAAACSAQAA
LwAcAGh0dHAvdGVzdHMvbWVkaWEvcmVsb2FkLWFmdGVyLWRpYWxvZy1zdGRlcnIudHh0VVQJAAPM
y8RXzMvEV3V4CwABBPUBAAAEFAAAAKWQTWsCMRCGz+6vmKNeykb8qEEEXQ8Keiw9FA+zyRiDcSLJ
LOK/N5YeCj21hbkMzPs8zLvsHAxnoCZ6XGYGdMtKTV9CNBggiUl0jUk8uw+l1OvoAPM1tZ1baMgk
e8oZHe2ic+ViVUJnDSUYyFbLv4MFkzSRj951CcVHfvdyauLlGui5bZBtoKShQXMiCzUQY1uc0KI5
E9v8HznJW6a05WNceyP6B1tDv+oNvhumuq5/ZWD7VdznXyjkYroXLnchDKoHUEsDBBQAAgAIACGH
HUmvkRBYSAEAAHQCAAAvABwAaHR0cC90ZXN0cy9tZWRpYS90ZXh0LXNlcnZlZC1hcy10ZXh0LXN0
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
IO+MnoSveC0eHm8bCMJMQa1nM6+YU/dNZf4n//pl/1pitIkLW9p6sMVMo8CKRRvhdYp9wcHtZz7y
sss0VJfIXabiocGwoQ4OgRhb04QWw9ZSreOuuq9UhsxWKaj/wbb/TPamoxR+//sHUEsDBAoAAAAA
ABuHHUkAAAAAAAAAAAAAAAAVABwAaHR0cC90ZXN0cy9tZXNzYWdpbmcvVVQJAAPGy8RXX83EV3V4
CwABBPUBAAAEFAAAAFBLAwQUAAIACAAbhx1Jp/t5WoMAAADAAAAAQwAcAGh0dHAvdGVzdHMvbWVz
c2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLWV2ZW50LWRpc3BhdGNoLXN0ZGVyci50eHRVVAkA
A8bLxFfGy8RXdXgLAAEE9QEAAAQUAAAAcyxNVzCyVDA0szIFIhOF1PJiQ0NzvZz85MQchaKS5KLU
gvyiksy89GhDIDCLVbBxSU0qTbezUihOzUvxTS0uTkxPDc8syXBOLElNzy+qtFLQyCvNydHkciTb
5My8zBKQkcFA0zPz8zzz0vKtFCICnBWS8/PyUpNLgGJANWWJOZkpXABQSwMECgAAAAAATIcdSQAA
AAAAAAAAAAAAABAAHABodHRwL3Rlc3RzL21pc2MvVVQJAAMgzMRXX83EV3V4CwABBPUBAAAEFAAA
AFBLAwQUAAIACAAohx1JXoT0aeYAAABiAQAALQAcAGh0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29s
dmVzLXVybHMtc3RkZXJyLnR4dFVUCQAD3MvEV9zLxFd1eAsAAQT1AQAABBQAAAB1jUFLw0AQhe/9
FXOSRKSTiqIMJSDaXBSVRNrzdjNJV5JM2J0I/nsTG1EKMqf33vfmbfL8JSfIjGu4BBUw3h7cB0MY
9p6DDN4yVOLhoNoT4uryZpmMt6LbJEmwdcHiDxfQStubEJbvfb3ArTRDO5oPRg1udgXueP/oFItv
eFL34hkbMSV7nHfRVvjEtbGfY3539Ja276PrqyQGgqBGnYWcq1f16/kH0WklhX8jIuvZKEdWuqCw
e8uICvWuq+Hs4reWedPy5ByxLVuVP4PPUjKcpxMQtCSqhs6qk269F2kgmttxGi++AFBLAwQUAAIA
CAAphx1J9PqpBsMAAAD+AAAAPwAcAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5n
LXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJyLnR4dFVUCQAD3cvEV93LxFd1eAsAAQT1AQAABBQAAABN
jk1rwkAURff+irusUEsmaJIOxY2pqyDSj5WIDMnTPprMhJcXxf76jtCCB+7iwoV70sRks6SYpc8w
mV3k1uRPaZqhHLv+jXxD8iFEOxPJbGHmeTHfYyuhJ9ErWh4U7M+u5QbHILd0Ti1MkuChv58NqJ33
QVEHr449Np9VNZ3s7l7zPV4iWJer7aHijpUaLCNY8+mvlzx8r1z9RdHhzFHv8E7672PxKhItLsLK
/oQwxrvbGEdu6REqo6+dEjTghyRMfgFQSwMEFAACAAgAKYcdSYAE7UfCAAAA/gAAAFsAHABodHRw
L3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2Mt
YWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAAPdy8RX3cvEV3V4CwABBPUBAAAEFAAA
AE2Oz2vCQBCF7/4V71ihll2xSboUL6aeQpH+OInIkow6mOyGycTS/vVdoQU/mMPA471vbmw2M8Vs
/gSbucfc2fzBGINy7Po3Cg3JhxBtbSJzhV3kxWKHjcSeRL/R8qDgcPEtNzhEuV7n1cGmirv+Njag
9iFERR2Deg54/ayq6WR7u7rDcwLrcrXZV9yxUoNlAms+/v0lD+eVr0+UHC6c9PbvpP8+Di8iyeJL
WDkcEcc0dw3jwC3dQ2UMtVeCRvyQxMkvUEsDBBQAAgAIAEyHHUkVNTWSegAAALwAAAAqABwAaHR0
cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQJAAMgzMRXIMzEV3V4CwAB
BPUBAAAEFAAAAI2OQQ7DIAwE73mFP0Ag7aEVvyHEVSwZjIyR+vwS5QPVXlY7h9kspREnI6mAqqIR
PsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5Ph6PSRM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhp
nxoTYEnHf7oqfeTzupcsMS8/UEsDBAoAAAAAAEGHHUkAAAAAAAAAAAAAAAAUABwAaHR0cC90ZXN0
cy9zZWN1cml0eS9VVAkAAwnMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACGHHUlq6aph
uwAAAJIBAABVABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3Rl
LXZpZGVvLWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4tc3RkZXJyLnR4dFVUCQADzsvEV87LxFd1eAsA
AQT1AQAABBQAAAClkD2LAjEQhmv3V0ypjWwEv4IceGuh4JWHhVjMJrMxGCeSzCL++8sd19lp+cK8
z8O8697BZAlqpqdzXSuge1ZqPg7RYIAkJtEtJvHsjkrVy8UJVhtqe/ehIZN8Uc7oaB+dKxefpXTR
UIqBbLV+HSyYpIncedcnFB/54OXcxOst0G/aIttASUOD5kwWaiDGtjihRXMhtvkdOcl3prTjLm68
Ef3E1jCsBqO3DGz/h/v7C4VcTI/C5T6EUfUDUEsDBBQAAgAIACGHHUn1/rRn2gAAAKwCAABIABwA
aHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWxvY2Fs
aG9zdC1zdGRlcnIudHh0VVQJAAPOy8RXzsvEV3V4CwABBPUBAAAEFAAAAM2RQUsDQQyFz/ZX5KgX
2Slo7SBC3R4UFAQRBekhO5tOh45Jmckq/nuz4s3jInhMyPvy8rIaIsyX4M792cI3c6CP6tziNEvA
DEVDoYMUTRxfnWuWFxu4XFM3xCsPlbi/p1ox0nPSXYtKUcqnh2Mecj6Zrf4hOXHSEflo9CR8y1vx
8PLQQhBmCmo9m3nHnPpJ/vXH/p3EaBPXJtp7MGGmSWDFoq3wNsWh4Oj2Ox95O2QaqxvkPlPx0GLY
UQ8NEGNnO6HDsLdU67SrniqVMbN1Cup/se0/s6O//PsXUEsDBBQAAgAIACKHHUkfpxzaKgEAABUD
AABHABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVv
LXJlZGlyZWN0LXN0ZGVyci50eHRVVAkAA8/LxFfPy8RXdXgLAAEE9QEAAAQUAAAAzZJNa8MwDIbP
66/QcT1sJE3XLGYU2vSwwQalZWxQenAcxTH15GI7+/r1U0pPPQxGL9PNRnpe6ZVmnYZRAelE3OQi
GQF+hDTNr61T0oKPyuPe+WhIb9I0KW63cLfAqtNTAQGpfsIQpMYXE9tSRtTOfwm4pM7a4WD2D8mG
TOyRa6YbRw/UOAGvyxKUI0IV+Y9z3qU19WBz5GfXSVYwgwPK1Wy+hikHNLYL7ZI7ZZ0VWpQB1xgF
bJLPvFFpUxWTPBsnW5hzXztIoJUByNHVN3oHHhvW7CjC+GSc7E9GxaNPj05rzjhoCeBCi/U54Ch9
LB01Rnde9rYcFuHe9hb7172k2qIXUErVYs3TIcmKNaGSasemhPOmeg7o++UsjGJLT9l8CIOL4VkK
vx/YD1BLAwQKAAAAAAA0hx1JAAAAAAAAAAAAAAAAKgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L1VUCQAD88vEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
IIcdSZsF0qLXAAAA+AEAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA8zLxFfMy8RXdXgLAAEE
9QEAAAQUAAAApZBBSwMxEIXP7q+YY3uRTaUWgwh1e1BoQRBREA+zyTQNjTMlmVX892bFmzf3+OC9
7/HeegiwuAJzaZcr27ZAn8WY1XkShwmyukwnyRo5vBpjLto3uN5QP4QbC4V0R6VgoK2EUB23NXS0
UIOJfLP+P1gxaye8j2HIqFH4Oeqhk/dTolHdIftE2UKH7kAeKpuxr53QozsS+zKlnPSpUL7nvWyi
U/uHbWHWnM0nNbD/Pe5nFyoFyV+Vy0NKU8iRo47Ix0qvP40bLLw8dOCEmdz4XfV8YIq++QZQSwME
FAACAAgAIIcdSQ0v69HkAAAAQwIAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQJAAPMy8RXzMvE
V3V4CwABBPUBAAAEFAAAAKXQwUoEMQwG4LPzFDnqZdgqulhEWGcPCgqCiIJ4yLTZbtmaLm1G8e1N
1ZsnmWNL86X/v5oCHJ+DObOnS7tYAH1UY5Z9yg4TFHGF9rlI5PBijDlZvMLFDW/ypYWUQ9BrqIJF
at/33erf1JrGKahVSe6oVgx0+6Ne6dDOgg4m8nPg9rkh8yaGqaDEzE9RtkN+2ydqp2tkn6hYGNBt
yYPajKPuhBHdjtjXeakeK5XW1zo6sX9sC4fdwdGsDex/i/vOhUIhl091eUppjhw5SiMfVNeeWgYL
z/cDuMxMrnWnb94xRd99AVBLAwQUAAIACAAhhx1JxAW9wqcAAACKAQAAWAAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Jsb2ItdXJsLWRvZXMtbm90LW1hdGNoLXNv
dXJjZS1zZWxmLXN0ZGVyci50eHRVVAkAA83LxFfNy8RXdXgLAAEE9QEAAAQUAAAA3Y+xDoIwFEV3
v6KjDlCoAkLioEQTByMJIzHkWV6wWil5rSb8vRgH/Qa3c6dzbhXGWZRkQeAnaXpiyuEd7NDJukRX
kOmR3MCsajvQGhuGRCsvFMkyYtPbTrUbsHg8X1G6LZGhet89QasGHDYzNlW/CxzjpXmQxBzkBXlu
CA/YKPiSF0ax8MUi4KPaGTf0aHmhYUDio+xD9frd50umVYdMiHQ+qf7hxAtQSwMECgAAAAAAJYcd
SQAAAAAAAAAAAAAAAEQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL1VUCQAD1cvEV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAIocdSSoeNejPAAAAZgIAAGcAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL2Jhc2ljLXVwZ3JhZGUtY29y
cy5odHRwcy1zdGRlcnIudHh0VVQJAAPPy8RXz8vEV3V4CwABBPUBAAAEFAAAAM3OMUsEMRQE4P5+
xZTayCbL3p5BBLlrrhACCgpikcu+zQVzyfJeVvHfu3aC1VXaDsM3c5oo6MmxEMOSWC6eRB7FujcD
70HMhREz7H4H1WjIscxpwIGgWkRBgzEmQhlHoYq2X69O55HqB9n9FruN3pxL/tHLuzlAX0OtTdeb
pgV9iFL9VSreJXD1TFPhGnN4UUrp5hU3OzrM4dZAKA/3y7wL9BTrcesqhcKfBhd5TunyX8oxx/pN
Pix6LHmfx2LwbLfwJWfydcmWzrtLcVh9AVBLAwQUAAIACAAlhx1J67hKIu8AAAAmAwAAeQAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUt
cmVxdWVzdHMvdXBncmFkZS1pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVy
ci50eHRVVAkAA9XLxFfVy8RXdXgLAAEE9QEAAAQUAAAAzVE9T8MwEN35FTfCQOKkIWm9VSmIgQFF
ZaoYjHNtLWI7nG0Gfj3XUiGGAhJDhbzcx7v3nvxWRS2vGilmWSnEI9wul/cdviQMEdZm86VtCVXE
ayJPrbcWXZSATvvkIhL2oBzgbikhOULtN8688Xgb4wiEYfQuIFRCnK1+VmT8oV2YvkON5hW7w32r
huFJ6WfJjPvFEX4439uAy6Ks6+YC1lzvQDLPi7LJBL9CTqtqkvOVT6Qx5JHVMjtWv3njdpHseGOc
Gh66u7ljg9ZHnPc9kwUJ6qOATyU+YywkGv5kYjo5dSTHFP9LJN/8xgkieQdQSwMECgAAAAAAI4cd
SQAAAAAAAAAAAAAAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS91c2VyQWdlbnRTaGFkb3dET00vVVQJAAPSy8RXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CAAihx1J8yBZbeUAAABDAgAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQJAAPPy8RX
z8vEV3V4CwABBPUBAAAEFAAAAKXQwUoDMRAG4LP7FHNsL0tTqdUgQrs9tKAgiCiIh9lkmobGSUlm
Fd/eRL15kj0mZL7J/68GB/MrUBd6sdSzc6CPrNSyDdFggCQm0Skm8exelFLzy1e43vE+3mgI0bly
DVkwSW7btln9m9pQP7hiZZI7yhkd3f6o6zJ01FAGA9kxcP1cF3nv3ZBQfOQnL4cuvp0C1dMW2QZK
Gjo0B7IwA2Lsy07o0RyJbR6X6jFTqn1tvBH9x9Ywac6mozaw/S3uOxcKuZg+i8tDCGNkz14q+VD0
0lPNoOH5vgMTmcnU7sqbdwzeNl9QSwMEFAACAAgAI4cdSUE0VI27AAAAkgEAAFMAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxs
b3ctdmlkZW8tc3RkZXJyLnR4dFVUCQAD0svEV9LLxFd1eAsAAQT1AQAABBQAAAClkDGLAjEQhevb
XzGlNocR3L0Lx4GuhYKWYiEWs8kYg3EiySzivzeK3XVn+WDe9zFv2jsYf4Oq9aTRoxrompVqPkM0
GCCJSXSJSTy7nVJq/LWHnzl1vfvVkEnWlDM6WkXnysWslE4aSjGQrab/BwsmaSMfvOsTio+89XJs
4/kS6JEWyDZQ0tCiOZKFERBjV5zQoTkR2/yOnGSTKS35EOfeiP7D1jCoPoZvGdi+hnv+hUIuplvh
ch/CsLoDUEsDBBQAAgAIACOHHUm/MnT1hAAAAMAAAACCABwAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2Jsb2NrLWxvYWRpbmctdXNl
ci1hZ2VudC1pbWFnZS1mcm9tLW5vbi11c2VyLWFnZW50LWNvbnRlbnQtc3RkZXJyLnR4dFVUCQAD
0svEV9LLxFd1eAsAAQT1AQAABBQAAACdzD0KwkAQQOE+p5hSG3ECJrqIEGJjIQgWCmKxbsZ1YJmR
/VG8vfEKto/H1xUP9QqwMYvWzBugd0JsZ0GdDRCzi/TUmFn8BRHr5RXWW7oVvzGQSIY9pWQ9nTg/
epvJa/wYmEgJYVp1f8ssnH/kcdRZZSd3NXA+9OBUhFwe2/i8bOCh+gJQSwMEFAACAAgAMocdSf1g
Ee3eAAAAUgIAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92
aWRlby1yZWRpcmVjdC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA+/LxFfvy8RXdXgLAAEE9QEAAAQU
AAAApZFBSwNBDIXP9lfk2F6k06rFQYS6PSgoCCIK4iE7m06HjkmZySr+e7PiTfDgHhPyvpe8rPsI
i3NwZ/505ZcnQB/VudVxloAZioZCBymaOL4455bzV7jYUNvHSw+VuLujWjHSU9Jdg0pRyqeHKfc5
zybrf5MTJx2QD0ZPwje8FQ/P9w0EYaag1rOZd8ypG+FSSX/Wv5UYbeLKRHsPJsw0CqxYtBHeptgX
HLb9zkfeDpmG6hq5y1Q8NBh21MEciLE1T2gx7C3VOu6qx0plyGyTgvpfbPvP5Gg2yuHvv38BUEsD
BBQAAgAIADGHHUnCHSUJuwAAAJIBAABMABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4dFVUCQAD7svEV+7L
xFd1eAsAAQT1AQAABBQAAAClkD2LQjEQRet9v2JKbcT4yYZlQZ+FgpZisWwxL5kXg3EiyTzEf2+U
7bbT8sLcc5i76ByMPkHN9HSuxxOga1ZqPgjRYIAkJtElJvHsfpRS4+EvfK2o6dy3hkyyo5zR0TY6
Vy6WpXTSUIqBbLV4HSyYpI7cetclFB/54OVYx/Ml0COtkW2gpKFGcyQLQyDGpjihQXMitvkdOck+
U9pwG1feiP7H1tCrPvpvGdj+Dff8C4VcTLfC5S6EfnUHUEsDBBQAAgAIADKHHUmbSKf53gAAAFIC
AABmABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0
aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQJAAPv
y8RX78vEV3V4CwABBPUBAAAEFAAAAKWRQUsDQQyFz/ZX5NhepNNSi4MIdXtQUBBEFMRDdjadDh2T
MpNV/PdmxZvgwT0m5H0vedn0ERbn4M78au2XK6CP6tz6NEvADEVDoaMUTRxfnHPL+StcbKnt46WH
StzdUa0Y6SnpvkGlKOXTw5T7nGeTzb/JiZMOyAejJ+Eb3omH5/sGgjBTUOvZzDvm1I1wqaQ/699K
jDZxZaKDBxNmGgVWLNoI71LsCw7bfucjb8dMQ3WN3GUqHhoMe+pgDsTYmie0GA6Wah131WOlMmS2
TUH9L7b9Z3IyG+Xw99+/AFBLAwQUAAIACAAyhx1JYCTMpIQAAADAAAAAWQAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1i
bG9ja3MtZXZhbC1zdGRlcnIudHh0VVQJAAPvy8RX78vEV3V4CwABBPUBAAAEFAAAAJ3MsQrCMBCA
4b1PcaMuYiy1GEQodXEQBAcFcYjpGQ/CnSQXxbe3voLrz8/XlQCLFZilbVpbN4DvbEw7i+JdhKQ+
4VOSEoeLMaaeX2G9xVsJGwsZedhjzi7gifTRO8Ug6WNhwiXGadX9LROT/sjjqJPwju9i4XzowQsz
eh3b+LxcpKH6AlBLAwQUAAIACAAzhx1JY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA/LLxFfy
y8RXdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1y
tsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUw
ziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACAA0hx1JY6qsbIIAAACo
AAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFm
ZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAkAA/PLxFfzy8RXdXgLAAEE9QEAAAQU
AAAALY1BCsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5S
CMttnePIku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeS
yp2WOdKOza8xRJuC7GpN1PGavlBLAwQUAAIACAAihx1JPMCeiIQAAAAaAQAANQAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29ycy1wb3N0LXJlZGlyZWN0LTMwMS1zdGRlcnIudHh0VVQJAAPPy8RXz8vE
V3V4CwABBPUBAAAEFAAAAM3MsQrCMBCA4b1PcaMu0ihaG4pQ6uIgCA4K4hDTMwbCnSQXxbc3voXr
z8/XZwfzFtRKLxtdLwDfSalmFtiaAFFsxCdH8eQuStXt+grdFm/ZbTQkpHGPKRmHJy+PwQg6jh8N
E8ohTKv+D2VPXn7kseieaUd31nA+DGCZCK2UVp6XCX6svlBLAwQUAAIACAAqhx1Jht9nf7YAAADc
AQAAOgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdlYnNxbC1hbGxvd2VkLXN0
ZGVyci50eHRVVAkAA9/LxFffy8RXdXgLAAEE9QEAAAQUAAAA5c+/CsJADAbw3afIJC2oJziIt4nW
RURo/TPftakcXJOS3im+va3o5CO45SO/D5Isz4+5hjMZ6xECQ4hCwASOSsEGKRgPJgae3k0ZYwPJ
HIgDGAIUYUlH6sI+NtiprQlGZddCXdHuXVAFRylxSBsWVAeuou/ZA23VS2s6fFeGYVa2bbJYrlLQ
YJk9fEpaf4XWLUrN0hxbpDVVFxRXP5MBT351NpwG435z2mldBHF0g3E6yv7q2xdQSwMEFAACAAgA
KocdSSjZeTawAAAA7gAAADIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJz
cWwtc3RkZXJyLnR4dFVUCQAD38vEV9/LxFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeB7v2JOoVBt
0CHaW5RdIgQtPe/qGMI6I+Nu0b9Po07d5vG+B5NkWZppuJGxDsEz+CAETNBSJdgheePABM/Lh6lC
6CBaA7EHQ4AiLPFMFexCh4M6Gm9UUuaqRHtuvco5SIVTOrCgunAd3MieaOtRWjPgZzIdq6rvo812
F4MGy+zgO9L6J7TuURqWLu2R9lQXKG3ziia8+NfJ9BrMx+Z60jr30tId5vHsDVBLAwQUAAIACAAt
hx1JiqdpRrwAAACSAQAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNl
LWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAkAA+bLxFfmy8RXdXgLAAEE9QEAAAQUAAAApZBBawIx
EIXP3V8xx3oRI3TXDVKw66FCPRYP0sNsMsZgOpFkFum/NxVv3tzjg3nfx7zV4GDegqr1W6PnNdAl
K9VMQzQYIIlJdI5JPLu9UrN28QPLNfWDe9eQSbaUMzr6is6Vi49SOmkoxUC2Wj0PFkzSRT54NyQU
H3nn5djF33Og//SJbAMlDR2aI1mYATH2xQk9mhOxzWPkJN+Z0oYPce2N6Ae2htfqZTLKwPY+3O0v
FHIx/RUuDyFMqitQSwMEFAACAAgALocdSY4V4EaEAAAAwAAAADoAHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L2xvY2FsLXZpZGVvLXNyYy1mcm9tLXJlbW90ZS1zdGRlcnIudHh0VVQJAAPny8RX58vEV3V4
CwABBPUBAAAEFAAAAJ3MsQrCMBCA4b1PcaMuYgq2NohQ6uIgCA4K4hDTawyEO0kuim9vfAXXn5+v
zw7qDlSjV62uG8B3UqpdBLYmQBQb8clRPLmrUstufYPNDu/ZbTUkpPGAKRmHZy+PwQg6jh8NM8oh
zKv+b9mTlx95Krpn2tPEGi7HASwToZXSyvMywY/VF1BLAwQKAAAAAAAmhx1JAAAAAAAAAAAAAAAA
IQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUCQAD2MvEV1/NxFd1eAsAAQT1
AQAABBQAAABQSwMEFAACAAgAJocdSUz1knrvAAAAiQQAAE4AHABodHRwL3Rlc3RzL3NlY3VyaXR5
L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVyci50
eHRVVAkAA9jLxFfYy8RXdXgLAAEE9QEAAAQUAAAA7ZFBSwMxEIXP7q+YY3tZTIstBhHq9qCgIIgo
SA+zyTQNjZOSzCr+exP15kn2pHicYeabee+tBgezU1ALfbLUagb0mpVatiEaDJDEJDrEJJ7dk1Jq
vtjA2RVv47mGEJ0rbciCSXLbts3qx6g19YMrrExyQzmjo+tP6kVZ2msoi4HsGHB9rou89W5IKD7y
g5ddF58PgWp1iWwDJQ0dmh1ZOAZi7MtN6NHsiW0ep+o+U6p+rb0R/Y2tYdIcTUddYPtl3IcuFHIx
vRUuDyFM/xP5U4n8PrJnLxV5V+gl2+q7hsfbDkxkJlPzLjMvGLxt3gFQSwMEFAACAAgAJocdSbJp
AOiDAAAAwAAAAEIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1j
c3MtaW4taWZyYW1lLXN0ZGVyci50eHRVVAkAA9jLxFfYy8RXdXgLAAEE9QEAAAQUAAAAncyxCsIw
EIDhvU9xoy7CVWwxiFDq4iAIDgriENNrPAgXSS6Kb299Bdefn68rHuo1YGNWrcEa6J0R20WIzgZI
6hI9Y1IWf0XEZXODzY7uxW8NZJLhQDlbT2fWR2+VfEwfAzMpIcyr7m+ZhfVHniado+xljAYuxx5c
FCGnU5uelw08VF9QSwMEFAACAAgANocdSSjZeTawAAAA7gAAAD8AHABodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLXN0ZGVyci50eHRVVAkAA/jLxFf4
y8RXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXge79iTqFQbdAh2luUXSIELT3v6hjCOiPjbtG/T6NO
3ebxvgeTZFmaabiRsQ7BM/ggBEzQUiXYIXnjwATPy4epQuggWgOxB0OAIizxTBXsQoeDOhpvVFLm
qkR7br3KOUiFUzqwoLpwHdzInmjrUVoz4GcyHauq76PNdheDBsvs4DvS+ie07lEali7tkfZUFyht
84omvPjXyfQazMfmetI699LSHebx7A1QSwMEFAACAAgAN4cdSSjZeTawAAAA7gAAAEMAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC1zdGRl
cnIudHh0VVQJAAP5y8RX+cvEV3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0i
BC097+oYwjoj427Rv0+jTt3m8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdD
gCIs8UwV7EKHgzoab1RS5qpEe269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA7
0vontO5RGpYu7ZH2VBcobfOKJrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIADiHHUl9QoOV
7wAAAJgEAAA5ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGlu
Zy1zdGRlcnIudHh0VVQJAAP7y8RX+8vEV3V4CwABBPUBAAAEFAAAANWST0sDMRDFz/ZTzFEv0og2
NpRC3R4UFAQRheJhNpmmoXFSklnFb29WvHnSxX/HgZnfm3nzFp2HoymoiTnR5ngC9FyU0ocxWYyQ
xWbapSyB/Uqp8fT0AWZLajs/N1BIrqgU9HSZvK8dZ3Voa6AORnKjxdfBglmaxOvgu4wSEt8F2TTp
cRepr86RXaRsoEG7IQdjIMa2akKLdkvsyhBxkttC+YLXaRmsmA9sA/ujvYNBCuzejXu7C4V8yi+V
y12MP0fWf4IcOEiPvKn0+tvedwP31w3YxEy2/3ftecIY3KD9P5FV/ZtZ1d+eVf0vEvUKUEsDBBQA
AgAIADiHHUmXaaLBFAEAAOcBAAA/ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0ZXIt
Y3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIudHh0VVQJAAP7y8RX+8vEV3V4CwABBPUBAAAEFAAA
AJ1OTU/CQBC98yvmCAfbLlQLG2PSQAwmmpCK0YRwWLbTsnGZrfuB4d+7pOjVaOby3rw3b14ZWhjP
gN3w64LnBeCnY6xItJFCg/XSYmesV9RuGMtm0y3cLnAX2jsODql+QudEi6/K7+fCY2vsicOQgtaj
QfnvZEXKnyOfY7oy9ECN4fC2moM0RCh93EXPUWhVDzbf+UmRT7awXK9XFX4EdB4a1S697y50oeoK
JaojVug6Qw7nQuudkO8cbC/UsI/+yHod8iyHIVprLFyx8WwyHUET8dnE05SNiySLw/g0y7LUoQxW
+VNKhtAFuU8OXf5bvUgX4dDdKxL6pXosKXY8GI9lXccWjoPoAfw8i2fRC8HqP/X4AlBLAwQUAAIA
CABBhx1JYEtmEJEAAAD7AQAARQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wt
ZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4dFVUCQADCczEVwnMxFd1eAsAAQT1AQAA
BBQAAADtjjEOgzAMRXdO4QuEBJZWmWHo0p4BBVMimSSynQpuXzr0Bh2rv76v90LeSqRJY06AzJk9
LJEQVtXire36S+vOdf7qnLOCoXLUw+4iZhjvt3Ewu5CZc6gbJjVf4MHxGVO7bwQUE0IPSPghQPQg
lBVRm/PpX8hyuj3kRAd0rYMFJ62MAhMjSC0ls+LchH/oj0PfUEsDBAoAAAAAACeHHUkAAAAAAAAA
AAAAAAATABwAaHR0cC90ZXN0cy9zdG9yYWdlL1VUCQAD2svEV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAJ4cdSSjZeTawAAAA7gAAAEUAHABodHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJhY2tz
LWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0LXN0ZGVyci50eHRVVAkAA9rLxFfay8RXdXgL
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
HrDMPx9u00vr96a3aXk0p2ecza50NX+Tp+lbzZD2U5dWwMytOdygZDGeesP3kxmVfWKW8fkJC19Q
SqyZtVeHtxDMAhUXgr/lwXijbMW0xAu6O6KrZHd0Vdttqq1Bqg3dgSDVAediEfqRRdM21W5T7TbV
blPtNtVuU+021f7OVNvyXaYGi1VORNkiyF7BEBQKh0lavFj0Oczv+Db7Ui1Ll2g4wpUzRaXxr/sB
Gs+VN6O5E5+L6H8MGYxIFvXGGbnl+7Jmblbjh/45/cp4wtq7p2FExRvdL9r8Am2wmoNU/Pqh8XPU
QYTnI16H04fDNzHv3VHnbeS+e1f+HmyzxB+6yQu8F4jMmyBez3zeRNVLVAn/cVRJeSuqpL4hVSI7
o0ra7qiSvluqpLdUqaVKLVVqqVJLlVqq1FKlliq1VKmlSi1VaqlSS5XqVMloqVJLlVqq1FKlliq1
VKmlSi1VaqlSS5VaqtRSpZYq1amS2VKlliq1VKmlSi1VaqlSS5VaqtRSpZYqtVSppUotVapTJaul
Si1VaqlSS5VaqtRSpZYqtVSppUotVWqpUkuVWqpUp0pYbrlSy5VartRypZYrtVyp5UotV2q5UsuV
Wq7UcqWWKz3hSuLWmOHH9s9Nt1yp5UotV2q5UsuVWq60U64ke6YbsOKPQkOkte11f3B6WVo8OKE5
LbIcS25Kh2RPdw2yVmGRCMzvulzmO6re+JYhmZmuVfSgB0JzVlqyuH+nEF7e07lydd7zlKfxH5vm
UMzvpjyvM2JObF7Z+rX0hZusbENfXofrGZLyOoEtFWmpyItURFm5Pao/HHGGm+9P0/AeXO4VVEQN
iusgI+bl6+6M+p6OVHZ3g5C64xuE8Oo1XB444IT5Id2nnJSFya5J3ertVOdc1YbrP5npGcQAr4f2
l/Ei8ApqseYurpdEKQZDw/B2xCZ0egf1udhrFlF+G7iYlXqNrQiBY0h83ORhnanEtAKI1kh+KL/q
ARSJKGyZ2FpzF9dLEFmgoSC8LUbmvLjzlWBDJC27cUR9d45o7NoRyRNHpDM/TPZ7/y52htvL4P5a
l8EVo5MXE2S/x7+Vs6UqVjdVzVco+shiloZeKXtcXjUrYlglNFr1e+C2V+K6Bur3rlYlLx4U4mXr
n3EtHNZecyGyRXgE5Nf7/S7qF2nwK2Ohq/p+ce+08+33xZ3NVYz6fwBG8eeZmMvnjo2A19FoBGki
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
2wSqDeFQgerA4KKJ+hNNxpJqS6otqbak2pJqS6otqfbzqDZkEJ3q0WyV41m2SrJX0AVVg4Msr/bu
fIzLO1ZmnzdL8zkahnDhniK2hW/SYD3wtfVo7vjrKvu/BQbDyaJlCN+AwaZmOuubCePwnHymjLAe
35M4IXzT9EafN8gGVxwkDts3jR+TDjw9H7FzmHw4fBH3Xh11Xsbuq4oCmYLEH8JkRMEGIfMiiFcr
nxdpapNUQn+eVMIvJZX0F5RKxs6kkrk7qWTtVipZUipJqSSlkpRKUipJqSSlkpRKUipJqSSlkpRK
Uiq1pZItpZKUSlIqSakkpZKUSlIqSakkpZKUSlIqSakkpVJbKjlSKkmpJKWSlEpSKkmpJKWSlEpS
KkmpJKWSlEpSKrWlkiulkpRKUipJqSSlkpRKUipJqSSlkpRKUipJqSSlUlsqIU1qJamVpFaSWklq
JamVpFaSWklqJamVpFaSWklqpSWtxJ8aM/hR/ty01EpSK0mtJLWS1EpSK+3056ZtpPkRrX4UGjJt
t7vqB6fnR6sPTkhJKpbjaqK/Qm1r1LeNlQ1WRGD6OMk539EtYTFkWo7vVhEMwGhJa09mz9+pjNeP
wvxeDe5IXq8Qj0seU1jyABTn2ZLnaU5Mhc0Tr36yfAGX8Tby5Wm4HhEpTzMopYiUIhulCGa3bepH
bquw4pJkCB1IbqlUIVKFPKpCYNT8HJdn9JYEDyuevIrM0HKRJlWIVCFShbyQClE787lzcNe19b2W
LtlmjmrGP0eXqJ0ZfhYPY68lVLaIh4H05wiVRQQIAQRLEIJtmXr4eJcMsnxIWVYsWO5Z1zdhNoFU
yYEZaBEYxjBWbFFgJrHCLcbKR1i4e6yHa4yb8dl2K266tdcSR9vAQ0akLlGCcVmz6EGbsDaHVkgj
AhnJC2lCS7rmAjbSKtfPaVEASfqFPfF77cmzvqrPHsRJSXMa8ntzMEuyST2WnmSt00wsay6q70zU
YW828xFsVUl4ykVeGsSrhR7XXVftNJtkvW7CbHFFex37KHqWB2z8rQCjA5hFhbgFGBSAQpzy6W5N
pW/qB4IvaZlqGTfUzsKJB8F43LXxXkuhbdO6r5tbt96DWeqT4HND9aBVSCyYiuJPPXqxOoW45Pv7
1ymM/+o6hfnn1Smsl6pT2C9Yp3B2Vqdwd1anwNqO6xSLT7lmcTtO4xHnigc5TUOa7xc0v/+2n3X9
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
hAQ8XzW1N+hfSVMuOM7oJD/QKgFj81olx5BHNKV/Bz+hNRrvAweZXe8nmZjHNIpJ7qCLBj3ZQI7J
1pmo50gY8VGyjupkLUsLxhdZewe98kZbv59/3PAbejDqOL1D/1sIzarMdhBqMFCphBfbVBZ1m0Dx
vJWU22C/jbCiW/VMFI4ss5opvc33im7XY9jQzOB4zGnGQACdozGgtWMIGMdjesMXBAZRX3azPO6z
9hxWQOVNbDpSU71Bzv1JccwRWR/Zd2WxHpcHVRIsP/xvuazToK+A2momAMAMy1nzWNo64UQ+O0hy
/ZNcOStiMKDkogEaq0uO1ljOaFz1M8l3ICgufc7y3pHnUu5kH7vfVB7T8vIiT3G8FvxLBVJdeL7J
jwtaNzljuzqwE87CiBI8e5t8XUyT+98DgSmLf5uk0m/6CKORFQTtbrnwljCK/We5DeNGzB9XazVq
wdi2W7X1PVA6klFaWKQSOI83jFPc60w9I6WZMb1fbjhMZFsWSw+HGjVTImBE09xJdqvJhPgaTe8R
c47RqRmxHmKry1gdcU2XlNGfcspbm9bgashBF3FlFyaQN7j5N/PJq1izNMqFnubQWX9HniDa55cT
L0sSxoWk1qtD28EGgAfU+RldLn/I4jgvorzndzOqkAeVgc6I6Sv/A1BLAwQKAAAAAABqhx1JAAAA
AAAAAAAAAAAAJgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvVVQJAANX
zMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABthx1JAAAAAAAAAAAAAAAAKgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL1VUCQADXszEV1/NxFd1eAsAAQT1
AQAABBQAAABQSwMECgAAAAAALYgdSQAAAAAAAAAAAAAAADIAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L1VUCQAD1czEV1/NxFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAdYgdSS1mSJuqQgAADkoBAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1jcmFzaC1sb2cudHh0VVQJ
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
DK6lQnQkQFm4orY0/pZ6GXXST17axu5SQo1FTrsWDF5VcjrdEH7FF5v6efpBo7fu6Z2XTnCHjtuA
wFg65HjpkEu2NCx3njrLg3X03KYezlvJNb2vupTLCNsqot78/HEqnu6SXzbTiPBButKjKySCRjCF
4HaCIsBok2S6OPmFuc/kvjC6kNq1pF766KcJrVw/vsGVwzRYqf661ypwCd8h8KTKyybU0/KOokPQ
4QF7PDGeFAMIx7dwGkcY6kKoVe+AbJ2b3b8X2L+8RXtmi0/0YEKF5BMcS+nnAO1w0lEC0m+0Cdar
zOpa/Nsc9dL2mM7z1WqZt/t6N/1AQe6HcYZL4rWzR+zS9iJYXgqbkZdilUkCFMhHEpWLoL7RcnlR
cmu3womNfx2tVFhtGvYzSNtoShruC/CWr8BbzsDbUUVlLp3ohdyYWNqqgVaoyypT4bIz7N2CQzzT
khR/vKola4mr96+tTJnjuqgZs4wug9k4hLzyEyCUWO9wObXKDjzHy3fee768qPm2ei203jSEPups
fr2jT39snz+NVQWx3FDYytyoIeZEb8rR5GRL0SkguDADiDW9fsm5MjQGm4P75pmf+SbeHEt4fF33
D9VbYcbWVoxLQDP5DxyhklNDcDlHB0rKtOGE6fKDKDmVN1VwXTJuieelPp3tn3ZK81gtqm2JWr2Z
u/99c9jaFFODU4LmRFzxLjgTMIjy5mQA5lVOUWYYPXox95o1TGa0x3Yu9Dg08im70udUzaBzzeyt
uio9rMTDl3hp4FoYXIs1wOT8f3m7kuY4biV956+Y41ygwL4csdoKy2/kR4fn3SZ6o8UQTWooSmP5
179MVHd1oQq9eMywL6RYZVSiCkh8uX2pXLbacWmV+4vR1ekdN628S2AnLJvT9yD++nJfjXrUifs0
F5dpdhFUMxyuChOmGJiQsMid5lwnSdmVZ2qtH3l7prbk7U0rnu7J7GYL9PdPmzf7XfPj6hH0w2+7
xybo553yTEVAKIFj/gGG/0qxhCWTskigdhi/kLI8G/1UxvLsttlsVp3ZSHGA1r9/fniZLGIx5Goy
B+e/Yworfh1a7444ozQA6hxA37OSS5kVIUzGaQVYpj/hH0cE/d3bMlPXRnkFpjYlIWKSK0bUPaai
JRq0MyGIrMsrqevx4a3IS84e+OPGdQz2X+63uyf86rbGqdVgjtgUqMkwAQAIyOOG5WbIDCM04H2b
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
qZKkSpIqSaokqZKkSpIqSaokqZKkSqtUyZBUSVIlSZUkVZJUSVIlSZUkVZJUSVIlSZUkVZJUaZUq
mZIqSaokqZKkSpIqSaokqZKkSpIqSaokqZKkSpIqrVIlS1IlSZUkVZJUSVIlSZUkVZJUSVIlSZUk
VZJUSVKlVaqEkeRKkitJriS5kuRKkitJriS5kuRKkitJriS5kuRKj7hSfmpM95P8c9OSK0muJLmS
5EqSK0mutFWupGHshbz4o9AQaW173R+cXrQWF8Rh9kWWY6GqdEhDoWewtQqLRGB2kPYi36F6ZTKk
GaZnFR70QWjGp5bMz98phE/Phfyg+jduMl0hnqY8lf/YtIBivpryvMyIGbF54dMvpi9gMnkOfXkZ
ridIyssESioiqchPqQhZOj3KB78NeRC5B6l/w4PJgAdhNOBRvG1Osny40plQueH0Sm76BjOg0+D5
i9E8buSZ8ZqjpH4mihhc7UbXPT50xzdwvxB7xQcQ8O54Pqj0NQdJPS3U831m5kJnPuuCz04u+rMT
NjFbd6LUz5DyUFPD6LqQIo72zQ81M/LQu51xqW/vQCZjywcyYfqSo0gtJo4iFQdr/ZXfXwSgdSeX
PQthEBQnvjr3f81PSy1jZDuAUdsBjPoOYBR/YKbbP5VbNnLLRm7ZyC0buWUjt2zklo3cspFbNnLL
Rm7ZyC2bX7llY0oqIqmIpCKSikgqIqmIpCKSikgqIqmIpCKSivx6KmJJKiKpiKQikopIKiKpiKQi
kopIKiKpiKQikor8cipCkKQikopIKiKpiKQikopIKiKpiKQikopIKiKpyK+nIlhSEUlFJBWRVERS
EUlFJBWRVERSEUlFJBWRVOTXUxEiqYikIpKKSCoiqYikIpKKSCoiqYikIpKKSCry66kIlVREUhFJ
RSQVkVREUhFJRSQVkVREUhFJRSQV+fVUZAf+cDPZgT/cTHbgDzcTYwcwmjuA0fr7Y6RoBzDiHcBI
dgDjDhwQQHcgztAdiDN0B+IM3YE4Q3cgztAdiDNsB+IM24E4w3YgzjC6dEBSq9sTRwBnB+MkugN6
+gL8NBT4Uz7gfvZC1BtJF9neiT50yyf6sB0IhkyDzv7GPcGkbbUhKkviKKdeBq1DWaGSFaonK1TT
gbOuG4X/MAmR7yFZoZIVKlmheqMKlVpbzJ2DG9ug+ys1q+fMUZf999Ss1Nocv/AH218pYj3HH6b1
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
OBzkHJDoO5LmaHkgcQsoSUJkO5Fue5rUZFfMlmYTA6DPfH1/t07zmD238TLpiNCnuquInjZoy9Kj
+F3076TAhb8PcACpKWSLI96XW8b2w7oAf2QsIlllx6pYqBSnkO8/QHL5WvJsMBj5/m8bzffxhnMi
GB+OpBKnp0SjFXx5yKmcFJdHlsbqcDSr+kaiDNac7BF/+T8qnnVlcyuxBjgGoCtOie1n2Axrr4NS
J+oqfoXgI2AOTZPeeGqkGFpdIpd6JjE7aBv5XaaMNwZ4wviua/sW6NOe4aSTLHrHotv2aRb5geLL
lEMsUUaLIjFx1TLHQsS+v9no8pHmR/YEG7m+wRl24PnmuW6RXJvJGFm9yz4ownbV5TopYzzA4l2c
kjmeDWbDT6fEjiuG2WVMHfoq2aRudfP/05O66B2HRWNUuujTT1HxnPfNqhhWY1Pb8VzSk5P8ks0N
u8O7Hu00hNJVyNL4qh5AthlZpkV6ceVILKML3y+2BOPD1pHltzIn8i4aTstg255+kgFE0JF0Nest
jt8bTE0+bu8UOz7D/2frQ8Ofz1E63OtyspJ/cfjZR75v6bNpT1vY1M6zsNkMSscwdC3pXaP2i92T
01n6H1BLAwQKAAAAAABhhx1JAAAAAAAAAAAAAAAAJQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9VVAkAA0XMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGGHHUkA
AAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9VVAkAA0XMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGKHHUkAAAAAAAAAAAAA
AABAABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L1VUCQADSMzEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAeYcdSQAA
AAAAAAAAAAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJAAN1zMRXX83EV3V4CwABBPUB
AAAEFAAAAFBLAwQUAAIACABhhx1J6sminPAAAACXBQAAZwAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA0XMxFdFzMRXdXgLAAEE9QEAAAQUAAAA7dNN
SwMxEAbgs/sr5lgvS1O/aBChbg8KCoKIQvEwm0zT0DgpyazivzdRb56kiJc9JmSeZF4yi8HBbA7q
VJ/M9VQBvWWlztoQDQZIYhLtYhLPbqWUOjp+hvNrXscLDSE6V7YhCybJbds2i19TS+oHV6xMcks5
o6ObL/WyFG01lMJAdh+4Pq6LvPZuSCg+8qOXTRdfdoHq6grZBkoaOjQbsjAFYuzLndCj2RLbvF9X
D5lSzWvpjegftoZJc3A45vYPubH9Du6zLxRyMb0Xl4cQRnmU/0L27KWS90UvM1T/t4anuw5MZCZT
56qcecXgbfMBUEsDBBQAAgAIAGGHHUnRJ2Zr7QAAAKQEAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANGzMRXRszEV3V4CwAB
BPUBAAAEFAAAAO2TTUsDQQxAz/ZX5Ggv0qlfdBChbg8VFASRCsVDdjadDp0mZSar+O+dFS/SU1lE
BI8JyUvmDZm2HsYTMBf2fGJHBugtG3N5EsVhhKQu0U6SBvZLY8zp2Qtczahu/bWFTNzcU87oaRF0
XaGSl/Ru4ZjbGIeD6Tfy+ABy4KAd8rHQg/Atr8TC80MFTpjJacmVmleMoekxJZN+rX8n3peKm9K0
sVAaI/UCKyathFfBtwm7bT/9yHYXqYvmyE2kZKFCt6YGRkCMdZkJNbpNsZr7veopU+qczYJTu8cu
/zM4Gv57+wVvP3Uvf5F8yI1/AFBLAwQUAAIACABihx1JQh+QX/EAAABmBgAAbgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAANIzMRXSMzE
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgv0tiqNIhQtwcFBUFEoXiYzU7T0DhTklnFtzcr
3rztKoL0mDDzzZ8vJIvWw/EczKk9mdvJFOgtG3N2FMVhhKQu0U6SBvYrY8x09gznS6pbf2EhEze3
lDN6egy6qVDJS3q3cMhtjOPRojc5cNAOeV/oQfia12Lh6a4CJ8zktOyVmleMoRkwJZN+xb8R70vF
ZWnaWiiNkQaBFZNWwuvg24Rd2k8/8rKL1K2ukJtIyUKFbkMNTIAY6zITanTbYjUPO9VDptQ5Wwan
9hu73M/oYLz39gfefuu97Mn9ybN/Tu7/l/5k/g9QSwMEFAACAAgAY4cdSSUipuDsAAAApAQAAHkA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9hdXRvcGxheS1z
dGRlcnIudHh0VVQJAANJzMRXSczEV3V4CwABBPUBAAAEFAAAAO2TwUoDMRCGz/Yp5mgv0mirNIhQ
twcLFQQRBelhNjtNQ+NMSWYV396seNLT2oMgPSbMfPPnCzNrPZxOwZzbydSOxkBv2ZiLkygOIyR1
iXaSNLB/NsacjVdwOae69VcWMnFzSzmjp8egmwqVvKR3C8fcxjgczH5NDhy0Q94XehBe8FosPN1V
4ISZnJa7UvOKMTTfpkx65dev+EvxvlRcl6athdIYaS+wYtJKeB18m7BL++lHXnaRutMNchMpWajQ
baiBERBjXWZCjW5brOb9XvWQKXXO5sGp/cEu/zM4Gh68/YG3Pvvy38l9dvwDUEsDBBQAAgAIAGSH
HUkV32ng9QAAAGYGAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEt
c3RkZXJyLnR4dFVUCQADS8zEV0vMxFd1eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL9KobWkQ
oW4PCgqCiELxMJudpqFxUpJZxbd3Vjzpqa2gQo8JM9/8+UIybT0cT8CM7HBiB0Og12LM+CgmhxGy
uEzrlCWwnxtjTk6f4GxGdevPLRTi5oZKQU8PQZYVCvmU3ywcchtjvzfdmhw4SIe8U3pIfMWLZOHx
tgKXmMmJ7mnNC8bQfJky2ii/fMa/Tt5rxYU2rSxoY6SdwIJZqsSL4NuMXdoPP+l5HalbXSI3kbKF
Ct2SGhgAMdY6E2p0K7VadjvVfaHcOZsFJ/YbW++nd9Dfe/sFb5u8lz35v5PHf4K8/V/6k/nfAVBL
AwQUAAIACABkhx1J5SwbMewAAACkBAAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9s
b2FkZWRkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADTMzEV0zMxFd1eAsAAQT1AQAABBQA
AADtk8FKAzEQhs/2KeZoL9JYtTaI0G4PCgqCFAXxMJudpqFxUpJZxbd3VjzV09qDIB4TZr7584WZ
tR6Op2DO7OnUjiZAb8WYyVFMDiNkcZm2KUtg/2SMGZ88w8WC6tZfWijEzS2Vgp4egqwrFPIpv1s4
5DbG4WD2Y3LgIB3yXukh8TWvkoXHuwpcYiYneqc1rxhDszPlvFd++Yp/k7zXirk2bSxoY6S9wIJZ
qsSr4NuMXdpPP+llG6k7XSE3kbKFCt2aGhgBMdY6E2p0G7Va9nvVslDunC2CE/uNrf8zOBj+e/sF
b3325a+T++z4B1BLAwQUAAIACABlhx1Jwdxy/ewAAACkBAAAbgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAANNzMRXTczEV3V4CwABBPUB
AAAEFAAAAO2TTUsDMRCGz/ZXzNFepPF7QxHq9qCgIIhYkB5ms9M0NM6UZFbx35sVT3paexDEY8LM
M2+eMLPOw2EF5tSeVHZyDvSajTk7iOIwQlKXaCtJA/snY8zR8RKmc2o6f2EhE7e3lDN6egy6rlHJ
S3qzsM9djOPR7MfkwEF75H2hB+FrXomFxV0NTpjJabkrNS8YQ/tlSjUov37GvxHvS8VladpYKI2R
dgIrJq2FV8F3Cfu0H37keRupP10ht5GShRrdmlqYADE2ZSY06DbFat7tVQ+ZUu9sHpzab+zyP6O9
8b+3X/A2ZF/+OnnIjr8DUEsDBBQAAgAIAGaHHUl8Er1k7AAAAKQEAAB5ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQAD
T8zEV0/MxFd1eAsAAQT1AQAABBQAAADtk01LA0EMQM/2V+RoL+K0ftBBCnV7UFAQiigUD9nZdDp0
mikzWcV/36x481QX0YPHhOQl84bMWg+jCZgLez6x5hTorRhzeRKTwwhZXKZdyhLYL40x47MXuJpT
3fqphULc3FMp6OkpyLpCIZ/yu4VjbmMcDmbfJgcO0iEXSg+Jb3mVLDw/VOASMznRnNa8YgxNjymF
5HP9u+S9Vlxr08aCNkbqBRbMUiVeBd9m7Lb98JO2u0hddIPcRMoWKnRrakDZjLXOhBrdRq2Wfq96
LJQ7Z/PgxH5h6/8Mjob/3n7B20/dy2Fk8yfIh9z4HlBLAwQUAAIACABmhx1J4i+e1OwAAACkBAAA
aQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQAD
UMzEV1DMxFd1eAsAAQT1AQAABBQAAADtk01LAzEQhs/2V8yxvYipXzSI0G4PCgqCiIL0MJudpqFx
UpJZxX/vrPRUT2sPgvSYMPPMmyfMtPUwnoC5sOcTawzQRzHm8jgmhxGyuEyblCWwfzXGnJ4t4GpO
deuvLRTi5p5KQU/PQVYVCvmUPy0MuY1xNJj+mhw4SId8VHpIfMvLZOHloQKXmMmJ3mnNO8bQ7EwZ
98ov2/h3yXutmGnT2oI2RtoLLJilSrwMvs3Ypf32k942kbrTDXITKVuo0K2ogRMgxlpnQo1urVbL
fq96KpQ7Z/PgxP5g6/8MjkYHb3/grc++/Hdynx3/AlBLAwQUAAIACABnhx1JUq958OoAAACkBAAA
dAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnRfbm9hdXRvcGxheS1zdGRl
cnIudHh0VVQJAANRzMRXUczEV3V4CwABBPUBAAAEFAAAAO2TTUsDQQxAz+2vyNFepNP6QQcp1O2h
goIgolA8ZGfT6dBppsxkFf+9WfHmSRcRwWNC8pJ5Qxath8kMzJk9nVkzBXopxpwfx+QwQhaX6ZCy
BPZrY8z05AkullS3fm6hEDc3VAp6egiyrVDIp/xq4YjbGEfDxbfJgYN0yDulh8RXvEkWHm8rcImZ
nGhOa54xhqbHlELysf518l4rLrVpZ0EbI/UCC2apEm+CbzN22777SftDpC5aITeRsoUK3ZYaGAMx
1joTanQ7tVr6veq+UO6cLYMT+4mt/zMcjP69/YK3n7qXv0j+yo2/AVBLAwQUAAIACABohx1J7lKZ
X+8AAAAMBgAAfAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X2Nh
bnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAkAA1PMxFdTzMRXdXgLAAEE9QEAAAQUAAAA7ZRBS0Mx
DIDP7lfk6C5i3aasDGG+HRQUBBEF2SGvL+vKumS0eYr/3j7x5kkf4g47NiRf0q+k89bD2RTMuZ1M
rRkDvWVjLk6iOIyQ1CXaSdLA/sUYMxovYbaguvWXFjJxc0c5o6enoOsKlbykdwvH3MY4HMx/TQ4c
tEM+FHoQvuGVWHi+r8AJMzktsZLzijE0Pbpk0q/xb8X7knFVijYWSmGkXmDFpJXwKvg2YTftpx/Z
7iJ1p2vkJlKyUKFbUwOnQIx16Qk1uk2xmvvd6jFT6pwtglP7jV3eZ3A0PHj7B29/tS/7Qp4cyHtH
/slf+gFQSwMEFAACAAgAaIcdSXjvCfnwAAAAZgYAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAkAA1TMxFdUzMRXdXgLAAEE
9QEAAAQUAAAA7ZTBSgMxEIbP9inm2F7EqK00iNBuDwoKgoiCeJjNTtPQOFOSWcW3Nyue9LRU0MMe
E2a++fOFZNF6OJ6Dmdnp3Jop0Fs25uwwisMISV2inSQN7J+MMSenz3C+orr1FxYycXNDOaOnh6Cb
CpW8pHcLY25jnIwW/5AcOGiHvCv0IHzFa7HweFuBE2ZyWvZKzSvG0HybMuuVX7/iX4v3pWJZmrYW
SmOkvcCKSSvhdfBtwi7tpx952UXqVpfITaRkoUK3oQaOgBjrMhNqdNtiNe93qvtMqXO2Ck7tD3a5
n9HBZPD2B976vJeBPJB/g9znL/0AUEsDBBQAAgAIAGmHHUnJU+fh9QAAAMAGAAB/ABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3Rk
ZXJyLnR4dFVUCQADVszEV1bMxFd1eAsAAQT1AQAABBQAAADtlE1LAzEQhs/2V8zRXsT40dogQt0e
FBQEKQriYTY7TUPjTElmFf+9WelJT7WCFXpMmHnmzROScevhaARmYE9H1gyA3rIxw4MoDiMkdYmW
kjSwfzLGHJ88w/mE6tZfWMjEzS3ljJ4egs4rVPKS3i3scxtjvzfeQnLgoB3yvtCD8DXPxMLjXQVO
mMlp2Ss1rxhD82XKcK38uop/I96XisvStLBQGiNtBFZMWgnPgm8Tdmk//cjLMlK3ukJuIiULFbo5
NXAIxFiXmVCjWxSrebNTTTOlztkkOLXf2OV+env9nbc/8LbOe9mR/zv5bCvIP/9LfzP/B1BLAwQU
AAIACABqhx1JzpdKAvYAAAAMBgAAeAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRl
cl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUCQADV8zEV1fMxFd1eAsAAQT1AQAABBQA
AADtlE1LAzEQQM/2V8zRXsRo/Ugohbo9VFAQRBTEw2x2moamk5LMKv57s+JJT3UVPfSYMPNm5g3J
tHVwpEGdmhNt1DnQS1bq7CBEiwGS2ESbmMSze1RKHY+eYDyjunUTA5m4uaac0dG9l2WFQi6mVwP7
3IYwHEy/TfbspUPeFrqPfMmLaODhpgIbmclKuSsxzxh806NKJvlo/yo6VyIuStLKQEkM1AssmKSK
vPCuTdh1++4nrjeButMcuQmUDFRol9TAIRBjXWpCjXZVrOZ+U91lSp2zmbdivrDLfgZ7n7ejf8ub
/ktv+p952+a97Mg78k+Qt/lL3wBQSwMEFAACAAgAaocdSX/j+XrwAAAADAYAAGUAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUCQADWMzEV1jMxFd1eAsAAQT1
AQAABBQAAADtlE1LAzEQhs/2V8zRXsTULzaIULcHBQVBRKF4mM1O09A4Kcms4r93VryIp7WClz0m
zDzz5gnJvPMwq8Cc2pPKmgrorRhzdhCTwwhZXKZtyhLYL40xR8fPcL6gpvMXFgpxe0uloKfHIOsa
hXzK7xb2uYtxOpn/mhw4SI+8V3pIfM2rZOHprgaXmMmJ7mnNK8bQfp8yOxyUX77i3yTvteJSmzYW
tDHSTmDBLHXiVfBdxj7tp5/0so3Ur66Q20jZQo1uTS0om7HRmdCg26jVstupHgrl3tkiOLE/2Ho/
k73p6O0fvA14LyN5JP8Jechf+gFQSwMEFAACAAgAa4cdSVQGtfHpAAAApAQAAHAAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANazMRX
WszEV3V4CwABBPUBAAAEFAAAAO2TQUtDMQyAz9uvyHG7yDqnsiKD+XZwoCCIKAwPeX1ZV1bT0eYp
/nvzxJsnfYgIHhOSL+lXsmw9TOdgTu3J3E4N0Esx5uwoJocRsrhMh5QlsN8YY45nj3C+orr1CwuF
uLmmUtDTfZBdhUI+5VcLI25jHA+X3yYHDtIhb5UeEq95myw83FTgEjM50ZzWPGMMTY8pheRj/avk
vVZcaNPegjZG6gUWzFIl3gbfZuy2ffeTng6RuugSuYmULVTodtTABIix1plQo9ur1dLvVXeFcuds
FZzYT2z9n+Fg/O/tF7z91L38RfJXbvwNUEsDBBQAAgAIAGyHHUnH6hEH8AAAAAwGAABkABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUCQADW8zEV1vMxFd1eAsA
AQT1AQAABBQAAADtlE1LAzEQhs/2V8zRXsRs/aBBhLo9KCgIIgriYTY7TUPjTElmFf+9WfGkp7WC
lz0mzDzz5gnJovNQzcGc2OO5rSqgt2zM6UEUhxGSukRbSRrYPxljZkfPcLakpvPnFjJxe0M5o6eH
oOsalbykdwv73MU4nSx+TQ4ctEfeFXoQvuKVWHi8rcEJMzkte6XmFWNov02ZDcqvX/GvxftScVGa
NhZKY6SdwIpJa+FV8F3CPu2nH3nZRupXl8htpGShRremFg6BGJsyExp0m2I173aq+0ypd7YMTu0P
drmfyd509PYP3oa8l5E8kv+CPOQv/QBQSwMEFAACAAgAbIcdSdlKH8TsAAAApAQAAG8AHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA1zM
xFdczMRXdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC9i2qo0iFC3BwsVBBEF8TCbnaahcaYk
s4pvb1Z6qqe1B0E8Jsx88+cLM2s9jKZgzu3Z1I7GQO/ZmIuTKA4jJHWJtpI0sH82xownL3A5p7r1
VxYycXNLOaOnx6DrCpW8pA8Lx9zGOBzMfkwOHLRD3hd6EF7wSiw83VXghJmclrtS84YxNHtTJr3y
6y7+UrwvFdelaWOhNEY6CKyYtBJeBd8m7NJ++ZHXbaTudIPcREoWKnRrauAUiLEuM6FGtylW82Gv
esiUOmfz4NR+Y5f/GRwN/739grc++/LXyX12/BNQSwMEFAACAAgAbYcdSaqBL/DvAAAADAYAAGcA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQJAANezMRX
XszEV3V4CwABBPUBAAAEFAAAAO2UQUtDMQyAz+5X5LhdxE43WRFhezsoKAgiCsNDXl/WldVktHmK
/94+8ebJPUSQHRuSL+lX0nnrYTwDM7WTmR1PgN6yMefHURxGSOoS7SRpYL8yxpyePcPFkurWX1rI
xM0t5YyeHoNuKlTykt4tDLmNcTSY700OHLRD3hd6EL7mtVh4uqvACTM5LbGS84oxND26ZNKv8W/E
+5KxKEVbC6UwUi+wYtJKeB18m7Cb9tOPvOwidacr5CZSslCh21ADJ0CMdekJNbptsZr73eohU+qc
LYNT+41d3mdwNDp4+wNvv7UvB/L+5Ok/J//kL/0AUEsDBBQAAgAIAG6HHUlMkSlE8wAAAGYGAABy
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAANgzMRXYMzEV3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgvYqq2NIhQtwcFBUFE
oXiYzU7T0DhTklnFtzcrnhSEWtHLHhNmvvnzhWTWehhNwYztydSOxkAv2ZjJQRSHEZK6RBtJGtgv
jDFHx49wOqe69WcWMnFzTTmjp/ugqwqVvKRXC/vcxjgczH5MDhy0Q94WehC+5KVYeLipwAkzOS17
peYZY2g+TZlslV8/4l+J96XivDStLZTGSDuBFZNWwsvg24Rd2nc/8rSJ1K0ukJtIyUKFbkUNHAIx
1mUm1OjWxWre7VR3mVLnbB6c2i/scj+DvWHv7R+8bfNeenJP/g3yX/2l3+d/A1BLAwQUAAIACABv
hx1Js479MfUAAAAMBgAAaAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wcm9ncmVzcy1z
dGRlcnIudHh0VVQJAANhzMRXYczEV3V4CwABBPUBAAAEFAAAAO2UTUsDMRBAz/ZXzNFexNTPBBHq
9lBBQRCxUDzMZqdpaJyUZFbx35sVT3qqW9FDjwkzb2bekIxbByMN6tScaDM6B3rNSp0dhGgxQBKb
aB2TeHZzpdTR8RNcTKhu3aWBTNzcUs7o6NHLskIhF9ObgX1uQxgOxj8me/bSIe8L3Ue+5kU0MLur
wEZmslLuSswLBt/0qJJJPtu/ic6ViKuStDJQEgP1AgsmqSIvvGsTdt1++InP60DdaYrcBEoGKrRL
auAQiLEuNaFGuypWc7+pHjKlztnEWzHf2GU/g72v29G/5U3/pTf9z7xt8l525B15G+RN/tJ3UEsD
BBQAAgAIAG+HHUnR+yth7QAAAKQEAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3By
b2dyZXNzX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADYszEV2LMxFd1eAsAAQT1AQAABBQAAADt
k01LA0EMhs/2V+TYXsRp/aCDCHV7UFAQRBSkh+xsOh06ZspMVvHfm5Veiqe1B0F6y4TkyZt3yKz1
MJ6CObdnU6sBfRRjLo5jchghi8u0SVkC+1djzOR0AZdzqlt/ZaEQN/dUCnp6DrKqUMin/GlhyG2M
o8Hs1+TAQTrko9JD4lteJgsvDxW4xExONKc17xhDsztlctJLv2zl3yXvteJam9YWtDHSXmDBLFXi
ZfBtxk7ttz/pbROpe90gN5GyhQrdihpQNmOtM6FGt1ZXy35bPRXKnWfz4MT+YOv/DI5GB9/+wLce
9/LvyX1u/AtQSwMEFAACAAgAcIcdScd+IrDvAAAADAYAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfdGltZXVwZGF0ZS1zdGRlcnIudHh0VVQJAANkzMRXZMzEV3V4CwABBPUBAAAEFAAA
AO2Uz0tDMQyAz+6vyHG7iN38wcoYzLeDgoIgoiA75PVlXVlNR5un+N+bJ948uYcIsmND8iX9Srpo
PYynYM7t2dRODNBbMebiOCaHEbK4TLuUJbB/NsZMTlcwW1Ld+rmFQtzcUino6THIpkIhn/K7hSG3
MY4Gi73JgYN0yHulh8TXvE4Wnu4qcImZnGhMc14xhqZHl0LyNf5N8l4zLrVoa0ELI/UCC2apEq+D
bzN20376SS+7SN3pCrmJlC1U6DbUwAkQY609oUa3Vaul360eCuXO2TI4sd/Y+j6Do9HB2x94+619
+f/k8YG8J/knf+kHUEsDBBQAAgAIAHGHHUkT5kgD8QAAAAwGAAB1ABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAANmzMRXZszE
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgvYrpVaRChbg8KCoKIgniYzU7T0DhTklnFtzcr
nvS0FhSkx4SZb/58IZl3HiYzMMf2aGarCdBrNubkIIrDCEldoo0kDewfjTHV9AlOF9R0/sxCJm6v
KWf0dB90VaOSl/RmYZ+7GMej+Y/JgYP2yNtCD8KXvBQLDzc1OGEmp2Wv1LxgDO2XKdWg/PoZ/0q8
LxXnpWltoTRG2gqsmLQWXgbfJezTfviR502kfnWB3EZKFmp0K2rhEIixKTOhQbcuVvN2p7rLlHpn
i+DUfmOX+xntjXfe/sDbkPeyI/8OefrPyUP+0ndQSwMEFAACAAgAcYcdSfYgnGCEAAAAwAAAAGwA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdm9sdW1lY2hhbmdlLXN0ZGVyci50eHRVVAkA
A2bMxFdmzMRXdXgLAAEE9QEAAAQUAAAAncyxCsIwEIDhvU9xoy5CbFUaRCh1cRAEBwVxiOkZD8Kd
JBfFt7e+guvPz9eVAPMWzNIuWls3gO9szGoWxbsISX3CpyQlDhdjTN1cYb3FWwkbCxl52GPOLuCJ
9NE7xSDpY2HCJcZp1f0tE5P+yOOok/CO72LhfOjBCzN6Hdv4vFykofoCUEsDBAoAAAAAAGGHHUkA
AAAAAAAAAAAAAABaABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVVQJAANFzMRX
X83EV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABhhx1JAAAAAAAAAAAAAAAAZAAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9VVAkAA0XMxFdfzcRXdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAGGHHUlidz6nygAAAN0BAAB5ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2ludGVyZmFjZXMvVGV4dFRyYWNrL2FjdGl2ZUN1ZXMtc3RkZXJyLnR4dFVUCQADRczEV0XMxFd1
eAsAAQT1AQAABBQAAAClkDFrwzAQhef6V9yYLMYqJCWiBFJ7SCAdS4fS4SxdFBHlZKQzIf++ctut
U/F4D9737r3d6OBxA2qtVxvdKKBbVuqpDtFggCQm0RCTeHYfSqlm/QnPBz7FrYYQnSsyZMEkua7r
avdvVEf96Aork7xSzujo+EN9KaaLhmIMZOeAp+fayCfvxoTiI797ObfxOgSarj2yDZQ0tGjOZKEB
YuxLJvRoLsQ2z2v1lilNe3XeiP7D1rCoHpazEtj+DvfdC4VcTPfC5TGEZfUFUEsDBBQAAgAIAGGH
HUkcSGwTgwAAAMAAAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRy
YWNrL2FkZEN1ZS1zdGRlcnIudHh0VVQJAANFzMRXRczEV3V4CwABBPUBAAAEFAAAAJ3MsQrCMBCA
4b1PcaMu0hOsNIhQ6uIgCA4K4hDTazwIF0kuim9vfQXXn5+vKx6WLWBjVq2pEeidEdeLEJ0NkNQl
esakLP6KiHVzg82O7sVvDWSS4UA5W09n1kdvlXxMHwMzKSHMq+5vmYX1R54mnaPsZYwGLsceXBQh
p1ObnpcNPFRfUEsDBBQAAgAIAHKHHUmddQUr4gAAAOQDAAB3ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA2jMxFdozMRX
dXgLAAEE9QEAAAQUAAAA7ZHBSgNBDIbP7lPkWC/itLbSQYS6PSgoCCIKxUN2Jp0OHZMyk1V8e2el
N0/aox4DyfeR/1/0AcZzMDM7ndvJFOi9GHN+ksRhgqwu006yRg4rY8zk7AUultT14dJCIb2jUjDQ
rYRQN67q0dZCPUzkm8XvwYpZW+F1DH1GjcJPUTetvO4SDdM1sk+ULbToNuThFIixq07o0G2JfTlE
TvpYKN/wWpbRqf3GtjBqjo4PM/zntjfMfmRgvw/u6y9UCpI/Kpf7lP4aOXLUAflQ6bXbIXcLz/ct
OGEmN/Rdd94wRd98AlBLAwQUAAIACAByhx1JmSOOnIQAAADAAAAAbgAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9uZXR3b3JrU3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAANozMRXaMzEV3V4CwAB
BPUBAAAEFAAAAJ3MPQrCQBBA4T6nmFIbYYxGsogQYmMhCBYKYrFuxnVgmZH9Uby98Qq2j8fXFQ/z
FrAxy9bUDdA7Ia5mQZ0NELOL9NSYWfwFEevFFdZbuhW/MZBIhj2lZD2dOD96m8lr/BiYSAlhWnV/
yyycf+Rx1FllJ3c1cD704FSEXB7b+Lxs4KH6AlBLAwQUAAIACABzhx1JAXLWXOQAAABMBQAAcgAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4
dFVUCQADaszEV2rMxFd1eAsAAQT1AQAABBQAAADtk0FLA0EMhc/ur8ixXsRp1dJBhLo9KCgIIgri
ITuTToeOSZnJKv57Z8WbtxZvewy89z3ySJZ9gOkCzIU9X9jZHOizGDM/SeIwQVaXaSdZI4dXY8zs
7A0uV9T14cpCIb2nUjDQnYRQFdfVtLVQjYl8s9wfrJi1FV7H0GfUKPwcddPK+y7RMN0g+0TZQotu
Qx5OgRi7mgkdui2xL4eEkz4Vyre8llV0av+wLUyao+PDEsbe9kpg/1vcz16oFCR/VS73KY3kkfwf
5MhRB+RjpdcfGu7bwstDC06YyQ1/VTUfmKJvvgFQSwMEFAACAAgAdIcdScuyp1XqAAAApAQAAHIA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX3RydWVfZHVyaW5nX3BhdXNlLXN0ZGVyci50
eHRVVAkAA2vMxFdrzMRXdXgLAAEE9QEAAAQUAAAA7ZNNSwNBDEDP9lfkaC/iWL92EKFuDwoKgohC
8ZCdTadDx6TMZBX/vbOlN0+6eikeE5KXzBsy7TwcVWBO7UllJ+dA79mYs4MoDiMkdYnWkjSwnxtj
JscvcDGjpvOXFjJxe0c5o6enoMsalbykDwv73MU4Hk1/TA4ctEc+FHoQvuGFWHi+r8EJMzktuVLz
hjG0A6Zk0u36t+J9qbgqTSsLpTHSILBi0lp4EXyXsN9240de15H66Bq5jZQs1OiW1MIhEGNTZkKD
blWs5mGvesyUemez4NR+YZf/Ge2N/739irfqz+5l18nfufFPUEsDBAoAAAAAAGKHHUkAAAAAAAAA
AAAAAABqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNl
L1VUCQADSMzEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAYocdSWBHYQe3AAAAkgEAAJEA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2Ut
bW92ZS10by1vdGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQJAANHzMRXR8zEV3V4CwABBPUBAAAE
FAAAAKWQsQoCMQyGZ+8pMuoinqJiEUHPQUFHcRCHXBtrsabS5hDf3ipubpotkP/7yD9vLPQnUI7U
cKJ6A6B7Kstx1weNHqLoSLcQxbE9lHlGR5guqW7sTEEi2VJKaGkTrM0Xixy6KMhBT6aY/w4WjFIF
PjnbRBQXeO/kXIXrzdNrWyEbT1FBhfpMBnpAjHV2Qo36QmzSP3KSXaK45lNYOi3qi62gXbQ6fxnY
fIp7/4VCNsRH5nLjfad4AlBLAwQUAAIACABihx1J/9ecYtoAAACsAgAAjwAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdpdGhpbi1k
b2N1bWVudC1zdGRlcnIudHh0VVQJAANHzMRXR8zEV3V4CwABBPUBAAAEFAAAAM2RwUoDQQyGz/Yp
crSX0rW0pYMIdXtQaEEQURAP2dl0OnSalJms4tubFW8eF8HcEpIvf/6suwBXK6gWbr5y0xnQR6mq
5SSJxwRZfaazZI0cXiuLxRtcb6jpwo2DQtzuqBQM9Bz1UKNSkPzp4JK7lMaj9T8kR47aIx+NHoXv
eS8OXh5q8MJMXq1mPe+YYjtIv/7I30oI1nFrQ0cHNphoEFgxay28j6HL2Kv99kdO50R9dofcJsoO
avQHamEKxNjYTmjQH83VMuyqp0K592wTvbpfbPvP6OIv//4FUEsDBBQAAgAIAGKHHUkwKpA83QAA
AAYDAACPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNl
L3BhdXNlLXJlbW92ZS1mcm9tLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAA0jMxFdIzMRXdXgLAAEE
9QEAAAQUAAAAzZHBSgNBDIbP9ilyrBfpWlrpIELdHiwoCCIWpIfsbDodOiZlJqv49mbFm4ce9tLc
EpIvf/4suwDXC6jmbrZwkynQV6mqm6skHhNk9ZmOkjVyeK8s5lu4XVHThTsHhbh9olIw0FvUfY1K
QfK3gzF3KV2OlmdIjhy1R74YPQqveScONs81eGEmr1aznk9MsR2kX//kP0oI1nFvQwcHNphoEFgx
ay28i6HL2Kv99Uc+jon67AG5TZQd1Oj31MIEiLGxndCgP5irZdhVr4Vy79kqenX/2Paf0cV5/v0U
+QdQSwMEFAACAAgAYocdSbYHIW6EAAAAwAAAAIEAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxh
eWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0ZGVyci50eHRVVAkAA0jMxFdI
zMRXdXgLAAEE9QEAAAQUAAAAncyxCsIwEMbxvU9xoy5iRCsNIpS6OAiCg4I4xPQaD8KdJFfFtze+
gt/45+PXjgEWDZjarho7XwK+szHrWRTvIiT1CZ+SlDhcTVl9g80O72PYWsjI/QFzdgHPpI/OKQZJ
HwsTHmOcVu3fMjHpjzwVnYT3PIiFy7EDL8zotbTyeblIffUFUEsDBBQAAgAIAHSHHUnAo9KWhAAA
AMAAAAB4ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRfcmVmbGVjdHNfbm9uZV9hdXRv
cGxheS1zdGRlcnIudHh0VVQJAANszMRXbMzEV3V4CwABBPUBAAAEFAAAAJ3MPQoCMRBA4X5PMaU2
Qlx/SBBhWRsLQbBQEIuYnY2BMCPJRPH2xivYPh5fVzzMNaiVWWrTasB3Vmo9i+xshCQu4ZOTBPJX
pVS7uMFmh/fitwYy0nDAnK3Hc5BHbwU9p4+BCZUYp033txwoyI88VT0w7WlkA5djD46J0Elt9XnZ
GIbmC1BLAwQUAAIACAB1hx1JyXwQ+OUAAABMBQAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9y
ZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5LXN0ZGVyci50eHRVVAkAA23MxFdtzMRXdXgLAAEE9QEA
AAQUAAAA7dNBS0MxDAfws+9T5KgXsW4qK2OwvR0UFAQRBfGQ12ZdWU1Gm6f47e0Tb9428OKOheT3
pyGZ9wHOJ2Au7cXEjs+APooxV6dJHCbI6jJtJWvk8GKMGY1fYbqkrg8zC4X0jkrBQLcSQq1Y1KaN
hdqYyDfz3WHFrK3wKoY+o0bhp6jrVt62iYbXNbJPlC206NbkodqMXc2EDt2G2Jd9wkkfC+UbXsky
OrW/bAvHzdHJfgmHue2UwP5ncN//QqUg+bO63Kf0d7I5yP9Ijhx1IB+qXm9o2G8Lz/ctOGEmN9xV
rXnHFH3zBVBLAwQUAAIACAB1hx1Jrn0u7+8AAAAMBgAAegAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAANuzMRXbszE
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRCGz/Yp5mgvYtqqNIjQbg8KCoKIgniYzU7T0DhTklnFtzcr
nvS0VvCyx4SZb/58IVm0HiZzMKf2ZG5nBugtG3N2FMVhhKQu0U6SBvZPxpjp7BnOV1S3/sJCJm5u
KGf09BB0U6GSl/Ru4ZDbGMejxa/JgYN2yLtCD8JXvBYLj7cVOGEmp2Wv1LxiDM23KZNe+fUr/rV4
XyqWpWlroTRG2gusmLQSXgffJuzSfvqRl12kbnWJ3ERKFip0G2rgGIixLjOhRrctVvN+p7rPlDpn
q+DU/mCX+xkdjAdv/+Ctz3sZyAP5L8h9/tIPUEsDBBQAAgAIAHaHHUnxXpzJ9AAAAMAGAAB2ABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZGRhdGEtc3RkZXJy
LnR4dFVUCQADcMzEV3DMxFd1eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL2LaVWkQoW4PFioI
Igqlh9nsNA2Nk5LMKr69WfEi3twVethjwsyXf76QzBsLkxmoS30x08UE6D0pdXXmg0EPUUykQ4ji
2K6VUtNiA9cLqhp7oyER1/eUElp6drIrUciG+KHhlBvvx6P5D/L0KMiOnbTIx0x3gZe8DRpeHkow
gZmM5L1c84be1Z3yy3f8VbA2V9zmpr2G3OipE1gwShl462wTsU375Se8Hjy1qzvk2lPUUKLZUQ3n
QIxVPhMqNPtsNXWb6ilRbJ0tnBH9i53vZ3QyHrz14q34t/cykAdyH+S//6V95v8EUEsDBBQAAgAI
AHeHHUlvjqA07AAAAKQEAAB6ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVy
aW5nX2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAkAA3HMxFdxzMRXdXgLAAEE9QEAAAQUAAAA
7ZPBSgMxEIbP9inmaC9i6lZpkELdHhQUBBGF4mE2O01D40xJZhXf3qx40tPagyAeE2a++fOFWXQe
JjMwp3Y6s1UF9JqNOTuK4jBCUpdoJ0kD+5Ux5qR6gvMlNZ2fW8jE7Q3ljJ4egm5qVPKS3iwcchfj
eLT4MTlw0B55V+hB+IrXYuHxtgYnzOS03JWaF4yh/TJlOii/fsa/Fu9LxUVp2loojZH2AismrYXX
wXcJ+7QffuR5F6k/XSK3kZKFGt2GWjgGYmzKTGjQbYvVvN+r7jOl3tkyOLXf2OV/Rgfjf2+/4G3I
vvx18pAdfwdQSwMEFAACAAgAeIcdSVK/msjvAAAADAYAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvcmVhZHlTdGF0ZV9kdXJpbmdfcGxheWluZy1zdGRlcnIudHh0VVQJAANzzMRXc8zEV3V4CwAB
BPUBAAAEFAAAAO2UQUtDMQyAz+5X5LhdxM65sSLCfDsoKAgiCsNDXl/WldVktHmK/94+8ebJPUSQ
HRuSL+lX0kXrYTwHM7VnczuZAr1lY2bHURxGSOoS7SRpYL8yxpxOnuF8SXXrLyxk4uaWckZPj0E3
FSp5Se8WhtzGOBos9iYHDtoh7ws9CF/zWiw83VXghJmclljJecUYmh5dMunX+Dfifcm4LEVbC6Uw
Ui+wYtJKeB18m7Cb9tOPvOwidacr5CZSslCh21ADJ0CMdekJNbptsZr73eohU+qcLYNT+41d3mdw
NDp4+wNvv7Uv/588O5D3JP/kL/0AUEsDBBQAAgAIAHiHHUnBXwv8hAAAABoBAABsABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfaW5pdGlhbC1zdGRlcnIudHh0VVQJAANzzMRXc8zE
V3V4CwABBPUBAAAEFAAAAM3MPQrCQBBA4T6nmFIbYTQasogQYmMhCBYKYrFuxnVgmZH9Uby98Ra2
j8fXFQ/zFnBllq2pG6B3QmxmQZ0NELOL9NSYWfwFERf1FdZbuhW/MZBIhj2lZD2dOD96m8lr/BiY
SAlhWnV/KLNw/pHHUWeVndzVwPnQg1MRcnls4/OygYfqC1BLAwQUAAIACAB4hx1JiBfTotYAAADC
AgAAhAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9zcmNfcmVmbGVjdHNfYXR0cmlidXRlX25vdF9z
b3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUCQADdMzEV3TMxFd1eAsAAQT1AQAABBQAAADVkD9P
wzAQxXc+xY0wpHbaFBJvVSvUgQFFZaoYXPtCrPpPsC98fg6FmQ0JdMv76b2T3t25vlfbTjXtSm62
r3A8nZ57fJ+xEAzu7Ug0fePB2R4Nug/ssUwpFtxr7y/aXBXkxbAwcp5p8aGRDdxizilDVa+7TXsH
A+uvkBLCJ6P9mAqptpVSjBS8KBh0JGeKwHBBa9FWJkXCSCKgdbpCj4GpiCGlm/PP3RkPc5geXdT+
pX/aRT4gJMKdtVyxKNCLgHr9sJI8Na9xFubsf6dk948f3P3VB38CUEsDBAoAAAAAAGKHHUkAAAAA
AAAAAAAAAABVABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUCQADSMzEV1/NxFd1eAsA
AQT1AQAABBQAAABQSwMECgAAAAAAYocdSQAAAAAAAAAAAAAAAGMAHABpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAkAA0jMxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAGKHHUlpWwv6/gAAAOwBAACCABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3Ry
YWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUCQADSMzEV0jMxFd1
eAsAAQT1AQAABBQAAAClkUFPwzAMhc/0V/gIB6qm09Y1QpO27gASSGgT4lDtkKZOWi0kU5wKxK/H
A3HhyHyzJX/v+bkVCzmvZTHL6+XyAHdc0OzWmz2suMC4iYZn9P3o7Q4dKsI9Jglt8VGZfl6XXadN
VRxg44I+QgGDIvDB335iDBDRgA6TTzDL1pOFsoZfOcB3EqLKeU05iElHPIWYWKYVQpQLtvLgTVhJ
cMFaHgMlFRPlef4P1Ba7yTKLMD0hkbL4+EP9ti2BFx32l4DP5prgzWinqNIY/OuYhia8nRyeu3vl
e4dRQqP0gD0HhV51rAmd0kfOly676oUwnvPajpq/85ct4Tq7usm+AFBLAwQUAAIACAB4hx1J+xMZ
9LwAAADsAQAAYwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy92aWRlb18wMDgtc3RkZXJyLnR4dFVU
CQADdMzEV3TMxFd1eAsAAQT1AQAABBQAAAC1kD2LQjEQRWv9FVPuNmJ2/QwiuM9iBS3FQizmJWMM
ZieSzGPx3xvFzk6xvDD3HObOGgdfY1AD3R/r3gjoPys17IRoMEASk+gUk3h2W6XUd28HkznVjZtq
yCQryhkdLaNz5eKnlI4aSjGQbc+eBwsmqSLvvWsSio+88XKo4t8p0DX9IttASUOF5kAWukCMdXFC
jeZIbPMrcpJ1prTgfZx7I/qBreGj3fp8ycD2PtztLxRyMZ0Ll5sQ3km+AFBLAwQUAAIACAB5hx1J
uqFIRYQAAADAAAAAbAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy92aWRlb192b2x1bWVfY2hlY2st
c3RkZXJyLnR4dFVUCQADdczEV3XMxFd1eAsAAQT1AQAABBQAAACdzDEKAjEQQNF+TzGlNsLoqiSI
sKyNhSBYKIhFzM7GQJhIMlG8vfEKtp/P64qDuQJc6aXSrQJ6Z8T1LERrAiSxiZ4xiWd3RcRFe4PN
ju7FbTVk4uFAORtHZy+P3gi5mD4aJlxCmDbd37JnLz/yVHUfec9j1HA59mAjM1mprT4vE/zQfAFQ
SwMECgAAAAAAY4cdSQAAAAAAAAAAAAAAAFIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQJ
AANJzMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABihx1JEU44xhsBAACCBgAAZgAcAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb18wMDEtc3RkZXJyLnR4dFVUCQADSMzEV0jMxFd1
eAsAAQT1AQAABBQAAADtj8FOAjEQhu88xRzhwC6tLCwbNcFVEw5EEg6aELIp3bFUa7uZdjX79pYQ
IwcfQA23fyaT759v3irgM2CTIpsVozHgh2dsmhgnhQEKkrBxFLRVG8YYn2zh8hZ3rbouwKOtl+i9
UPiow74UAZWjroC+bY0Z9Oa/kKytDgfkOtK1swv77Ap4WpUgnbUoQ9zFm3dhdN3bfPETNuVb0AHf
hO+srNYYVuQapNCB18oKY7AGJLoaMj7NM+i/3mt1Izw+7F4i9I7IUbU4YqNLPYC+Pp1EgHTtWpJY
CrnHtHSES6y1+E5Dlk14wsejNFYHF7oGfboyokNKY9kxVfPDf4kEoy0C57OL/ybBWXYqUbqm+xMW
ozw/W5wtzhY/WHwCUEsDBBQAAgAIAGOHHUmRFiiq3gAAANACAABuABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRp
by1lbGVtZW50L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAkAA0nMxFdJzMRXdXgLAAEE
9QEAAAQUAAAA1ZAxTwMxDIV3foVHGK7JlWt7zVa1Qh0Y0KlMFUOauFxUJzkSH7+flGOGCQnk5T37
WfrsY71Ui7WSi5lsli+wPxyeOnwbMTOc3eueefiyO2c7NOjescM8xJBxq4lO2lwUpGlgoS/54qY5
NLKBW0wpJqjq+fq+vYNz0deQEoKi0dTHzKptpRQ9exIZvQ7sTBboT2gt2srEwBhYcI+VHq2LFRL6
aycnc3P8Hr/Y3eiHBxc0PXePm1Bu8JFxY22hzAr0JKCer2ayVF3WShbGRL/Gufpfbw4j0U/8f+LP
n6AfUEsDBAoAAAAAAGCHHUkAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvVVQJAANDzMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABQ
hx1Jwhf1FaIAAABPAgAARgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhl
ZERCL2lkYmZhY3Rvcnlfb3BlbjExLXN0ZGVyci50eHRVVAkAAyfMxFcnzMRXdXgLAAEE9QEAAAQU
AAAA7Y+xCsIwFEX3fsUb28WAiJRs2nYQFbEFO0qavCGQ9oX0pfj51tLJL3BwvHDO5d6qrm+1hAMz
9p6BCZSZ1KARFGjqvUNGAzqGkUIiHuRij6MoFStRtY1osTtbFg3FoPGTCgoormSimzE7GHyhMZ0Y
MUwYRHO/WMZTeSyWwo32Pt3meQYSOiIHa4GUM9IsipRfjpTrwDTagfe7J2dJ9T/xIyfeUEsDBBQA
AgAIAFCHHUm8cWzVmQAAAMUAAABDABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRiaW5kZXhfY291bnQtc3RkZXJyLnR4dFVUCQADKMzEVyjMxFd1eAsAAQT1AQAA
BBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYh
MDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRx
xijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAUIcd
SbxxbNWZAAAAxQAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9pZGJpbmRleF9jb3VudDItc3RkZXJyLnR4dFVUCQADKMzEVyjMxFd1eAsAAQT1AQAABBQAAABd
jrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCBtrMe
DYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU8+YY
L/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAUIcdSbxxbNWZ
AAAAxQAAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJp
bmRleF9jb3VudDMtc3RkZXJyLnR4dFVUCQADKMzEVyjMxFd1eAsAAQT1AQAABBQAAABdjrEKwjAU
Rfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCBtrMeDYIGQ0Pw
yGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU8+YYL/W5WoM7
E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAVYcdSbxxbNWZAAAAxQAA
AEkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3Rz
dG9yZV9jb3VudC1zdGRlcnIudHh0VVQJAAMxzMRXMczEV3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF
937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DI
aMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsT
Qr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vsC1BLAwQUAAIACABUhx1JvHFs1ZkAAADFAAAA
SgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0
b3JlX2NvdW50Mi1zdGRlcnIudHh0VVQJAAMwzMRXMMzEV3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF
937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbSyfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DI
aMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFEcSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsT
Qr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vsC1BLAwQUAAIACABUhx1JBIrpA58AAACKAQAA
SgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0
b3JlX2NvdW50My1zdGRlcnIudHh0VVQJAAMwzMRXMMzEV3V4CwABBPUBAAAEFAAAAN2PsQrCMBRF
937FG+1iQERKNm07iIrYgB0lTd4QSPtC+lL8fGvp5Cc4Xjj3cG/dNPdGwpEZ+8DABNpOejAIGgz1
wSOjBZPiSDETT/Kpx1FUmrWoWyVa7C6OhaIUDX5TSRHFjWzyM+YGi2+0thMjxgmjUI+rYzxXp3IR
bk0Im11R5CChI/KwCqScEbVUpPzpSLkO3CQ38GH/4jyr/+HEB1BLAwQUAAIACABWhx1JvHFs1ZkA
AADFAAAASwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9i
amVjdHN0b3JlX2RlbGV0ZTUtc3RkZXJyLnR4dFVUCQADNMzEVzTMxFd1eAsAAQT1AQAABBQAAABd
jrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5VwYsYhMDCBtrMe
DYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63txYRxxijU8+YY
L/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgAWYcdSbxxbNWZ
AAAAxQAAAE4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJ0
cmFuc2FjdGlvbi1vbmNvbXBsZXRlLXN0ZGVyci50eHRVVAkAAznMxFc5zMRXdXgLAAEE9QEAAAQU
AAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0pfj51tLJ8cI5h9u07aOVcGLGITAw
gbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShFg79VUURxJ5v8grnR4get7cWEccYo
1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzIx8Obi+wLUEsDBBQAAgAIAF2HHUkE
iukDnwAAAIoBAABYABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
dHJhbnNhY3Rpb24tY3JlYXRlX2luX3ZlcnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVUCQADQczEV0HM
xFd1eAsAAQT1AQAABBQAAADdj7EKwjAURfd+xRvtYkBESjZtO4iK2IAdJU3eEEj7QvpS/Hxr6eQn
OF4493Bv3TT3RsKRGfvAwATaTnowCBoM9cEjowWT4kgxE0/yqcdRVJq1qFslWuwujoWiFA1+U0kR
xY1s8jPmBotvtLYTI8YJo1CPq2M8V6dyEW5NCJtdUeQgoSPysAqknBG1VKT86Ui5DtwkN/Bh/+I8
q//hxAdQSwMEFAACAAgAYIcdSbxxbNWZAAAAxQAAAEYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL0luZGV4ZWREQi93cml0ZXItc3RhcnZhdGlvbi1zdGRlcnIudHh0VVQJAANDzMRX
Q8zEV3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4+dbS
yfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DIaMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/VVFE
cSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsTQr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfDm4vs
C1BLAwQKAAAAAAAXiB1JAAAAAAAAAAAAAAAACgAcAGluc3BlY3Rvci9VVAkAA67MxFdfzcRXdXgL
AAEE9QEAAAQUAAAAUEsDBAoAAAAAAEqIHUkAAAAAAAAAAAAAAAATABwAaW5zcGVjdG9yL2RlYnVn
Z2VyL1VUCQADC83EV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAdIcdSdyizqLVCwAAWOEA
AEEAHABpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tZXhjZXB0aW9uLXRocm93LWluLXByb21p
c2Utc3RkZXJyLnR4dFVUCQADa8zEV2vMxFd1eAsAAQT1AQAABBQAAADtnd1v2zgSwN/zVxg+LNAC
iS1RJCUZ2Idcm93rXtEtmtz1YdMHRWYS7cqSVx9pe4X/9xvK8pdkO4pF2ZTNok0dfVAzwxlyKP5M
nkXs75TFyaDzo+sNuwNknHdHLHkM4XP3Uxok3oj12JPjp07CuufdsRM5o7g7+NFl38YRi2MvDODK
Gyjio/PAes5w+InFqZ+8SgMWu86Yvbrt3nZfv4Z7w7s/mZv8GoXpGG5J4BY46AWunw7Zm3A0coLh
ey9glx/fdQf3jh+zyeTs5587IEXgBQ8dfkMnTr2EDTr/jJjz1+/BZfD96pvLxglI0fsYhSMvZmdF
jXADGv1kvOV/kZYLB5+4ePBfJuBPxiV83CJkDYtcXKxaxHXi7QbpzY+8C/JDb8IgTqLUTcKoZC7S
gLkuLtaZikv+rKW2S1/DjkW96U56xyy5gSvDNHnFH3vzGIVfQcm5rKKkM5elY2Pf+d57YMn1VI63
TuKsiBhPj78bMtDj3mNRd6BDoewJfudFzov6F3PGvQcnuoOqexP6PsjJhitFudOjmbY/usn3MYPb
4HTiOT5cGCfwkVsAZOyZlNjINpClaTpCGsjMguHspIUsW7MIhZOaaU4yHeMxVCXjEkWZz8AjJudT
hdE6cd+yu/ThgUW92I28MThcFBfEnZ54xy/WDQqn0siHzzNJuZ27Ay3/DTROR0H2O5vWwezz7IyB
Nsm59Ck3ShoM2T2UMeyCDl+dOPOFYFaluVqGALXM2mrZVLBaWIBaVm21dKQL1osI0Muu74VGdbWC
dHQH8X7e5U0XHNDPu0M2lWfaYunb9KXr9OXtbeiz3ghaFWgnLofDgrr5iUzzMI1cLoc7venCGXtw
rQ+lcgv44QP8lrBvSd4SlhpMfnqqyfRaP7OHAa2zO6tlOrPnveezQb/f/y8/w+I+bwf7V5+v+5/Z
3b+9pP/e+Q4NM++a4r4XxGPGu4z+MK++Ptgukzbu3/H+5yIMLtiss7ngwsW9P2MQIWJj5kA1QaeQ
2TNTnCUsAuX/mBseuiTQY2H4DepNvmTV7v51EzncUFDAfRpkDewHZ8S2mGWvOi95MNXyavgwda2l
ypgd0enky2SyT9/xgs54q8NYC4dBWjscZkmn571kLKFfWEW/QNrkvCS5F3g8efD+x4q+vVq+josP
0Et+p68pv1jqH4GTeE+s44ZD9mX1EcUHaMUHrJNf/vg0Dx+fSW6gDtf0KorCaH2cmi1s18uqPR+u
wzBzGZncZJ2XnLeinbErSa7aGYnamXnOPHbSYrbsOr7/Cw+9adzNf82e+uO2G0ZDL3D8W263W6jW
P7NR6nUuGRw2JlDexoDzQ9eZjV9fFA8wmuAGCMfszaPjBZlw07H8Ur6dH5iN8mcyr5OSC88/6Fxc
13fiOJf1t+v37JsHel8FT14UBiOwXreYt6+9aDJvVF0/jNOI+0ewqwHKaR0M08/F6IzKOv/qh3eO
X0nzjZcu9H/YfIkYDYyiBp+9YJjZd1Xa/HBRsqyPSB69uJ4U+GVSQJhF7MljX9c9dcMd4EixD71+
PjTkRUAIRImXx2ewaJ4Wffos+pb6yczyc2d007xui1LE6d1s6AoN59L9/5jftFTQ2kbx5pEFLxBl
FhfVrn8X3POe5PvihuIQe3EJr+PwiUX3PjxgkEQpm/CRdXzjeP5b5jP+cm024N7a0OnVG7pFB101
zst5uk6aaenIXlq6HSxQauv5KxZBDQVtQumVSpdVc3Mv1b0pL6psAlIygS7MBFbr+zlbin5O11RH
dwodHare0a0bz22I+fKQrjTiAgdrJrnX5YifUsK9MNqqHIvjlSNo2f6VQihOnCSNF45VeqcyZsFw
esQLEhaBb+Re9WVHvzKq+9VmNyo60UXpxcBFU0NEo/X9iI7FB8JSC/YCQUpZ6C+LYlZFmZXfyT38
1evOj9ugA39WXu7cBpPubm6Jq7tl7TSH7ivL16nK+3Sz/QFrydFz2SrzO47M7wufYnHizPTzl8u8
UjiuNNg8wbI0rzKZnH28vL4edK4fw9QfdrK3x537MOrMC+yVWCmrAYKNSzFl1aaSwIdMFvgfpIGf
C3lqMGkfL/9zfdW5vOnkNTiwBgiV9LMb0Q+eDGpc3sCP/OmgrwX/EBJH2Rna+Zo5AQ6xgCNuYlzi
mQ7TMiAJ4ypDTjka8zTDRETHlqETbPdsEyo/Zg88pngoT9PHDKCrT/JgvTbJYxLBgJIlQC1UWy0q
mruyt9OBhrZV7ak/wQPOSv6ny4U3i4B5edfw2QOd0uSNk7iPJZ2R9ERvUQWBDY7RCNbLBd5Vwtrx
akiHtUIiXV8tLID/FMy1GgIoZEzqV5e5O/+Jikkw2qavcXD+czXRXUaFCDkSBjRTcUcONDePNAwI
IfKzoMRULOje/cI8XRZUuhiVitfuJRtbeKq1OVCnilWOVtm8hGqVIjaX/hNzsqO/hXcbQ5ZWCFmF
JSssuQaWLF0Q6S+RvuEgUsztEn+qnSJ0q7d+UgohKSalkKEmpRR3u6UHqhzu2r5m5RHeJ3z7QjMQ
u0EMFZG9E7hSqX9AHOOldsAlOxBxdmg/koHkQDKQQjIUjFthBLORxqWHonENTXwArUwcyQS+GPi4
wReDtBh8oVvBl9qTjKZ0aIohYE0gbEmHpkCCsh1NobuiKebxoinruRSrNVyKaCjFbgxKmUt7MDrF
lo9OEcD+EU0AnWII1ksA/EfqM42Y7k6nGMU8zNimry0FnTIPsQ2TmPSIMJWFrjV4lWWDyTNT04JF
zKhaxGz/fmGdNrgiZ7CaLSFYTF0RLIcjB3RFsCiCRREs9YRHimCRkmAxTnHZOOMI1o2TY+E4Q60c
pwgWEQRLOctqimAxiMQEi6k1iHAYVHaCpVn1zcMSLMtj4Mq9YOmLUBiLM0j7l5Uz5FhXDqt15RTK
0kqUBesnhLJg7bhRFqy3F2XBqFGUhSDpUBasCVDLkA5lgRZlK8qCUUWU5SAv4d3NU7AmbvVbeLfi
hGt+vXSzNSY+gffwb3//cLXB+0j7vC/TpsUeRw7mcaXe0Tg+jG8tvoex/BvFisX2MGkE2zs4skew
dMgeFrBPKqm/8JKui84kBUDRpP62thjtjuzh4ngTb9OXHBzZewbXw/hIcL3aqJ6U5A/G8mN6mCpM
b+9+QU8X05MzUInadFSxUce76Sg2T3fT0dY3OIojW5pHQifIkeH276eDsRwT6ERNoCuOrOYOpHhv
exNhKukWpOXuSyBAhU2Z9yBtVnXrcOzYLtwYny8ocGOaOGPYre/2iCZFt0d01e0pbqyF+5ESORbQ
JIbaj7TF+5ES3P6OhEiyHymhx7Mf6U4ZD95X8k9MlQsujNH+7xAQOb5DQNV3CNQOpbXodnrkdLvZ
YrrdapZul2+hRkwFqCXfQo3YfIZut1pKt2Nb0e2HnHe0T5puJ5qi2/e9f5smD91uH+citZcByJUx
NnB8Le5OtFasVltWRFxqRPTG+Pdc5lzkg4Hw8q1di+36alEBa9eK1osI+Eolrb92LdF3B+FJcfBO
tumrSwHCr8bZ+h7e0o6IiC8oXAONL5lOmvzA0uRn5C2kGPm9+wU6bUZe4ojVFSyvYPnjheUt47Rh
+eNoeRQ1vzTnd4qrr9L2r75K5Vh9larVVxU1X5eaL+fzTYEzlEhKzZe7L4HoOKUyU/PNqn5gUqqU
MFVOAEqzcdgWZ5X2I1NUDmTKVMiUwufbiM+buhzxgxQ+32J83mz/149NLAk+b5Ljwud3Tn3WTPs0
NBwwqcoO11jFbH9QW3L0brbKDhVQXwOoJ+i4gXpitBeoJ7hRoJ7Kt1w8QQLUkm+5eGJsB+oJbilQ
bxEF1B9ySpJIBNTvfc6zUCuVk3+yr+Tf0vY5F/BiO5S+TGwQYRm+pe99QkAu/ZEa962xSvtf5lhy
rCVnqbXk1Kx4Kzdjs+gJbcZGSPtH18vdK9TeQKclLWnTY+xlGfhAm8IPnQocaZvNjrSxfCNtIkCt
+tuEUFOwWvSZkbZZcaTthqMxb0G4k756XfIXq57Hr5Z+oO/s0fq7oSBDcPVZk7P/A1BLAwQUAAIA
CAB1iB1JyWl9A+xMAAD+7AEAOwAcAGluc3BlY3Rvci9kZWJ1Z2dlci9jb21tYW5kLWxpbmUtYXBp
LWV4Y2VwdGlvbi1jcmFzaC1sb2cudHh0VVQJAANdzcRXC83EV3V4CwABBPUBAAAEFAAAAOyda3Pa
SLPHXx8+xbw4lQcnwdFoRjfKx1sYQx7v+raGJFvP1pZKl5GtE0CsEI59Pv3pkQQIGQyysbO7aVfK
wUjq+U/PrX892HMZR56YTJpk+et4OhxfiZEv4n4sBPmdUqqaf9QuneSmfCt8ffgcDaZDMfnw+eL0
01nnw9sPy8/XTnwxSsIgFHFzfSm1zyKehNGoXMBPP/1Ua0e+IP37sVi++JupN3RO6udOEt6KPdAX
Q0HkslSpy/vkJhpltTD+qF2JyTgaTUJ3sGRuckN+V3Xrj9qniYjJyXFZh6bQWu3YScSHfjgsCVEV
qjcUs6FahBpNhTaZsq8yjTQUQ1FqFz2yqm5njkfg0m+EKvvwTyN1yrvUUqw9kDiO4uTBU5TWWqNo
dD+MphPy6VNB45FqHGtmp9NoW7Tb6ByxVoN3W0bDOlYVjSm6woyjWq0mlZPWN+erIL1w5AlyFEVJ
k2i6oihkIrxo5E9qtXbsTG6ET/o3sXD8eRkKtFg4GTuJd0P+nIop+MCLhvvOeDwQ+0MnHDWS9IFa
rXPniXECypfbrPNb2z5qHdutdrvT65F67+Rjr/Px817hftnQ84b7pXN1bp+cf26dnsBDx8dX8ikn
Icqdkn+5ruO7QgS12uczciWuwcSEnAsnhntm15q1RuOQ1KRB2+53fus/6L+5Mar4gmvworF4I5AN
qJDfCTEM/Zc/SNy4+xB/uyO9s/9pX3xZ0fXBx6kTwFu5G5vNLd0G/i1c+dm5dXpeHI6TdhSLTOh/
zWtOlYAbLDAM8qXfTQsi7wizarSSDcEClQUW+bnXbjZ/7n12BqCu6UzaYjCo74Gh0SQBuwarqdXs
em5gKGZmF/wRfet5EXSEZiJfz1u7nl7v3Amvl8C4evt+ScgelMyVGqtWssFN3/MzQ1uVtpD3ZkX5
Wo1XaxVFd31fI4NBOErsySD6ZkPL39ipFDCogkWtokXD0nmQW4TpLb6XTa1YBq3pVS1RlwlyO+xI
K/1o8YC0yHjNqOZrGC3ccHKnnfTl2G02BTh4mojM25/PZm6GOTmJ2s5g0I2doXgrnatSs2ZWK9H3
TFPLSzwZJSIexwK+z0uVBaztVRfu/wovmf0sb5WzU+FHmNydrNOXukL+Uyu+Pg1hRGS3yCpQVdVr
VrU66JrBLZFZ9B7TWyx6N2otpUaVqmI1hb222PdyVms2z2Gd8i+T+CAvNB/Ih2llTFajtGpd9MDN
yhvHURAOhP9Ih7lMbwlH11fCmUSj71dTKud1tVjVL8Jd1JE8qCrVeGD5UNX8PinhDBaabGWaV/Rv
5wVSX1mP/ZumwfdqlFVxka7ppq+xhYt6HqzVU3BGy5OFzqeU7nSUvnEyakcw49wl9bw6HweR6wyW
J5V5JQtmZY/spLbASm4jrZGmM4iBlovd98bjJlVkdXjV6liaurk69fkdx5EHkcso06IafI0WVQMt
WlUtJmVVtDziJd1YLcwwQZdeRRf3YPxTsdB1fHEmA2JYPoIwFn5dFmdZCqnPLqQFMU16wKjkAYe7
jDuLkrIem9qcNJuTG+CU7KeuLDhdyUbOIBXALGiJ4v15M8guYVYU4WkWXStCJL2FjkJTLN58u9ds
/retNJsQHMVOEsX1vUJUyNgKnQYDmVZlmZpPbqPQJ5MEwmXbpvJbOLqNvgpbvm/DKj+NR/a3GGyK
+EC+dyjvkUvSwbMr+Oaw/nwbb95kASOp23aQzxnOwHadiWhyTvdqqlLVLTzwljwyMzt7/fyavy/Y
B1dGnmzl55s9fJ81Z33vsNR5wEPQvRf+aVKuGOAbWmkgcyEs0ylonxk8WFPsrM+q+nLhhgX9Va22
tvquBbH0YlgtVqSCI4pTCoU4pb7yrnTIaFICqypBU6yFhGQ+lUDna3evpqPTKBpnLZI1RRpw83U6
2t1s8MIcoy4tO9J8N5qOfCel86ISIwgCi3kuVwUnaamfzk8vLi7tk57dbp2enpx/tC8+9e3+hd2y
+ydnnav07aNW+xe7++m83T+5OLdt2SZKTdUqFgrky0ihqsdRWg/pbEWzaqpeyZ6vGhrzV9ibpKRF
a6pRTZ8e6EC/BXvwX1pTlddUs6It4fomKVrqjYUXBqEnLVp6TbXSHBlZ/1WMgn2h6xb3iJJOVqpJ
DcokZSsVjWiK6i+M6NxSrBqjFY1wzVULRlRJU0ytaMRQnYISgxmc1mBtqmTEgwlloUSzTN3gNQZD
YRC6/v3A34dvobvOSNpSFuWG5lkwKTmxnGroPBNEH80AyRLyi42hM3KuRZxmguD9yf0kEUP7KwQH
YrAsYalklTsquO2ruIVwTufpKEgzQQXbK2pQsGF6JjhAF8Se3W8Pr2M7S0zJUFWd10ZtVpdncZit
bXsiht+cMLEn4TXMvksyvXfv9ulqLxdtqZ7PfRhBi5k/uQknuU5YoQZCjO0AJv3FDd5NHI2iZtOf
xukYOxhEo2sivxUXv/TaAR28B02zr8EhOSzQs6FVzIIFPJBOLUc2qxVvI0sKembNSnWihqlWzLBB
rVydM+IO04Ahr0JB1nQUQie34drXg/lNEtRC7wyC/rvDN0V5T61Els+onJ4D8SpMXHNdsj9+GiXh
oOsMJuLVa/GeuFE0yDiHVk0MQl2oZS3q8m/hjKE5PAemgWvxXVrEYFVzkjxwfMssVwJ6qDeN5WZO
b1adtMGVqjnKQFMUFeKvuf3W5H7k9Z1JwROyyFnAWtLxdi+NJbPRmq/AmRJV1yomL6GqgapoO5GS
JnAvo3CU1J9jLk/DVsxggk8pLNVZXLkEKJk4exxHd/cHhRlvCmbz0BzKfZ7i989y4Fs5hRYCYjNN
iC4Ws3FWhaWVaHmVZ0LRYDHLb7TdyL9Ps1M0TUdWsuQHvrGwNA8cDD1N91Uy5TLhk7IhNl+0WbMY
cpz3Pl2dtqPRSKQgdBo5/lOCDs59QYaOjBUm13YCbL60pG9viMn9jZkhGW2UV9ptIm7h8mLE3RPx
beiJM7B6GaXuUGl5qdvGLDPch4E8ZQYtrTw7COSXp/9291wk36L465pQyIGOyFUIWX8vNWc9a889
YsdiEk1jT8g3ZJHNP2SfZ7w0R5dll0tSuMZkeGzb572sP9m23LdM6Q3oQUvn5N2MIZPsbAxZZLdj
iMMY+vmkT75Amwxk7lq+AObsL3ZvqwXFlOng07GcxG5s71aGIk+LiS3gDq24gkcjP5Ttad86cejI
zzmkgc6akGDx7jCLBtKp0agc7bqaTt0sk3/pxF/D0fVplDSbY3jdnimCGfn+ZDgepHNwFoi+zbP/
6R6sf+oMXd85kGGRzOMsbxAs3TJL9cxveRjCyLyIPZbL5MHDi9BOjn9ve9IHz41/CsBwmKd8tKo7
1w53NE089J98fSUm00GyhW8zx6X3zd8/kinIRaR7kF49hVof1ucv/0Luazb/NUhb+F/1vSw+/ofU
R4EKHa7o+KneN/+4qr75iw1JVa8Ii3JEyp36v3+7yDQmhLpa5eozzrNgel31V9c89bepVGRBEUCJ
YvF5ktlCC1Wb5jnrjL20yp9UCRwtsMwVlgs/1B/d7VJ51c+qyDJ1n9j/Oe8lDFpINR/b0zq57ejZ
ftbJz1f/OWcgldKCujbt3HYY6Ot0OrfH44u+nX08yaouStmwq7SNl1ZvHG3z5ON7Q1U/n+J4quM+
bSeo4sdHAi44N/P1+QGFz5GSambpwxpbGNYCRjPD35Kgv9a2alrppxx2hKt8d7iq7TbU1iDUBncQ
CHWgc4kB+bcYjDHUxlAbQ20MtTHUxlAbQ+3nhdqwgqiCBfNZLl1ls0X2EpogK7Abxe1BKEbJlzC5
kWn2RbEiXqiRCpf2FFWj6iYNqPFcZb2am/R1tvofQQSTBos6r7wB43JFM9cX44f+mfNVyIC1deuE
A7mcb1HnDdhgVRepPuvjcC9RvTd5n9u53dnH5ioG/uAmFnibPh73EorXfGTuJYrahEr09VBJfSlU
Yi+ISnxnqKTtDpX03aKSjqiEqISohKiEqISohKiEqISohKiEqISohKhURiUDUQlRCVEJUQlRCVEJ
UQlRCVEJUQlRCVEJUamMSiaiEqISohKiEqISohKiEqISohKiEqISohKiUhmVLEQlRCVEJUQlRCVE
JUQlRCVEJUQlRCVEJUSlMipRBVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVnpASvJU2NORr64E748
TFGeI0bkHzV/yl9qR076oThp4/lpmsNcBTkJOQk56YU4idQXY0eeT8v2SuS0zRh1+D+HnEh9rj8/
r1er7A/Teg5KLSsAi3sluNpGgqH5jzcJwFVPyFVxIteedW3jR1NYKlNh8lDGojBVhb5iVBWmeo6/
RV/5AhN3W7ZwrnGzPsMo+Y3peyU+23hcJQRt1MuXm3YcTSZZjPOrPArvoPyuBNLDuS/PxGTi5Kc/
McZBS+l52ZnUvRKMbaFI1xRtcYDmyfFRFlstvfTzuGvp4CddI/X5PemxmTw99FapKAAwh28roBAP
L0Jhkz8QokshVf+qtWa6VtY2HpSS5IXV58c1ZQXmx4i+J96NE+eLyuOErD3h72Cb5rMJ+WmVmHHw
E59e0G5l7jHVbWj3aboeYdqnGdxErvz1yFV7KXLVX5BcjZ2Rq7k7crV2TK6qPO+0+xEPSkJ6xV0+
pFekV9zlw12+nR6U5FqBG4jsOCNYaZvNVUclLa5mb8gschblWErV85Ncy3cNvrLALBDo5pHbIt5h
euVtvBdEEYv8eCii/NAogptouIlG5bnH3f4pogiiCKIIogiiCKIIogiiCKIIogiiCKLIa6IIRxRB
FEEUQRRBFEEUQRRBFEEUQRRBFEEUeX0U0RBFEEUQRRBFEEUQRRBFEEUQRRBFEEUQRV4fRXREEUQR
RBFEEUQRRBFEEUQRRBFEEUQRRJHXRxEDUQRRBFEEUQRRBFEEUQRRBFEEUQRRBFHk9VHERBRBFEEU
QRRBFEEUQRRBFEEUQRRBFEEUeX0UsRBFEEUQRRBFEEUQRRBFEEUQRRBFEEUQRV4dRVSYEQoebHd7
8qDVZH8ch7fQ5Z6AIiwAJ9gTMRDeMoPswJEq2ZkjGdmxI+mSIz3ogEPhh86+I6EsjHYNdYU2g6LO
ZFGroc4UpmdwA3o9PH8xmi+8KVqUwGwbU6ohSDe87omhM76B+6XZKzGAiOFWpKNSL9FKarAPgY8b
3a2qKjetwDNdotzlP+oBXEpXYcukVinS2kaiCDQShNdZy5w5oawrp0YatOymI+q764jGrjuiujyi
wV+tUThMo739WIx8ETcmTzzylnNfkKED3XE4ubYTWNdXjfAtDDGdB3NDYEPTSj3x1ylU7P+Wj3sr
2qCWZylgo91qNq/SSgHS5we8ZbWzk8VymQd1ZqlnblGIGZjqzNmw4GWhEt9ZP9J214/0Xfcj9mBC
c6Z+GO23fs0Ouv8rdx/Zpt1oOvLTbv/QBvP0QLgcptd2Nz+IUPae0BNnYPUySp2hUrXUYbYxywy3
aPYq7TSUGXTFRLbBlnB9kxQt9cbCC4PQk+IsvQRhWesk2US735I/5bNu0axuMs1XHfJRjEQcernt
rM2bzdJpiNTiJfDavhDXNWB0Xi5bnr+RmVes6tPf2rFk7m4sWbseS/LvlM6OpSTAtc6gB2Gycy0w
14u53k3Hjv8SJqfi2vHuVx166tNAUDx2HHO9mOv9nseObxyjyo917Pgmf8Aq9tLHjj8uQVVcjX2f
Y8c3CXMc/XseO75RHoXg+0FIME7yXGW3nBYsdi1fBA6sSLYvBiIRax6QPS2ren5QeeFM8xU3l481
74aDRMTC/xImN30YJdE070tPslYvLixrHsoiib3c7cVisuSIXIRnschLi3iz1OLMski9WKRsdY2v
ONp9U6sbLg2eVQPZ/1aIYXzFMe+bxOie6i2Oec9D6RlpPMgYZ9M4J/WlG9PD3eUp98t58G1Kd5m2
deltGKWu430t5JbpKiU6DMUnHO3+YqfMsx9vN4j/0LtB2uvtBukvtRtkvOBukLmz3SBrZ3kKVdlx
nkLDPAXmKTBPgXkKzFNgngLzFJinwDwF5ikwT4F5CsxTYJ4C8xSYp/iL5Cn0Yp6iJVMMsJqKXgJX
h5iqwFTFplTF8mf+Sksn1xzmYqoCUxWYqvieqYqNY9T5sVIVG/1hWi+dqtgowdC+T6pikzDVc75n
qmKDPJdZFFMV/7hUxcZWl59if61UxaYRYlDNWiQLJOtejGRMnePbalHApGv5vBg8rGEsDQZPKXhP
cwwmXZHt2FwB5Vlg/0JVl9T/UqZnKQFSXzC9M7BdOalxTsuJmm2cqDibUgUvVJk1eYQXKu3xJAOp
L7zZpFwx9irmmZ6XduAvlXbQXjDtoO8s7WDs7pdlzR2nHYzmE5ILFpe/EPstir/+md6fTUNP/NVY
l/lyggNp9rc/s9tLGs2/gUbrr69RIV7sTG6gP3yDoIf8Zur5X2civcRJBKnrvOGGyV6zRkjs3DXJ
fOgoruv4rhABXHCXLsy+4IK37gm/9ATVIeJVZCF+WLhCqe86pkhtTdZdcMezC7LaGlzRPZ4+sfIC
FEJic4VgGW7H1uIRS5fjN68JVR4+YaYX6KonZE2ounRFZ6YRqOkjrFgTZjLXDBRTXuDyAmgNSn6k
2ooLqiwkHBdtwXRmsACidRIHg5JgqqiKTPXG6qo2AVu10+g6hBWItC8/NdPeRM1aJ46jmLQjX2Rv
LR7Va335q43n06Er4vx+XqvVjsKRE9+TkyEEaxPZb0pfCmnkdSl+kXfH0+E4+x3Xfiyg5/300097
5EA95m2N8XZDax2xBlNZt2G2qdY46pht1umqVFNah+TD52gwHYrJh88Xp5/OOh/efli2NlOh3MGq
pVDZRqCi9GYQGOQdDKV8Ne6LSdK7CYf5+KoroKartK1ul7VBiH7UYC1uNMyW1m60jXbr+OhI45Sa
q9Sss7qsS9Uf6gIyXKVrOh5HcVKUxrqK0qLt44YOS3mDHcG3I6VjNDSjdayzFlNpp7uFtKLhJXWq
99BrgaUpUt369bauK+wdPAT/7dN9/g6EtmmHt7uq2jC1DvhQ1Trw6rjTUJl2pOit9hG12Cqhy5b3
g9gZCjlNfvgsYG6AwOJDq3RPQT+0i2mW9VPVEFT2vQcbjqt0045qGIbKG21LAQd3u7zR4prVsDSL
q/qxwTRTXaU7s7hab3atqJNziz3QaThMfahznYMN3ur+P3FX1tzGzWXf9SvymKqvQGNfHrE6nnLG
LjvJfK9ks6lwIlMeUcok8+vnoLmouwnKqhnXTFUqkhsgcC9wl3MuwFYuNhKbiyHCMkNcVJIwr4OV
Rkue7BVBr6/ssXEs6hr/XYi6Vmw1M4nJGW5zYZPxmWesaUpEKMVIkEaSkij32oUi8gsLexj3peU9
9BhJzmm3uXC1+tAMiwzL/+X35fYXMKrd9r/6h5OXsQWrjhYsl4kZT0T0kDkKS5z2ihQludLKshwl
xH3aP1TfetMebSyN2qzZhTR4qGZbfvxeev39p+R/8u8/3j3dvtv98CM3fMHsQmCE06+QM0kaC7UM
BhoROQO1WNYaPr2VQRnHnAqQ8/MAJt68364eELbf5L8e+91x/Y4zLf7o/3p8E+93aHncvznM+tx8
FmSxetqt7/rnnj8vuw+fL/tNdd+sG7pv1pfmjjm/9h2YxK/vsBcUBoRPDT+rIdWNyVqYoigiiYTC
2kBhC7OKJmlutJDGmyt2NBr7qiWN+ow10MLJCw3wcDnzgs9/f/n6eP/lU1/ja/9Qzal+iNXQzRzL
wimiuZWwKFVISJ6TgHjIsIc0KHa5Ux8P764pJ3H3b45T7EcqXLaeBBh1mrWMtXPObC60c87KmXaf
fomHj293t/BxeEr9zPATCloN8paCJ9bIAgWZJkHxRIB2s0C+Uirq1yg4nmUk//jxWPgN6y6F33DL
Z8L/a/9Yxzmb/nhvAoteeyGJchnebhD1QwyBZJOsl9SaYMul6COZ54OP5J43jWQXTIoL2QXTqtts
xGVQeNptH/eLeP/l6/2uut4QrHhVAT+ghY9M+hSBBqzBBmRaiOMABy7ZSI1RInJ+qcXzeG+G96sM
U3Wnh3M/P3eZqGHXy0s17ObgHQiEH1P59O7jwp+CrLGIXgsFmXNKADC2kMRBQoSOETIXQaRQOodo
ZaTqxZWvAr0FRP192+3bXv2p398/PXQIBheSTJRYU32pxKZjzQDdASt3081Qgznh/zUsB6OoEIFo
wEWkPCGA0xCquIjBUamoFfTFrRjWOB4muboZo05jTbS0F+hCaGX6mSZDzH77mz+v5g8/2oVcKHxw
+Ak9HOcyS8MJo4zDpwGFg0QMk0jdRaQKONVrfPo01WiHTo8mkivXkNx180Thf06fluv+fvfPGpXf
vk+Y8BBtBV9wNbiEWFSfEJBbSTiB5NUniuAESNkSi53QISnA8fxyfmxOdS0LNjvfHDSpuEOvtRyl
wvNDKxyHhjDK9Q8/CgXZh2RnqM0CCJooGjVQtBfEWRATybMzIWcppB6hkPrx0WS2466bT4aHS3pC
QNV5fvv58Aqcs2+6RQ2JnIJK6FQwtanpKhjiEcWJcDYWB74Bf33RMT987Xdv37dd8tB9e3DJSyGm
OqxoQ4duHt4HJhqXXx+fKl52gy+6wRdNCVqlhOAOZwTyjJJYzSOBCikn51hiLwf3uHxYTUL6SJNR
t7EE7c7jHlMdO9HQcbM67dOxFrQ7pJLTTkkGY6cDDNSMqsiQwLTh1U+pB22JsJsMmAJOk1mMI0M5
jPfmyshT0TYNE1JmzlT2fff0sH0E9DeHMGioAGCjC1sJdeDCllKI96ISanB8SwuiYfI2cZ88U/7F
Hfh8HL29rKfWm6mIoiW3aMTAbTecdh9fmoRILi0+J6vkKhRgaBpIFNwCXkPo4IFuYlYc8BpLTNmL
kjfGbyvR6DjTRzb0secUe9zI5f5UefyRa1PXninhowqEgrmQmlWJtRFrTz2cwBsqB9511TLOA06l
sauGNE6fDBaOf+JTACcLXSOxDaDTzsMNNZg1tRTAJFgC6JWBACK4tfs+AeU0+VRiZxoSd8uZPQyv
4xtqA0yjs1FmSCPcMZ5V5IRaVdNIroUNwZDPg87WyUALfU0ePA3f1uLUOhW8ay11r1vJ/LeP42TO
jsmcHZN54MwwWcC+S+XhOoHTOthDjkZqo4sTorw6mWOq64ZcW6dK9I3V19TMlHjXTdzQLFh1RDMk
pGxFKrlCKiWRhozQYOTA6FynqBIFBymv4k/jOa6E6e6KD+qlbWixnJdCfl7ubh/u/+zHDEMLrimX
iaho6wbUkpIEDvHRM8SQEA2NrzKg49hXDOjYOpHabBqR0K70KXL8+fN2353cVbHqq5xJh/QImJQi
AnaGm4KrApqLCCOxPFD/csD2Xdff1SPB/ptp88++wwDtblPpbqYKNCzK9vwUgbp//GO52p6jEK8O
YK3n3IMWWVPhFKVg3wWE1UdauKU22OCmRZ3xKNPp+8aiOro+Lep6u/+6fOx+P+dqyReKDobskZCR
HQFArPRwQ4fFVUwQA5DCuAc8Te1cPR3zZjpz3xDHzHnkT/32y3p5B3EGw+QDPrKJaW0iKJisXCVT
ID1lERaYUo4F5Z3KrzHN4+DtnTw2ToXuGinNdZvzFt5/+XK/iw9/f328P60jKJoGtj+sZDbWGQl/
QloxQD1AGEHUQihNRUgbWHaquZKXI08FWzcg51LJWbT62D9s7h++LHdd73fLu7/32/3Y5SnWTQcW
SYocCQ+uRKxDzmCaShaotC6a16xrY5r2Gjc63kw1UA21xkn714usLUMEc3SJeJ2ghGcO8IHCOLgr
PnsYbzbfK2v/2tiKZSttL52bIeP9creuL3E8ii+UrchYDScmClxJALIZuLtgNYqZEAGHChCzU6Be
LyLjycgz0ZYN0VbsFALeb3f98sHf3fbQ8nlhuT1YbozBI/Q454ArtSI2R0eoToHBbEwU5v8owDbE
nKrZrS/V7DpAhsMO3K/+vXuu7GhZQadRrkaPREKsoDNJgE7tkLqLMkkaw4yJ00A7HuVmOpNtTY9A
uxqm//0QWMhyv2Pn7Xe2Uo/qhCbxkEXKRNN6TOIBd7wD+kme5uKSkMzkqSSXA87kaUTabt2fdn21
/7KgZ0EqiffCAzvqSHjdZmFiraEIbD0rjuvMPA1hKsJojOnc601r7s0cCp5t43CcgQ+MHh0POAoL
TiMVEZMlUjwLcHEBmhC8yYUVpnOR/ysLfG6f6tA3YmvfqdP6bbun+nreZ4sCzEbmrEeK3hsPwkXk
UIvySJlWA1GBiOkABG54SdN1nI11M51SX8qxYXS2lj+9e8ajbMFrtVXxyrid87X8pYgSYFNCI2F6
VZDPi2MiJs7lNzjtq5nhOMW+e7nrc/vNVC3W0LVWmSe4Nd7dP63TfXfOYoIfjcVbzhl3lHjuqwlr
mHDgmsSosCXMJplehV7PM7TFPzePpV/TBtdcM2Y2/SQFnCEso1JW96+7xBFKRXKaZCGAbRANiBXw
vayMsCIEL4x5Kfo3kCemtg15akoy83ci//q4vTuU6SsmYIeQJIA0Y4iKsFRAZCxnxHqfiULQp0kW
xWR41WKeJriymKfmsfA9U5fhq+eKn9yv3O8ePy4f9qMDUSEPRqBjkUJ6ThwoOxEI4yAFIMKM13p2
RkRV6btbvP/l8yuq+nOpJypzYxoqGzvbr68P292Ily8+1n9XazpAZT2ACeSzkk0BdPdAQ7AiYku9
tsJpRthMQhf/PUqJH6eyTEBebZrp51r6rWaR7HPf1aOCfzvcGD5TADEgpVrjiDoyrgslOpTKA7hD
qgyGmOATOILJWb6qPDCd6GrJbtRnpk7XUMeak4V2+826P9MqcyYDXnOPTG8BTT3IHQO3gh7AVRQs
Q4RMfZyTu+eRJhIIdRlweinPkOOvL3d8wZ/LbAs2zO+k4gW5IMGLMb9SQD9YzZwVKErSnkc1nX88
zkQA0zec1Ipzra97+rp/FkBSO+xftj4xWxwBv6yxzjESrKREIR5qG7lSSs8WYDTORADrLplZ7/jc
pJ7/fsWJ9igNjeSQraMvVoFrB55tPXgJxKXskK2D1Bhe5FS+ebA3DH49vA3NE8GdaBiPE/2JLvzH
0/JhuXsE5D0fd+hq/wNU9AWOJBnhRkNiuDhxXHmSrGCaWS20bFdK54NOJFrZS9KFh3Ze+frw+elh
s+zq2YVZyHp4YYYjIJ8ZiwWERSZZaxZFkJAz/hktE4waJ9zLFejzyFeKXafmqdR9wwA6ZQcXuKz6
b57f/f+jPtT/FWJJjZhSAq4VVUEbxPcZCLOACcdss1JSJ+HKq0r/z39e4OVDgOd+N1PZG0Gy6/uL
pH13//D5711X4+PhEGn4WQEfUzRyxENgikyEoo44nT3CIyCfcoVKl797+jvLc80Jjs0TXdctJ1iL
9Zwz9912tz2f+7HhvMOy5BO8Vgct6tVHS/ALXJfBOwwwbxgKf9fZ8njMmVCNmLa2q1mF6uzW7z7U
Ys8hrEij6w7AXAIieSFeW3A5UCfiPSC3Av4MzBvBk3xdSHn34RtB5d2HqfBL3hB+Nb8Wef+1393e
naonA+Q7llFScAV52pIiWCFCqEwc9bAgx6MAr8nR2/9xGeXQNhV4xVoCt+8yHO6VDJcJft0NRx+T
ayVZQV7pOJhigeEz2HzIhhPpXcxZ26TsNwz/NPIVonhqnmjQ08aS98zMlhxOVc/glwi+LUzDPbh3
kVjoIhDTWdHE1jtyNkYTeS1HFPHKI4/zNFePPc49poo06ELf2/nB0zPwfPdhOH/iC6gwXH5T9KQO
dZEqZuNQ4URSjQIxKCGuyiRUMTzaXL6RDK4ePg1NU8kbxAsMeU50Pi3/M2K8h+XxUsSQAuRAeWDx
NbG6WnhXhdSLntgEBuPnLpNgaGJaGqQA2boM89Cf4uSb+Rzzixfn9puprJcVug1/Lh6+ff/x4f4W
i/Fludre1fPleflTeaWztJIoP9TpkoHLRloLOMnIwiO40PcqfzZluZmKvm7pc0Y3abu83d3vH7fd
8WuU++nVjsM9PZ6Re6XQREUkYiHBRB0SGFHBc1B5RU2Z1aNeHnciotQNEeWqv3Tbu35y80jB3AU7
XKDCL/XGMPiwUnBbeGqoB36KeBYEyVZakJFEtbavP6588bTST3VYbRo6dGbTH+H33br7+oRQP4KR
/HjGGiOL1CSASJbBEMEHiTUJdFmxYLwNzJRvn3LH1xjMpRRTJRp1003l+VMEB6i0XPePw5XXfXe4
a36o/TjwmgOvUJ5J4zPRw/2ZJJB2OZRLongQDBBD9ipeWP8ibTpNdf0O+kW3iVpKXgLTja3MZDWH
EWeQdSDdh4v0jIEtHVJz/aUefzklVD3SMBZ0XojAgSq0JM7y+refaBLfSM2Tub4J6M6yXEEg5/ab
qYZdQ+1+ng3Tdt996rGN6+GG7vEWFD4J66xbKbVSQQZLFBeponGNSOwpgUeBn3Jlgwgv6jqZ4Mr+
jbtMlegbJunMPDZ0tQr4B9LUUA485EIrFvpAi06/VsP0iM2BR+IBoeBrCGnBISUWzZLIpQTLX9bm
NMEL1chZTqzf3rvUYdnNS/DDTa8xyvzhR7EQB47MhyOSoDKWH1AE3sORWSxgbcycJKO0jzQF7V42
u4spLm6aTUHsZtk41cTD84n5pyWA767rn8/MB0GFBoEfsLaOVVCaiJMA4YlFq2UGM/bmfy7opIw3
lWAi/Mo01n1l54D2/XJ3Oz6LPVxGG35WFM6y4iZLElW9yah4gSpw+myjolwAoIv43SncWKQrYX3U
Y6J0JxqJaL2cn1Es/xzzbz6obK1b8KFsyykTvB7qa1/ooawRDAxNaQ3sWE8vzMsZyf/2Le497jFR
oF9fHrLg4fmWRHwbf/7cuhZeFMNe1J1C9CUim/rtpuAIL6p+78MKjPs9r4VPBJmp0DdU6N1JhT/+
ulufQYCxwy2PGpwoLREQUZHCKsoSJiNMMYe1d6k4zgLgepNJPw84kWPDGw6w4ecrom/LPz//vnzo
1xcYNgYugwIGiUAfCPoUdF7Cn4FtLch+FCWk74RhpzKM5He0vsRzJj8e1rgppl+gqVIA3W+2t8e3
EC2y/2gpZ/+ETiB4B4+Wg0NrLV3izhPN69chHXX1Wp4jlQ6J5BJ1/lVXV04ztHU8tU704ZRe6sPp
/F7s3T3w2f7wfcvx5ZDkfTLwTEBah0xslSWhFENSZskX6CXpq26zDeN/MwaNpbhyEWDUY6onMw09
V7rnl4D+Xz7mt5NLb5qblJIj3tbKAeAUCVwg/gBsOO+FY86/GsHXwV/A8LV5KviqKfjZcZ8et+er
sqLSVGmYT1qBl9pa4IsS0N2HVP+plech5uF65IgXPQ8xm3l5ObMw8++K1TfUPn0dQwT46/HCph6i
oNVYM1oLFyID4FAJuFYMJdQJL5KWIBryNesXZjONF+/QdjMVddWQ380vaw5/dXV5eLPI8d26p+zD
qTscirhSbEoMdEiVUDWod8tCTbtMCeGCyPlVB8eNudrqNDpOdXO2pduycbKRnvrH1K+ebt/f394O
ePrZsh2gpzKMkjzUBTQMJhSEIDxXObIgtWevPcOdz3O9NDnvOdVs1dg1Sdn4ZPdTf7vdPz78PTnb
rSkiS5Ys4F0AryZCqlhv7hSgBaNipDpqw/8fj3anYt9MFeQtrc/n2X/0f3+5PZ9lD3evjLFSWQmo
neFLIkZFQqIMUCMxybmJObVvDY7HmgrB1KUQ9YLU1Kj+m7gra24jR9Lv+i/Q4j4ecXoc6471rtyz
+0pSpK0YWfLq6Gj3r99MFFksVIEUp0fR6xfLqjKQWQDyzg+lyZK46oQqtBWky1mjSnZFCbBLExjb
0sKhySWDTeECV+cD2+cNtPhvXfPMUSs6ItIu2j67mfG9O01rQ7JUrO6jlBHdxEhCLdZoW49N3kUT
qUGwiiyVTOrd99FIzpmE+cyhRi5Vj/UxxYoXco9Fp1aj88y4jp7D+QAuGTYwFGItrFJwyecoohZB
d/fNZKyGBresxYBf6rkJ8SXGqeiJ0UuewYAXEhEKpJQgTa3GA6vAHaPJyYuUAgzb/2DwoCVTix6Z
82rYL0+vzy/5t9X9a10+/3X78DLqA1VBPjTzHPzzaAXoV49d6iAriRE6hRy5ov6iupfeRCc46bzZ
smY6RhwGK5elPBiWQqO6hii5rtVFYBWYTJMlKiuPWZ1AgoDtzjVl0QRn3iwH2Q98RuTD0ynJTC3r
Dx2z7raTR6uO93BGqzlBOZdFeU200ECukUCu1JEwkSmYOA6E/PnT+Z+vq6eXP04ftRlndf7TrNXH
DW9uGeWCXwo5S1zePjw/j26OMhpdLjygLkflwbciiSaMVCTMMwRNkjAYxrNaRXsueTkZtyVLqA5Z
aoj5fPg0ANBsn8r94+pl4nflwIRy1hAaHEh1B/vdMXBOog+m6JJDYPxP+11HHTkj4JAgmf26ZUjT
DkNGHQpc4oePDy/bWhXwPKpON5gKzGtwXbIGIzSDX0uVBJerOJK1B6fc5OANfbfK5TM7qG0hXRDc
8mt0j9/d4sxgV4B/ffnWNkg4UMYyI8uUYlI8gHrOErsZlRQhBFDa5TJj7zD+qUNxeN5Sb3urZW/n
0BM/ttvNN4y8fn2oCK6DhuYYxa+sDNF8pZjgHNRHrFVCwliCaR9ShObOqiyyuMgi7053ojSj9+qM
xY5Qcys7W6Bf13f/+1qbTFk1OwSrEChFaTC7DYkR/baAvXnaU2JYoYZxRPO5iKPD6H0mDk9buldu
SfdauRndR7k5FmQLDT+4ml3BIbwnKQoEHDIYEoBtRrmkINuiG6q2/rxQPj6/aqlcdUi/FWOSC/7D
pmm94UIcau2UMeDZwTeWyYEm8UkSkGmcaGbBgNacpROSdj5qS9Kt7JEkO77ZsShb4+bWQ/0iGGLW
GxKUwJQ4Foqg0GWRGZp51En9q4mc6Rst6duO5qqGREP6t+39j7p5B6u5Ruc8mG2sSBJzwe50cL1s
YQUcS60SepKUvkt3+t9g6lOtWfc/WmZ2HYGz3q2WgCqDrFRVwKih4CKEZCRsCptBqIBFZOEnCTIG
HFRpIgPr9aKmp/3gfYr3DxuiN7Qj4zfb1dhMNuw6eu2u7Wg78EObSGJclIipAI5wZZkCxYoFoqNg
JnswWMOseHM5XkPOzizjDPDLzWIvo8j/vHrYDnXivOYmHW6MAvo1Wl9IcrEal5T4EiRRjAmsy7XO
q/fYGFMSzuml4Y0Zk7cdJu22ir9JET2cmpf752Nz1uGrY4uQxzIojqEtIThGUbwgyTgj4fuDMGRn
q/OnA7eU2V2HMmdn3fIPjy93u0k0BEGmauCSMYkLCFoRW/cSiGfwFyMJPhUhrFKFu7NwCpNxW7rc
UmFw8MKr1G1FnP8V3D5erclqigw/DX6oVKCsCVjtIDEsdp5gZp466avSsDFfGnuCSU5LOnh41dDp
dIf4NZ991O8V8vjYvnNQGgmks+M2gJ7GAmmOBdLJYsdM9tRZHqyj5z7qdNyGLr1bnjVuFqUOn5L/
PCk4wYoNjkAPzO1LN+B4Oe0UmnkF9EeGRQfbAr6rg19zF7k+783hBCeMVXjSkFzBKRYkC9srk7n5
r88HcKG6N22hIKlAVGFfi5CgdoPB8FUWFFS0Nkmmi4PqMPaZmDo8nVHtelTPtdxztfeun44G3zTI
jfU9bl/ngwZQCDwpbNCknmJfvwO1zQMC72E8I8UAPvd7yLmFFXqhsdp+AdlbNzv20q9ej/YSsyjG
PQevyLpAYFmwAhE8bycdJVxJo02wXhXWapbjGO3Udhms4+v1PCr/213FHyvgCg0Gp9jXoopDOlAE
y7FgAvYzfu8kSJA+kqhczI5Fy+VFoevDDCc+/P5pw8J619k/G2k7ZbSb+/0Jra7LUL0ClrKismD3
Fvr3JmIrEth71BVVqHDFGfana6uGZ1ctZT1y9djqWTNSbbFELDK6ItHTZwKhLimx3sHh1OAjg6fo
5RsgJ5cXSxxnb4nWuw7Ri26g/Rl9/vnw8m3bVCbgCYW9MpTiiSGNk0o0JVlMZgfQh8yAkVohCzhX
hsZgS3DvHtcdTuLNksLlcR1faj+F2fY+xRwGbZAfsIRK1hYWXEcHTj3TiHumEayxJOzuhOMCNqLz
HOteiv3TQml41pJqe6Q2aBbjpW2w16oZEJwStCTiULrAmoAPhmgDAbwG5RRlhtEFmMU162yZrV3u
c6G3m05I8VBSUXOVdMjFH6s2pIdd4kGWeGlAtDAQLdaABuXKZQsqVFrl/sWqjekbVy29S1tUWKbm
xWXw/1/valgEZeK+BtBlml0E0QzKVWFJLAMnHDa505zrJCm7UKfWnsuPZ/oxP1615OkezW62QX//
sbnen5pfVg8gH77X0PoxJeCd8kxFMKoCx7omLCsoxRKWTMoigdh5I9K4GP1Uj83stRk3qw43Uhy8
gd+f718mm1gM3QXMgf53TCFKhsP4hyPOKA0+QA4g71nJZZZ1n47TErCsDcVfjkb/h49lJq6N8ooz
ENIhYlsGVup4LDZONGhnQhBZl3cS1+PkM5Jdj+S5tM7lI8K2j9VdFdkwgFtqEMNJ4p7FAhgXC5iF
ksKntBS+xkVwq4exT9S+7J/OqN50qHbrY3/i0z3o7EP2TKC/VwFKszM5MZSlFgFKC2jHbC1JCc4e
HDMXYp53KB5HaklwPRI2rhMr+vvd7fYRj0s19qUaXE+bAjUZVh4sKwR6x952xM8TGnw7m5hj5k1R
VUc+fdrr45bqTe+I3I69res/MEx7hI+oWEypWIENgCpSMCAdpolxxWGNtcIuz6BmB6QZpZ3/dukp
Caf0mQjb9X/cTIJtsJCoJOvfKDcTMyB3HAkVXVPBCbZcO6I1OHawPZXl+f1qp4+UnDDhbnqxObHu
ffT1bq7exiGf9/m+7fcBJFgMcKI1wgibxlNDisXYORw/EBwYvuCqSE0zOLiXV33U8XuMhMnzlpFd
R8XtnOpkK7ulBiBxa48f7CMH3jZoN8xjS4YwwQbzUsIbmcDA8W/XVr5VEtq+c9VSrHtsmIOeGCa+
DkdZXcP8spYxhkykwoJppcCR8gL0hhTgRDGdmJzZO+1AMxqWB0FSMS8DCvev25fHxyEhJKobVf/e
IUEMVARNATY/xX55zPQFo8DWB0eNMwYWhaJvNGON459qyRpfuGoJXZb6SIb4VIsmiC/b38FUAE96
sOiHH1DzZcU54kBazJyIoMFwFB67HoKBz0oly2+nrnHw08uPT69aClWHbHBYWrJ7voL/coPisGZO
jKqyx1pbMg2MgJjBRCT+RH0iimqN93RQ8QZA7bvWLMGDltdlA7WTXC7gRzOcT8tq1R/+bWoIvQgn
lSIs4k0JjoOzxSXsdmd41IGVoMz7CVWfTzCUr1rSO1tOmdEX/r7drCYwV1rrygvIROuzysR4BU6K
9Bp7hzIB8aN4BpHJGvTR+UBX7Wy7DgkrOYKMP3ydm3cmUZbBvCtcYMMwItILUJ1aFF4Cd8z68E7m
3Th5S/Kqs+MVYhcPifYnGOL+t2t3LGbA9ddB2AzOJtghGAYTHtYfPBIRVIbfJJX5DMiiHaalYNtb
tx2blVS8PK2OjR+GHyARrKQFnExGAopbgQjmjoLEQ6M8aaxvZ2fbwSfDtlTtllV7GHA/UBU++ZsZ
Ypp0YOrgZ/DOZjDYsPAqJzB3XQShqxQvmv1FiGlH6q5a+lmPKbVAehgpeUTIcqWvmRmwM+AHTPxY
A2cjapIZ3nDhKDglGevDJcKFgZVMLwNbaiY6pWAmr7TMbHrM7GjH1jiImlqC8YDokpxjx00N3Q0/
YZjXCUR+A6kmXdyjXgrsZI4gsA08UypeajvNZ3w7WXt4s+Vx1+VRHstg/ufLzx/bXn9K8DGCo84I
xRYPUJeIRWY8MTpnx4pW8gLD95/qT2lImbHRETKWH4/4HsGQddARtcZgHup9iskExHgNmiKgkclg
xBfq3cwjm43WUGJljxI9B564e9iNQXKp3CEbyDPTUQZBvECXzCns+ZEMNoxwjMHx9yyfEzbHYVui
9LZH1PYkaN71cPxr5Bz/3/6fYn8xkONgeYBOyUlglkiAD1tAROusdEnAgSp/iRwans047SjIW7Xr
QVx/eXy8h2XsAPcYpXMCy4ro5EDQwk7Caif8JyhsxAvnbzA4Hf8MzvX+jYaD205hmqwgIbM21+FC
06efDThflTfD7QUaBKjILBCFKMaCKw47vBRwmrODP5F77t/PhlrSc6o1dv7elHsldsv1U2I34uFi
imK49+zu4euvk/YVhouHYXps4gVPiID5yxHlW8JPsEGLTpRa7oqSsyqGE0M2ZCm9TDwpdStm/vMv
v8SbsTCLm6GNLzoHtiuosoSY70Im4rKT4MKJIlQuoLsvauHHsU9sJXjSUnu79PY1U+tlZnW4AW5w
jmGbD8o3S6uSgk8oEOJEyICAD6GCFuXMEzWhvFnBfqKjOO6fXbWUbTrk6nljd8T7Ow9XN92M7WR0
kFC64iVEKTk475HgDYFAf8V1gH9KG4PiFI6uuyyI3ZnrhIbtvNlyp5dutuZqfcyg8XkCLflMMW2W
gR0sT6QkJCVrYwoFCxDMvfBuCbQl9BlS11mQCj83GAWrp823u9+2R/g1QQ/A3hGvVwbfgiiJjSUC
4cUFClLFggx4tU2eAZTOBmsJsb1vt6iGw4RGvWF6uNIKlMDenIStBRK9OspcAR2cZIrdJZli+apg
xDghQbVq2NX6TVn4aT/FaVPr8EbDhLhdxre11PP7fO4e/tH0wQ0VAkPcx2bKsQWBMIUFkkbgjYwg
UpgQIEVoNj6+Sx3UxykNjZH88I+rlvxthyfLOqbxJH50zNbYZIJ3wZMcsE6RgtmI9g2hQSRnBI8g
9N9cjzciR80rLfVu16F+Q0/CEdVKEOx/ZWO7D6Ow6c2+nACkjQEDDS82QA8/gF+GSHU2aSl9UCZl
enE5Sp3mTEFKfd6wY/myOQV8i9UspjQAXb3sjZKKODWxgKZoV6DtLKgt1FHYJFHwmj7vPGE0B/C+
NF6W9zba1VnzZ/rGVUv3usOM2xzE5R9HG14N9xlEE+EDE4qYHoLpQmwwcD5ickWkzLyf1Zb80bPb
9aoTJNBrPorpD5+GQvx5Z3nSKUXKJOER74hC290Z6gnXBdapFPCGynuhI00oaGhfq6UTpzdmHhT/
tHp92HybZjLktdI1lYE/VJwE72sC3WGbvshgq3jKsd4y0JRUiekNbJR/ymRs6TmFCzF9p+H6lndk
0K0aofxP3LZHSyxowxAXsMwVoTAsL5oUZWNiGVxY+a637c2v2jtSajrk67E3+3n1PIVYZfveExD4
BnSsJgZsR/S6PSyRgU2nwHGkiBCl1Nxbfe5irMJsmyUJhmICcd02OT9OfYwqw6kx13TIpfAQig1g
qaSKzikFJzZaCc6S9p5SGbkQl/U3P57fC5MXrlqKVx02tmNQdDveSDkKjuFevBAow8Ji5rCCX2PR
BjgP4GwHcAWZsAtXYTZSQwWjy2i34ULPL8ZBvw+R254e729qd9KY0AZjpX5Qaw0HG0wTbxh4n4j+
4RE73wfPqXWKRccvvmipmeqMK9q8d9Xy0NklHO/DFvOKteeDGzX08ddaor1fhpeIcTx20Wh0KsC9
sAXBWEB85hjBJcr8PUyYxps7XeY2vtKy2hGkRmh7aAj5Ld18bm8JSiWDn8kokS5hty8VBIH+SNQs
Be2liiL9VbcEjcQ1PIklyL8zUojxBuifP7bsZrO6n8CdM3m9R71XnnFfskUIaSxPd1gpGeBwR56Y
QRzAoP+fuuIXhDds9xqLjVvbhU58+PoKWvWXx9vt/QzgwEfsnQHnxdMMToMQGZ0GvG08gMGhsFvs
op63+RynEZCmb7XcrF2Pm/nliJsGM+aQh3LuUHyidHESzhtJ2BgqwD2CQ0gRcUVzQ8FgsiGfbzZY
jD8l0/JO8NPqI7L+J//Zx3+fZTUKyAXmsyGBgkeGjdAIGm7BjAJP18lcTPyrshpT+q5aHkSPMTfv
pRiukFwoHIZobcNtDMEjwhwNxAqDSWeKCCuwvWSxEiz75JLMF9xSeUYTAV2rDrF6rolQDKa7pwoy
+PMYSGG2JuB4KdJwRijCyQvLAsFiFsIDNUk7Go15+86jcfTTcnh8peVAdziolzS1V3l9HB0YrPap
aKvK1qRrYMzalBNRGcswPYgsh1cVaAPfOTKmc8zv0lL28aybMz5u2Ou13Fu3mmvUDzc3syZcUzjY
45ZIGbFUz+K971qQIjP40S6G9AaKFYx4wrS6uWkpXC0VoV3RufQ8eshoFP/3XbnDjEGtUKBDdRRz
XLvIEjj6WNqIt71ZUQRBTCQUoy75i6tKcfzTrj4+bXhYdQq97OpoFn74/Os+XvfL9mnz+rREvpU8
YSUhHILII17hVEAVgEfMsAskK8WFu+jm5+NMl7h5fbJa1nZLW9OuzW0vM/nz+/rxoIFrPme4mXaP
plySL9aC+2MQoUjgrWABzhABZ1qogi3FwV+ckpxOdSYfOX3tquVg22FrPUfcr/A/wyjokDA1lHZh
yqOABwSWFzFYMSCipWC3IFarZ5H5ZKKhF9WDTmc4kcaYvNHy0NHUdr2Ry6tKb4YsYgexO+Tiay9x
YBYOjWPorPJESikiZx6MCfrCeNJ+kpPxpP3zloVdbxmOOZh7sFTuJhh7A5Sn9BLcPcIzBlg1CF1H
i8IabMNYpDnMk6jTUZrpNx1UOfilmkP3v6xeno8KtrbY4cfT3uWSbCBMB7BxLPZSCey+FdFZphS2
l5+F7z+OOyNL98gam2t/rL5PLkSh9TISqoSziTjv8Nq9glY0VXihKIjuADTq2TeZjDGbe92ZWy42
1d3T5/vVzzE3MvMrvaktd7AoiCgtKFr1TAViOFjLJhkZrbtoWzXTnNhazTstMz0jcSPnbcGH67hx
Pe4Qd/u5hYnjh15AFgRjIKRNYdg8Xi/WThJTVmDNOoqBwAu7rfGHm850s77r9rUZb7cd3kwPmcb/
Pf4tYaORqZVvyiBo5hDiyQosYxNJdgZxERHYCEvEQUxbw0HyW6Mvbm7FWc60t+LjloOeDN5sbxc3
KWHeZrgk+lruEWYHQEpL7f8Vd2W9beRI+F2/Qi8LJMC2wfsIkIduku31xk5mYicz+2TIkhwLsS2v
JGcm++u3iq2j2WJLzk6AFQYTuZsqFq9iFVlVn+EVDIjDA36urShKRkIhdLQ+vIHl8PMOEbeM9IVr
rF+njZzmGnnLc2c1aF0sl7MmIf3GPFQR3JSUPID9W2i8YuRGh6Ji6CpQ+rryUoMOrY57CST0DxzQ
JOWS1kz4vieZwbvpdNL9spiv5uP5ffV8e4unTjT6CpiTNSKbYDZUBLMrEoR2wTN/W1ZFrWEqWgqi
w77omjqtpS8dWbtM2pZMcKmZ7AN5pVoNjUdNUhEh45G8kJpWFNRkwxug8sorXZSWcoTAtCDwXpTe
5bg+06/LTMYZkX2rR+uESSHmrG/pmghcxbyGVS4Rl7myoIihcYjQ9UoxrsojOVBemimpqXmXIqn5
u827JWz/xM8SbbLIKVGM4LfGP5ys/cOjJAgKTFuGcwqznVGDA2FDUWO6GsooDS/wEIu0D0gwfJ1y
n0lIAw9vOrY6XhovN1JmvW1jLLaglXYSBkKWqMlQh4k7FGLnwmIHw51Ybo4lZEjpdrgbZ7gbd3Eo
L57vV7PV/Hl8t7fNItyaiH748d+YQ4LbGnFdVIPwCPaVdZIVhGEG+BpWgXyRkXWg0kQcdYulDdzH
yrWY86v3cjUab+fl+02AP2gHJ7w5oSdcWU2FXbuBMwS3lkpgOpuAmMZBuuPXxEj7gNkIbwcpq6MM
/4J31M+n1d1iOtppwWSb0aN0AT0JdREcwkUzib4GoSqEooE7JaioD+JtJpRT1jLBffBwGzoFv5js
HBw5qJIiHuWImksnCxW4RJ8Y2I8tRi8TK6wLQoiQ52dHrsOFyXAx4hsurs7qboyhsJwZg8oMZkLm
oMQURmBkbNAO5qiygZuf5NGyqz1hmvH9AzwbLzGSUf06XTxO73O5zD1TGMxrCucDZhA3EjZ7URdM
OMJZcCDO2KFRbVNOOZMsw5na5Yf/WF8+z1bTBE8ZtjgjGNg3ugJVl3viCovpXKlnhNXQqaXs3Hqn
ZFIOMs4cFnbKHRzx/PFbC2uxAZUiykNVeNkO25WBRWkwFwdGhctKkMop1wUiblEZpFXRTP2mm9XB
3T0/fp09fllPj038Mpp+8e7aeuEqKwvB8GJUwC5qmh2nUrWuKhr0i+yATjU9kiMtlDRHkEx3Cs66
ueruRot44QBLo3FXar6gBMH4BoTHrjATCPe6QsOxAjXaWVtSV4f6RTF26yp6VJfmZcq6khnWVc58
2Sro9WX4hihUMUgtonTFUdl8jxEUoHN5jpNVYlJxCwtfaJADEmyDkteUyZ8YIbnhp6fg+m3a7Exe
fivZNhdk+blutJDtkUcTMs+EoB4D5b3BzN4ewew8wmNRAaqCoGC6sb8IK5HItpSPQcrtbaYJfOuy
N54/fb+d3U/bTWiSIRKnjOcYlBT32IDKg6Vl4ZxhjrOyMlz15LFrk0y54ZktQortEc6fo8XOjYdF
Px7tvLJVJQur0WpEMABTmqpgNccZYoNKdqmUSFq5UJnKlexJb96+8QMtu7S1lwVTIN85Fb6ouMLk
F6VQxnijKv8jKc0PpzFPuFYyozYptb06e378Y/bY2t2by6Sgg6QlKSpE4eSlFKD4uRJmIZ7pGhhV
nx+7NrWUjUyiY3y413nj+Qg9h008YIpARI6EEv0VHN7vgyEMWoaghfQGRC8xsj6WLQRJ9nUYvOqw
mdGE1P4BeH3wkqumhsiS1IWXDgx4WZrCctA2iWBeGrDHTEX+6iVXu4X1C8p3CiWt1jeZma1vusax
ny2/loub2WqxhcOJ1kKUWcTXtfAWFlbpOGIuwQ6JyiEnNWzdlWf+SBqbDvVeAKx2oaQVZpSxLs2o
m5fu5n4+/rq1zCL0OLqKewpGce1KvDsNAk/2wUauqJUe9G5aHsyV1ybZYSljMppJN9sjnlvAsEwn
ERZri/fQgkTwWtWIC+cYhi36yuGhQ10EozFgRqiqJi89RNmrqP8sZa9o2rjbTH/bcXdTxyGLavay
TryQ4T8ZsfDwCBlUd0uVokXlYnQFqFsVOiLLIH1FPQ1Cv8g1aVdZ//xp3g9SrjOq1UiN96J7VqNJ
k6ucrOGvLNUnMZUEIQ7UROmLoBleVFAGygiMmEDkHIORxt7/PGVkw0nfuV7zdpA2Z5Jr42S3EYx3
+agbZ13Qb0H8O4p4qAw0xooQVXjYvQljlfaa9OwBmUSCUFOmi2/2TrAn0+XX1fxp2fILtOssETZu
TXUIlHIwSWTl8EwCFqyhyha+FKYKVFfW2ZddxcWKNj2OBfpu5PYKDtI2ZBu2jd6+j56mOxfBbUye
qA3FvBDYo7C9EU6K0lgPdkYNKh86sps628Ftih1WMsrazU0388KvHiMrmhxNTXCLZ6UnvACVDLVn
EIQl4plVoiQGXXf8EZ+M/8UX69ee24Nfk2sDO6YZCTpm3Rjrp/vR6na+eNiKdZwqYDNyQcAg8BpW
I/dKgRYTWCGoUUyU0hFxMClmSjRli2X0hInSW7b+fQ82Md9dI5rmAtZVtNY6gHWPqc/ikQkFtZCW
eKEEvJaMd5xs24QSFiYmx4Ix27Rmo/HddOerhRNOBluyEGF2oXZVRUwaXoDkgjWlqCh9fptrkUpY
mJLMfJvSbrTGBsn+braBzcRkFc0Bo+fGUkR7t7DxBjRNEYoOBo5pWjnm9E/xptkA2P/j7DDA/T/O
0vZl/Gns1HS373fTxc10MV9ufFRiDhCtSCCOgW3NMJ8iwTw+YAxVyjIPU9qF6rDz2YZonuHN25Td
UY7d0fYYDzh+Artqcb1Y7fT96EJrakc5L0C0xoy8sE4qSwrLCLeBGYza6LHUOgQ77GQOPKc738Lx
w9NWLEZ5qILjoHcWPprzpgxFBZ+iJKBBS5ic3HWT7m0ppBXfZI7Cp+PuQcnvv7i1tNrcaMdT1hIk
A7qj0loiXJOSRSmoBt2digq0QUfkizSRHfX8CO7ep7yPeY73rgh/P13Vlxs44eZ61DHFHYjromYo
WyiGojm8NbS6NFRTRdThM+1Is/dyur5M+czcdI64oLfjpI+/rXFSTAOcGRnloGDrCoPkwCYoONrB
FUI4Os4YhqcLcyTo7CehXHzbA0mBBrBMq9TWFwOzBe5v5BK6GdYKw5SGAbFfRGEqSQqCwCjOGROM
yK6fLbmUCXWTYcJuFbWrxfMUfZQ7vtUIN0biNUEFcgd6tqQKjRkJkkcYXcha11wKxNXx/y/P6gzn
adNtblZNujnUPk4fwDj5PJv+sYsfaVawxX3O2VIxzL9VEbwVwDjjSlPMnAnDAkaqk/JFgSP71fS1
sVsubdRk304ayT18aVevXUAwSQzYRid4dLv+hsMqQOH2HvRei0ApFrPfegbDWurAPKXWm8Mpmbb0
+84H1q8HKZsmw/seXMEWQC8mVttcwyfIWsHWZVXhFRuK1dqi6xmCZTsnieNBBv5joH5JTUdg/ZKy
aftuM2tNmW1UYDTK1mby5ppC003WdestbBVgGNESTzqYrAvDuS5UoLz01gYhqs5tSZfeIK1430Qb
2dvu/XjMfdifZKIKlQ+gyiNiCBhuoL/D9AczSQZiVSWY8UeQs9r08z3bLjFImd1X10cjur3Du//P
wwgm9CZ4DlVAMDyC0bDLagfKB3ohGypcwR3Tta7goe5kZGrTSCq/5fvHWPCwi4E+iyDoJ/XscXLx
3U8bBaB11uICOnPLglUIj0wsb46OY3oCMBlK6V/kJdWm3yM/WyXShmTuY0e3uovV9bALk8fIdOzM
QFlZCYn5RRSGPGDmTaZAJRDe1igOe85tU4opM1rmmFG7PFsP82/T9h1AVCq5MBKlbaFcMM3hLUw8
XxjNVfAqGNmDP9Gl12FmX5bekFH3Su/TWTtJ425shVIVzH6DsGE1eu8TzPDsi9pqbQWDXVy9yCu5
Tb8H0ugsn6HxhmfMNni4jS51ny8uf7l//jJ73PhKdL3Ha8NAYwcLjjKPOQdKX5TBh0JyXjoCajPY
7T8nMriHl057MiMSE6voI9jTMTpcNMF88AXnjK9rD6u+qDyeodUgBkoGlpMTJUxdWyupD6uwOYTr
Hv+qvYJJq0TGVxgebo3ri9FqfNe6ahJR7aDo8Qq7G8gutF8MbHHeFyCFecVEUA0WeEuSJVQGg/Dn
OsnXxXwyu904oV0+PzxAM98Af250f78cPowm0+HN9+F8dTddDJ8Wc/TfAxVoNVp8mcYgydXdbLl5
8Sa2azVafr2+nS+un2aTN0PWPIvuINdj+P9q+mZI2g+X01V0WF4/Tys+Rp78NfLwR6tV0AOxPgT6
nD1Os82RWpofq3Pw+WKIyLft/v0IpT483n8f4kzHN/Pb4XY5vBlezVej+7dCg0J2MVxMl7AFPq7e
gvVyQi5eaf2318PlHzDXp5Pr+fPqGnh7foygKlDj5C0lCn72ivG/vR78tpitRjf3UyCCDGxJ0xN5
OvwDXq6mj28pqBjq4pUFstu6qDAn4uIVJWldb8m7V/goqe+En76y8HQwHHwMp2cf3g+v/vVLGPZ8
Pp99vPpUng/e7j59RdevB+50iCDbON2WK3RNyxWmRqt3WHQWzcBDH2psU3QZUe6bXyzzZRkxUBSd
9B6hWByrXrJSNUU/na2ZiAf42aJEvBv42fIJVyWIrkdYSw24aZcNGAdyMWhtMQc/QPXsA3o0H/sY
Bc1qDOazD8eKkneDf14O/3l2NfzSwHJDn43nk24nM6mQ13zRV41H4XTyGotqhc3a/HDzaggrZTSZ
wJ/LIXQN6kqtifZ68C76Hw1LfDL88DjuG2Vo2kV5fv7BHW4YJxoWyqboq9HkYfb4ur8021C9Pi8/
noZOi9qDC0V/tGkXoIksvg+vRl+GTLD+KYZMtIvag5OxXVTSfqpQtNmoh6fnl+cHuowh1ctfz2er
6fAJJ088rj1Q9Kp074ann8qPvp8oJsy8GFyuYIkfm7aMnfALEKjXcSDKq3BgkWss+tv0BpfDRezq
vqI2Ur2+9uVVeYwBilP8+hr7qfp0dn519v6yt68MTMTr67OL8jQcIStZLHp+9v5d8LB4DnSAbHi9
Cr9fHWEVU+Rj0U/vz9wHf5gFKWFmPUQ5P0R9+EAHcKS6lpwPzQTr/aCU+QFBf/Xhqjw/KrvA+Dxt
iv59CEv2eZmssmZ1bSYB7HOwLQ3+C1BLAwQUAAIACABKiB1JqZn+ctIDAABfCwAAOAAcAGluc3Bl
Y3Rvci9kZWJ1Z2dlci9jb21tYW5kLWxpbmUtYXBpLWV4Y2VwdGlvbi1zdGRlcnIudHh0VVQJAAML
zcRXC83EV3V4CwABBPUBAAAEFAAAANVW227jNhB911fooQjkIKh1v8Ew4Mr2wruOHURK8khQJLVW
VxENinayf19S9yyS7BYpWvRFNsnDM2c4wxku4nh1m2z2O3W92GxXy1DNq4gUhTZRpve0OD2SarqE
HE5XD/H0gaRfcj6N6YkhMv0MzzBGLD/yiDIyZaeS549iOo4+x/ewOJFNWeQlqX4/aI6uT9RQFUth
KD6CX71sBzUyDGFrVUW0rLhiqKqqPxt6ZntW5unqQ7KOGKwOitkuECszrSxQ32WxOjBKBYnfgJMD
o08xokeB5/L/6hmRI89pqdXrq2eCYg45ubx6wT5R7I7Os32McLP6SxSDzYsfSZ3OU91NMXbUQpwZ
B1VBn8AR8gOo+RW3R3mBa2ctipScfVe8Yc1ILaKeH1dyPqFDgBS/k05sx/Zgq2GTRBSLYyBC74mT
Rvz9daf6hlFOI1gUawYfyeVECToWjHzfaVk2JSfsyIj49kxy05unuU//JIh3YwlNvh/JaCjzrYng
D6fVjhbs6zaveAuZKIbeynIdzw5IA0LvSRiz/RMCjEGAo1v/toAreT3CcAe/EXzD2aw12qbkXAo0
B4FuljYkR0azvCD4nWDd1JC8/HpLYEXL/0y+Vcs3HDsLsJAv6pAsOZL2GualuF0E4l78/8ozu/HM
dVwfO9bgWYwOBJ+EDwsksf3NWp/KemJTRlRcvGeutSo+FTSFxcu71Wsb0cpysKq5BEvLIYU4g5DA
MX8uROsRS4pEmyhrFndg8Q3r77C8rcxrOG0kUtcgA+dyf52IhiOqTpYzgkXHMvzWPLRTy4YDtMmQ
Gl2FYXWAAl+P1nJnXcFKKHueEfQMyAmMNxkIjweSkRPD5OUkDH8DehiKos8gp0yb9H3J1EdWHKye
aY7ViuMwBMCQn7w8028EyHkgKuuJleCJwaNgmsm5ucTI+jL7sL6LufZxjgsRJtMYfLIz9MKdrE3a
7v/HZV+N+MU5UCRP+OO086smFtpk/jJwimm2WWgTEvhwZL5zbvb6zi7kXQnDaSBa9ZBYQwEbyRlS
2rSHfY4eDPt4n74aANH69lRuKT02zjReiIZt1rfay7IssFBqm8RWa/Ddbrvf34BNDKLFdrvZfQL7
uwQke7AAyeZ6dVtP/7GIvoD13S6Sz0MAFNMdk4lnmaWOLC9pbVsxvQGFTc+x8CuoSjH9EZmbueJ1
NoKJH8UMxgiSYl8dr8dHgvIsR4rVdn9MXDewkSreoQmpuDZEKIVVjkDFmSj3MyROeZw9cgw4gzmv
6rX566lVL6nzvuVbRm/V0U3cWRUWYsLOhEmVInx/AVBLAwQKAAAAAAAXiB1JAAAAAAAAAAAAAAAA
FQAcAGluc3BlY3Rvci91bml0LXRlc3RzL1VUCQADrszEV1/NxFd1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAdYgdSQKPjPv4VgAAkJUBADMAHABpbnNwZWN0b3IvdW5pdC10ZXN0cy9hc3luYy10ZXN0
LXN1aXRlLWNyYXNoLWxvZy50eHRVVAkAA13NxFeuzMRXdXgLAAEE9QEAAAQUAAAA7F1bc9u4kn5e
/go+bOXISWTjxmt5fUqWpYxnfBtLSabO1BSLFzDmsSRqSMqJ92F/+zZASiJpKRZtJ2cudKUcigAb
XzeA7v5AyLhKYp+nqa1Wf04W0/k1nwU8GSecq79i+EG/KVdudlOvCj8HH+LJYsrTgw+XZ+/PBwev
D6rPK6cBn2VRGPHE3t6K8oEnaRTP6g0gpR8HXB3fz3m16BdT7+pM7Vy4WXTH9wBdAs2oVzWVru6z
m3gmdUDWb8o1T+fxLI28SUVceqP+SnQof5/yRD09qaPQEFaUEzfjB+NoWgNCENa7yOwSS8W6rVk2
tfYNg6pdZCCkXI7UTZqdu74KRb+oGO3DP03tYDbEFrL2AOI8TrIHT2Gs9Gbx7H4aL1L1/fsSxmNi
nGjmYNDtW3jYHRzTXpcNe0bXOiFIo0hH1DhWFEUgV3uf3VuujqKZz9XjOM5sVdMRQmrK/XgWpIrS
T9z0hgfq+CbhbrBqA0F/Renczfwb9fcFX4AN/Hi6787nE74/daNZN5MPKMrgi8/nGSCv9tngl75z
3Dtxev3+YDRSO6PTd6PBuw97pfqio1cd99Pg+sI5vfjQOzuFh05OrsVTbqaiL6j48Tw38DgPFeXD
uXrNP4GIVL3gbgJ1lmW20u0eqYoQ6DjjwS/jB6O3EIYRMvwALrrrG6YZCtP8qqqGof/0m5p0vxwk
n7+oo/P/6V9+3DDwFaUH9oh8V6ozmnMfRr2vns7COJnKm7bSv+6Nfji9eKeOB6OxrUazFKplcXKw
mEVZN+Nplh646f3Ml9fddBFlfP8mm06gA6WFoSuKPrLtHfsEOq9U8qN75478JJpn/TjhuRX+a2VW
jHAQ6qFhqB/HQ9mQ+kalloIbyUCBodHQUn8c9W37x9EHdwLobDft88mksweCZmkGcg2qkGbYdEYM
ZOZywR7x55EfwyizM3G9GkodWT74wv1RBpP29dsKkD1omSGFNmsZ+V7gB7mgnVpbw3u1oX1NYc3a
tzgPAk2dTKJZ5qST+LMDPX/jSCggkIBEraHE0NdZWEgE35nci65GloEVHer+85//VLf/FJIY1Ziu
IYtrmg8jE7qUIWIZGmY6JpgoRlNIzKNcvZsOBJxxvH5AQKNMMZvJM3yTGW5h/dOx8DC2zaGnFhnP
u+3D+bK/IHJkcd+dTIaJO+WvRS8RbCpWwxaZZ2pFi6ezjCfzhMPvVauiga3D89L7NziD5WdRVfjQ
0kcIQW4+e2pjqvjUSz6dRTC18ipCBUyIrmDUaPKGgcssnkv0v4a33PTLoLWQgnFTsDrxcoHzJA6j
CQ++YuQrWSWafbrmbhrPvqEqhCqYNBo7pk+Ivxytox9j7zzyYVC66a1tJ4sHfkb6EQwGo+VWPnJv
LV592IoRGpbpgXvP64mWziFW5MFlJVw2OIaWt5hxhUzqamC1s1HM/o1tkT0FsyYITaSHBPLOEsKT
y/OP0SyIP6/aFZ3iuf5tMUKlxRkRMFZ1j92U7/vzuU2QDhi0Zhg0C3vBRgxCrm3LiCssNI4Hd+A9
z+J43im67t0k9txJPpvzIQF2g3hq29c8PKwa8OjVqz3b/m8H2TaEisSFXKCzJ/WBhHKzOsQAdfTG
6iA/xzBczHwRtw7v4ihQO3tH+RB3ISf+mIA8nhx+R7WPSj1ITLWzRAdDB6YEKGo0UVTnpsFhQmxT
tGLiZRpiWZVmNQStmk1b9Q1vPVp6viAlYLrlMK3NZDlpIOnfXk/2NDMBidWoo82AU5eukawE/iwz
RBv0F9noeh7dcP92HkMKkM8hA2yxKkwlCgt6gaBGKIihMY4f9TFBFJxx944vvSLEyy9LHNs8ikBE
gSYR3MjrccMkRHsU0f9tvJ8PTqZt93IYQ1cR0hQSsp4HCT+GqFFoMHlIDD98FNEyzA7uIAK6y0xq
x1A7iheJzyWp3xxP5dS9AJoaXGXJYSG6SLWPZLixvtIRphisrKHWSDPNtdbr0ZjEk4nM3QpFT2cf
42QSdGpVN6i0qiHcZ+5U5aPlopVWJzxzo0kqAzqFnKFTRyAHPdYpqKY1VU13g11Ua6LTRuA63obb
ELO1UbgyAhRiWuqS0yVN7k8iCDrgOeIl9T3naep+4pezYSL8xyy4gk9rbcSnZRQaZQmMxlKORiCK
dmqyJWYNkhYCgWcSeYWkMbDx0WIulmb2g3u4X89DLZfrBt0AeZQtvCU2207hdwF5HC9vdzbDw5Cz
dCSJmLmT3BdTERIhTDZF5obqLJ5176IkW7gTNbtZzG7VLH5RuMyoowUmCGitZgSKmEaoqys8EMaL
Zq/jhWRSAlOxjsc3QlnGdYyIQlGz9QXXYjDkS60fQ1SGBpfD7QGASTz7tM5yhMsqPby6zJMikfQU
RJbiZrgCl2O/jOt6McuiKd8AbzWlnwIN64CNNMRmBUjfDVtQXJexVXqvlDA+CtY0dYXSpv3LNfJI
/65AbpmWloEUypo5NGwYNNzk0Eq+OKi6NBj3052m3ANRRZIEfpdqzWCaFJtkA8yalcYykxV9nAyj
hAd5zqaTEpol8tyrnsWQ5OfhAEEYow3Dgcl8ZKoyjU8zcEuOg8WvaHYX33JH3HcSni2SmfO5YDDi
3pGoI8jFYfkhD9hMwQh21PP1K2ALb3ezyuujV0ed79pcPhcIA+7kOGFBY9yJ4wm+xhjEC2o0tbYb
+BVDL8Uur7+rQd+WoEBnwkiCmt8VgQoYtnBImINM7azNbmOGIOjRhvxR9y3TLekZ7khdIa+qNG5Y
YnZZTRs3LX9tC/GiCLxRuJrYgpbLm4JWMEiNWCM2aFHfoswtNSCzdikxhWh640JD45UvWaYQsmlq
gXXL9XMfQhiAwA1BuJqFt4Lg2WiNo5QMr2++3rhMs+wIiEMPcRrQGYw0hqkFz3B1z1YQ/NfzZeRO
STDmLT6J0aZmYeEjPunZqDc7mmeLbew8GPsPOg/WjGEa1MColNisWXnJEGVngjEQxY21cuYlIOhN
IWjIWkMopSWO0x9CMioWKfMeybuiWDrfgqM/zCev8DGVyCnED+PFLMhf8JaRGGEYwiD1GOFMla2+
vzi7vLxyTkdOv3d2dnrxzrl8P3bGl07PGZ+eD67l7eNe/ydn+P6iPz69vHAc0SdIYWbDRmkIxLOk
6kks9ZAMSLMUZjWSFxBDo8EGeal8PYgVDTXDp4c6JG8lefCf1JQwRcMNZXEvMNWypNVrdrFgriuQ
3Nf3r2x+c1m89OfcYr4qXnYAjS4lbuCpIt9JZcJ96MPgKDsH8dnJEjfKUlm2JUWRRepRKV/XiUYU
jTaEGCASLCECnBFP7ngiF95zNkkVjTUU6WseUYPKE51olr1VBeZi7T6fJRpSNK2h9JC4Qe0JMdM2
t4CJpmh6oxZMTecWUcUeB2EAGEb5Wk1wPwlWayAbn5fDyMLM0HwL+sxN5DrBam8F/uqeCtFCUdid
ujOgaIncWwH30/s041PnFjIXPqlCqLRMmEuAXt9y8e5EZ3KKyr0VJdkbNCjJMH0TdNe56izrO9NP
iZNv9QB5MMCW2hC7OTyLQShxnJRPP8PwdtLoE4SGCkz/zZt9vNnKZVnED1gAmeN6YmQ3UVrghPA5
4XzuhBCRytMKOGMMPHiRSAdwKBYJ1HylYF1Llh3iyVvAtPyZVKeZoTXdV8JNDEatp12bEe8CSwB6
pmY1nbBhkqZ7VrjBdUi0vKn0SYUKJViLWQSD3IGy28NVJbGSHvnni4x/OXpV9XpPUyJfM2m84QXA
E/B7K1xiPL6fZdFk6E5S/t21eKt6cTzJvThuutUGdMGWtdblB+7OoTt8F9zAJ/4f6RGDyl0+jZQI
AsusKwEj1F8kYu/laKmO7HDEmm7+4SYlkByu5PfENjhBwA8rTS6z6RqO13sy0c1na5Ee5EiIrjXd
N8RNQpD2IlDkTqYr+YL1OeKK/UhNtyNxkxFC8qS3wp5ycM48ib/cl9ZSsgWILXgDtPs8xG+fZUCx
7NIpZeum3Ma0DmbzXIVKJKpGecqRBsGsqOh4cSB2uGGK5R6jRpKCMDDWklaJg6HLPT6NRHmUB2pd
EF0FbWqXU46L0fvrs348m3HJ0s5iN3hK0sHES42pK3KF9JPIXOeVkL67ICp2DC4FiWyjHml3oQPc
Y2U6IPLZyIcM0b+5iqU5xM5B2lgsNbyHLAMDP61FnpdgGVWBwwuefY6T2y2pkAsDkRGkvvm11p2d
vD/3VCfhqXzhKm6IJu3fxJiHzLbqo+uw6y0hplGRGTvOxSgfT44jsmRJLTFlmvTJLzOHTPXF5pCl
vuwcYjCHfjwdqx+hTyZiW564AEI8Xu+HbpYUY6qDTefCid04/p1IRZ6WE1vAO7RyBI9nQST607lz
k0hswcoTnS0pwfruNM8G8pdAjbNdaurYy9+0XbnJLZDKsziz7Tlc95eIwCPfn07nE+mDq9u55K7m
4MydeoF7KNIischUfYFXqbJch1pVeZjCiEUbR+5DOnxYCP3kBveOL2zw3PynRBiOivUorWleTf1A
0/hD+4nra54uJtkOts0NJ+ut7ud77FaZ7qEsPQOtjzqryz+Q+Wz7HxPZw/8QL1P+QvogUOhow8CX
eF/95VR99QebkkRvShZhRoot63/+fpF7MMym/BLUp4zlyfQ29TdrLu1toqZc0CKGy9dfrFgG2nzb
uIyyOffSGrNAi5ihZW6QXPrQ+eqrONL4ayKiTT1QnX9djDIKPUTMr71wO70b6PnLttMfr/91QQEq
xiV0fTy4G1DANxgM7k7ml2Mn/8KP1RwUeuSV1y5W2rw2vcuTX39x1fBbJZgxzfWe9pqq4XdCMNcN
Zhbx+QELX1FKrJlNv6HBdTOkOBf8OQvHW2UT05Lfy3ghuspejq5qL5tqa5BqgzlUSHVgcPGJ+gOf
zNtUu02121S7TbXbVLtNtdtU+5mpNqcaF1uHCy8no2weZK+gC/IGh8tvL3yMMrlncd2s+Dbf8log
rLxTJEbjlzRU8z20Hc2NvM6j/zFkMDJZ1Btn5JwaSDO3NxNEwbl7y0XC2rtzI/nlxR10foQ2WM1B
kmft1fsW6r0qxtyLy13u6Wua+HOqh/5je/e+BeIt+/m+RVOPUSX8/agS+VZUiX5DqsRejCppL0eV
9JelSnpLlVqq1FKlliq1VKmlSi1VaqlSS5VaqtRSpZYqtVSpTpWMliq1VKmlSi1VaqlSS5VaqtRS
pZYqtVSppUotVWqpUp0qmS1VaqlSS5VaqtRSpZYqtVSppUotVWqpUkuVWqrUUqU6VbJaqtRSpZYq
tVSppUotVWqpUkuVWqrUUqWWKrVUqaVKdaqEUcuVWq7UcqWWK7VcqeVKLVdquVLLlVqu1HKlliu1
XOkBV5KnxgzftX9uuuVKLVdquVLLlVqu1HKlF+VKGiFeyPM/Cg2R1rY3/cHpdWl+48TN3DzLsVBT
OqQR5BlsY4N5IjAsMrd1vkP1xmRIN03Pyi3og9CMF5qszt/JhReHVlaOzvs65Wn8x6YFFPPZlOdp
SiyJzROffjJ9AZXJLvTlabi+QlKeJrClIi0VeZSKkMrpUcJuvVk0lbFhP5GHa3ZTeXzoH/kMqZ8X
oNj/Vg/9LcvAlm8hkNHv2XZ+YigQAKmVOJZZ/F8cb1YaXZZZy7p3aMQMTbI0dpifWZufYvgy40h7
uQOU9Bc+QAlXTyHrD0dipSTbnyfRHbiuJ1BaGubHik64n20aN88xJHk5Q9KXNqQ4iuoUhugXLvMR
cQC6OnriDGzXBf5W6wKPHvweEuyhdl2gXRdo1wW+0bqA2lnPnf0b26B7tZWCXeaoy/46KwVqZ4Vf
2IPt1ZYOdrGHaT1n6aCKAGOAoDeGYGjB17tkGCcjLqJiKmLPtr4J4gWESgmM4SowQmCsGE2BId8N
dhgrH8Fx90UPFxgfx2cYNbtRfa+2XPEYPMNHBvaLcNNP4jTNc5yfF3zBD+t3xcvqo5Utz3mausXJ
0JQywFJ7XgwmsldbtdgBEdOQphb1bPv05HjJA0qXQZF3VQ6F1jW1s6qz78/nNhOzu7qGsAMAHPps
VwAlgrpmJiZ7AEQXQPAfZimp+RlZf/6lJPq3Xkpi328pSftWS0n6N1xKMl5sKcl8uaUk64WZq1ZZ
AvDBbu4iiOL93s/5lqT2FPI/1inkee9kkDx48Zf9nvg0zj+Uxeom1QLiqu/4jCeRX8jO+9y2a7EJ
W/UDyHdvxPMMtd+7qkpe3cjFI+vvcR451u0nrPZYTCyZiXPlf5f186D5xMUzjwYiHAM05/PvefUa
RuNPgNH8E2C07NU1Uv3ETW9gbHyOshv1F1Mv9gSpowzCttrRWdeLsj1bUdXE/WKrq5CEPM8NPM5D
KPAqBcsfKPC3PRHUn+CB5SPRSBCVSjBGGtBTKSvdVuDNlwXCBFrICEeWfGJjATSiJuYGwGKiJ9b6
EdMwPX+pCUYPnzBlAd70hNAEk3rzISKmKKBlTQgizNUlYMxEAVQOa3aEUPewgIhGonlZFsJBqIdA
pdQknNQAYwQtgadMyKY+AVnKWfwpgvxW7V+9t+XIIlQZJEmcqP044Pmt9aO6Mhbx8WIx9YBCyDLM
FEU5jmZucq+eToFOpWLcFI8BXzf8QOjTVcs3TZOHoaG+OVlM5/m7knHCYeShPfWQnLC+Rlm/q/WO
aZcSOuyafax1jwdmnw6GBGuod6QefIgniylPDz5cnr0/Hxy8PqjKqmCwXOMhBrgpMcCkKpjSmKfZ
6CaaFjNNohmivjUc0j4A0Y+7tMeMrtnT+t2+0e+dHB9rDGNzE5ptUmu4/Ie4XH8jrsV8DglAGRod
ItTD/ZOujhnq0mP4dYwGRlczeic67VGCB8MdoJUFV9D5Gn6AjpCACnTbs9iOjugbeAj+28f77A0A
7eMB6w8J6ZraAGxItAFcnQy6hGrHSO/1j7FFNwGtSt4PE3fKhcM8+MDBM0C6ftCr1SnjZwR5D/Br
GJK0MKzR6Z+ibBNuPCCGYRDW7VsIDDwcsm6PaVbX0ixG9BODaibZhDuXuBlvXlbGqXP80M4u9dBD
nNsMbPw/L9fW28aRpd/1K/wYICi67penoK6JF87asMfZeVuQzaaHG5nSilIm+ffzVfPW3WxSxKyx
CGAp7GLVOVXn8n3nVEv6kouNxOZiiLDMEBeVJMzrYKXRkid7QdDLO7t/2Bd1NXfnBrtq3XxkEjsl
37df581f0xubjM88Y09TIkIpRoI0kpREudcuFJGvbOxu3mvbuxvRk5wJbdVY8vqhGUn+3P753G6a
h+V683X2slnjN+w4n1l8E/9Cds+jj9prYnmEAo7DHmSxRAkrjMpRpOIg++cud799v148ITK+/Rvm
zft5t2+/7Cc+fjJbAHLft2/jwwbLP2/fAvB/+Hw+bqCSqblwrJJh7chu9vyo/v5L8r/49x/vX76+
20Arw2fMzkRVbf8r9EuSxkItg5VHhN9ALc6mxmBvZVDGMafCuX65btv+EPYrzX6HzieNdqueHh8F
uaD72bih7mZKdwNDbN/82NzvEdj2zQ8//fRTDZUwPqMD/DdaTyRnFsdnYXBZsqIipVkiVJ6+119r
oUx7ttZCzVejfQZj+f3lsRys8s0PbMbwJaa7NGKKtxYZxPKEXKKLxv7SRGRGfOEKoscJq/m4a2wf
59y+3S3Ss/3dB0N5V1Pyrlr8N7U3SmmVHRWEscKJlIYSF0TAVnEKpIokoMOlvWkkP8vu3YfnsQtn
D574/PD05R22huJA6ubQfVSAHCFrYYqiSAsShqcNDM8iRkSTNDdaSOPNhaDQm/tiWOiN6WuA4Hse
GFomeKcBUuJ/zB/nm3bbwjz/aJ+e26dDCtZVaMaRzjRyAvKYJAKnCEdxkSRvvCg2Bev5+bnWuLpn
9tu3p7BwebWexFwsVmf5on44DmWf//r2+Pzw7VNb03v7VO2xfolVd2COZeEU0dUJRFSFhOQ5CUjH
DN5Pg2K3WON+iW1v08+fHgToDRo96WunpNZn2iklm2q9b142D0/f7H8vvj7ND8fAZ3KmoJNzlgpY
Mik+FZhPDMSZGAmci4ZgaPDWn+vUE/fDY7uJ76ftZzd8jdPqIG6BFHNEqjNx+po00oozTRol9Oic
/rN9rssdI2j/oAKLXnshiXIZycYAgYQYAskmWS+pNcGWq0qNJ++pN340kN2w5bnsRiw72aHox1Q+
vfs484dTMBbZozuHnBJQqC0kcfBInEMkjhdBpFA6h2hlpOqqyNU5fgbL+Me62U6fxqd2+/DyVH3n
TJKeEoIJsRorIZgxbhSc/K/p03zZPmz+LjH85/cJdr7zF8FnXNWjgG68+g2tBgqILbmBjRXBCaB2
zSUi6pAU5Tpfz42TS13KgJOD+xoKszpzFiHmCzYJASqUwJbGh2+PD5u6zpsfVGdp+Lcm/mAUFQj8
GqymKidAJxCEoVtwtaUFc54KZYfZ3nZ1t7hbpDl8fKbUadBAk8U52RBiqQFmxLkmAGbPQ0WQa3l3
UKyek49M+hRBhWw9p0wLbBDH5pKN1BglIudXVemuKO437YIixyF9NSRC0JkaElY3Nrn678+/+R5a
sDWO4Yv2EM84l1kaTkDwOWI0iGeQCNlI0LKIVOmduiVGH5bqudLho7udhLVSoYHhe2zp8OECmYJD
cvjW8s0PQsENulxtqM0CbI4oGjUYnRfEWZBkybMzIWcppIZwL9un6qJv69d7i9mG93nE8cM5PSTd
urm//bqr6B9DjJvVkMgpaK1GiFfU1NwVDPFCMyBxG4sD90XYeTXO//xqnJ8UYqjDgk7o0PBReO8S
Rpw/Pr9U7uY6h3Odw5kStEoJwR0eBxYUJbGaRwIVUk7OscSuB/c4f1oMQnpPk96wvgTTg/sjhjo2
YkLH1eJwTvsK5WaXSg4nJRniJu3YhAbljnABog2vVkw9KDR4k8qMa/DrzGLsGcpuvrcXZh6Ktpow
IWX4yNO2bfPytH4GDTW7WGeoAN6kHZcrgQtbSiHei1rcCYJYCi7Hk7eJ++SZuo4ZPu9nn97Ww9O7
oYhiSm4xESHWTdeFOSBFbGylobJKrkIBFaOBRMEtWBqEDl4WErPiYGnYYsquSj4x/7QSEwNH+sgJ
fez8gBT2Bznf3h8RmzZ175kSPqpAqJKwDIADYm3E3lMPJ/CGyq4GcNEyjhMOpbGLCWmcPhgsHH8v
BUOumOma1G0QpTgPN9SUCGrBf4DbCaBXBpCJyQj3fQLKYfGhxM5MSNzMR/bwa7tcz7s6FdMYbJTp
EAl3jGcVOaFWVUSSa5FNMCTtoLN1MtBCb8kSh+mntTg8HQreTG11q6dS3W8f/YAY71Id26e6wJlh
siTIX2tCOlniHOwhRyO10cUJUW5OdVjqsiHXp0Ml2ond113xfhDEm4Ebmo7Z1x8V8FqRSq64SUmk
ISNA7TUwOtcpqkQBa8pNZKq/xoUw3VzwQT23E1rMF6NU9Ot88/Xp4Y+2zzC04JpymYiKth5ALW9K
QFofPUMMCdHQeJMB7ee+YED7pwOpzWoiEtqFPkSOP35db5uDuypWfZUz6ZAegbgT+J3IcFMQVzAM
EWEklgfqrwds3zTtfb300b6aNv9oG0wwPWwo3d1QgQmLsu2xntD8+ON8sT5GIV4dwFrPuQdKtabC
KUpBxUtAqoy0cEttsMH1YuFoluHy7cSmOnokbsv19nH+3PzjmKslnynaGbJHQkZ2BACx0sMNHTZX
MUEMQArjHkwnTefq4Zx3w5XbCXFMM4L1v7Trb8v5PcTpDJN3+MgmprWJYJKyEpJMgfSURVhgSjkW
lHcq32Ka+8mnT3L/cCh0M5HSXLM6HuHDt28Pm/j01+Pzw7EaRKkGTdztZDbWGQl/QloxQD1AGEHU
ojxNRUgbWHZqcifPZx4KtpyAnHM17mh8bJ9WtUKxaVq/md//tV1v+y5PsW86sEhS5Eh4cCViHXIG
01SyQKV10dyyrxPLTO/xxMC7oQZqQq1+0v5ylrVliFoZl4jXCUp45gAfKIyDu+Kzh/Fm872y9peJ
o5hPpe25cyNkvJ1vlvVOyl58oWxFxqrr3ilwJQHIZuDugtUoZkIEHCpAzE5p8Klr+Gcw80i0+YRo
tSiwCwHv15t2/uTvv7aLUxmNMW53lhtj8Ag9zjngSq2IzbGWN1NgMBsThfl/CrATYg7V7DeWDx82
DSDD7gQeFv/TnApUWlbQaZSr0SORECvoTBKgUzuk7qJMksYwY+Iw0PZnuRuuZKeWR6BddMv/YxdY
yHy7Ycfjd7ZSj+qEJvGQRcpE09qy84A73gH9JE9zcUlIZvJQkvMJR/JMRNpm2R5OfbH9NqNHQSqJ
98IDO+pIeD1mYWKtMAgcPSuO68w8DWEoQm+O4drL1dTa4w7JyTa6gk39Qu+j+knHC4LTSEXEZIkU
zwJcXIAmBG9yYYXpXOT/yQJPz4c6tBOxtW3UYf/WzUu9bXiyKMBsZM7a3vbeeBAuIrtKjUfKtBqI
CkRMByBww0sa7uNorrvhkvpcjhUbd4N/eXfCo2zGa/FLcdHVwX0tDimiBNiU0EiYXhXk8+KYiIlz
+QqnvZkZ9lPsu+tDT8/vhmqxCV1VM8Kt8f7hZZkemmMWE3xvLN5yzrijxHNfTVjDhAPXJEaFI2E2
yXQTej2uMC3+8XFf+iWd4JpLxkzXqTgF6iOEZVTK6v71lDhCqUhOkyxE7Rsl8DYB38vKCCtC8MKY
a9F/AnliaTshT01JZnzF88vz+n577FCyXUgSQJoxREVYKiAyljNivc9EIejTJItiMty0mYcFLmzm
4XFf+Jap8/DVcsUP7lceNs8f50/bU/+NCbkzAh2LFNJz4kDZiUAYBykAEWa8Fq0zIqpK393i/d8+
39CcGEt9N9ROTKhsxv2h9XK7Ot3IhRXtgBy+WtOISx7uDTuiFSNHpOoOaWoFYwNARgi6Ccu9S59P
134vsM/+kKEixkwpYkeKPD6tN70Cw+xj/f+jQlx3qAiJuWRTwEE8YB3cgdhS74JxmhH/k9DFf4+a
6MehLAO0Wh+N9HNT+i1GIflz29TGxn/tXh85chnRQb5arIk6Mq4LJTqUSmi4Q84PhpjgE8iOyd0t
hBvaroOFLtYee2NG6jQT6uyvwlQSsl0t2yM/NEdW4zX3gCwWGNuDpTKQROgBgEhBl0TI1McxSz3N
NJBAqPPI2Up5xE5/frvnM36qF85Yt76TihcktYRwhPWVAozDbuaswLWS9jyq4fr9ee6Ga01EG6nG
tas/Hxvgv7bpOkz7CwuiuwNEOTI+rNQLSEJFrq1zQ8A9inSIPXDLWw7y7x/jh93804d4ej6UXk34
m27YOHDUqn5XMuQz3UV62+EVzTinrGRiKjgQu1spGTxfSypsqCiGXvWx3R+puK3vcLGmeHg60My0
E+dixbGY3Lw8bk+GIant/Cpbn5gtjmiWazJ1jAQrKakxUNvIlVJ6ZJi9eQYCWHdO/VvHx65ec1hX
FD3yaqVhabKDg9EXbDQoP8+29lEDgUk4wMEgNaYXOZVXG+Dd5JfzZ/f4bijjhFM7sVgtxVk1tnyu
rc6ndru7bqBt5+FdQbZD4NHUuwWS2BQK/CylCq8k6GkxzHkvCxc3l2MHa10pzA7GDTUTk5q1B6b9
v7DG+eYZbPHYKdQ14nYsyxeEbskI0irOAkmFOK48SVYwzawWWk43GcaTjiQ6pzvtwsqR//nlsuoT
Hh5+Pyl+aAEyZVzHwSrVB+bylTYIMGwSlBLIEKkI2I5CwLmOXaYWGezuacDdUF41pYQdV74/fH55
Ws2b2rs0M1mbl6ZrAfvMWCwhEplkrVkWQULO+N9omWDUOOGud6COM1+ID4fHQ6nbCf9slO0yx3nX
rw+c9K7/p5CCK9CQEoGuqEraIL7PYJglRRKzzUpJnYQrN7X+XoNN5+PuhrJPYIumbc9A+/3D0+e/
Nk2FFTsL6n5WwscUjRwwApwC4VxRR5zOHqgClE+5QqXL3x3+HuW5FKP2jwe6Lqc8eSmW45pZ26w3
62Pfn3X9TsuSTwiqOmhRr+Fbgl8QWRlc3IDzhq7wf7la1p9zJNREylnaxahCfYy67z7UYu8u6kvT
Xe6EuQQAoEK8tgaUOzO4Myi3Av8MzBvBk7wt4r/78ErMf/dhKPycTwhfr44PrOfhsd18vT9UTzvK
ty+jpuAK0IolRTDEegQg4qiHBTkehfcmR2//7TLq7tlQ4AWbEnj6wtLumk93yebLpmt9Dm75ZAV5
peMExACGz2DzIRtOwHtiztomZV8x/MPMFyLn4fFAg5ZObHnLxrcv4VT1wtAcGWSKCnDveQZWJK4I
JCYGBmfrVWsbo4m8liPLrTn2uMzF7HocMVRkolzQtnbceD7xtXcf9mASKnRQWNGDOtRFqpiNXYcD
mCcKxKCEuCqTUMXwaHN5JRlcBoofxiixnSi8rBgdFzo+zf8ZMd/TfH+/rksBsgM6sPiOPNfGmyqk
vnSAQ2Awfu6A5Q1NTEuDFCBfubw7XmN8S+z4/G4o63mFfsVPzYOf3398eviKzfg2X6zv6/2ScftD
eaWzBEZTvqvTJwOXjbQWcJMBQIuOxe/V/piU5W4o+qQ+zciUvs2fmodxBQNYWTGhFVG6ekItoQYb
kY2t8ZZqp7K/sQGNyS91n/FoJPBySuAjpkzr+dfNw/Z53ez/Rsh2eBeNdaLzDLAghSYq1kv9EjDO
IeMSFTxnCD/UlFEB/fq8AxFFe+6eK6nHtdHf1u0/w9N6+bXW1Knawfj6syIDWztMogDu1qRJI0y7
cEWyBhqORvjCb7qZcFpjen9Pz++Gwk5ssly055Hyvh1chVSIMILtLqbil3rN3kQBWGwJgmOodywA
mFkQJFtpTc6Jam1vvyFy9YKIH+qwWE3o0JhVuyek98vm8QXZtUc/DjfSY2SRmgTywTKt73x4Yk3y
gGgswLYDM8V9hxvpk1IMlZhoVa1qaXUImusfhFm2z91LEttm96rZrtzuNMLOLuV6Jo3PRHdXFpMA
0uFQLoniQbmZyeymClb9o4PpsNTlV9DOhg3UUvKcC6xs5eqLMXI74tpdeXD3Hh1j1O7RUP2l3jhw
SqjaRTZWAciJwAHkNJiv5fWvB9AkXkFDg7VexdBHWS6AvuPzu6GGzYTa7RiApPW2+dTiGOu7JceL
p/gmrLMepdRKBRksUbzWsDyYp+OeEniU9pwrG0S4qutggQvn1x8yVGIqujkzjg1Nbbz8DmTQdWB2
8MOKmd4x0cOv1TA90mHgkXigVvgagnJwQCFFsyRyKcHy69ocFrjSABrBkPoa/7kO82bc9ewKXX1g
/+YHMRO7FMi7rnRAjssa6C/XN7BEsGASMXOSjNI+0hS0u252Z0ucFdqGvGE1n7hIgg+Pl5Q+zcE1
Nk17uqbUCSo0z7ajNzpWQWkiToL3JBatllkz682/L+igczKUYCD8wkzs+8KOOcT7+eZr//rL7v5v
97MSH5YVN1mSqOrlccULVIHTZxsV5QKcSMTvzpr7Il0I670RA6WbiZrTajkft4Xnf/RLHrxT2Vo3
412njFMmeL1HpX2hu3JYMDA0pTXgem0Ym+sZyf/2WrmjP2KgQLs872vjw+PFtPhz/PXz1AtFRTGc
RT0pRF8isqkvNwdHeFH1TUFb37j4ni8UDQQZqdBOqNC6gwq//3m/PIIAY7uLdTU4UVoiULkihVWc
KEz+F3FX1hxHjpzf+V9A4z4eccpyaGLloWZjXrub3RTDFCnzmPDsr3cmqo9CFarZnmWs52FEsUqo
zCog88tE5geCeT949y4Vx1mACKmbvDgN2Mix450FsOPHqvxP5feb76vn7e0sbIiBy6AAg0RAH2D0
aYBZD+sZwgmbfIqihPRBYUMrw0h+R9ntTH74JdpN0TYwohQQUO3u7/b8kNfZf7WUs99BJ4iphxUt
64LWWrrEnSeaIxuCow4roR3BCFQkl6jzF1ULHp7Q1/FwtdGHUzrXh9NpK8LDE+Czl4FuYVyPl7xP
BlYmQFoHntgqCzC9GJIyS76AXpJeBNPr+O/aoLEUC7VXoztaPZnp6LnWWz4H9P/xNX9q6ow1Nykl
R7zFZA3AKRK4APsDYMN5Lxxz/mIEj4OfwfB4uRV83RX8uHDfXu+P3QkCMwPSMJ+wmTRYzKlGCdDd
h4R/1crzEHOtSB9FdqchJk9ezZ8szJQwYb3aNG3d+Ob0vkZeVysIEZzTFCNkkQHgUAlwrRhKqBNe
JC0h0JCXvL8wedL45Q3XrlpR1x353bQ+vvJ2rQby5hsA66u77cH7cOqG7VtXik2JQTikSkANsJw3
oNtlSggXRM4XBfqdZ/XV6dzY6uZsT7dVZ68vvW1f03b9dvfl6e6u4unTzHYAPZVhlOSaitEao2ww
QfB7lSMLUnt2adnM9DnL2eDpna1m685Xk5SNi2l+3d7dv7w+/9mU06CLyJIlC/AuQFxNhFQRiyUL
oAWjYqQ6asP/H6tpWrGvWgV5T+tjCdF/bf/8cXcsH6rlrsZYqawEqJ1hLYkYFQmJMoAaiUnOTcyp
X6g9HmsihOgJsZsGNrXQG43G/es91vDZQ3xWo+xMEUqTEpB4yGBpk9HgypwvPlpXUraXzSh8yG+H
hyxNpuamVhnWcWySyeOGzc/7x9u3Hz9PWzVDe6iDcNnQHEBiTDzB/4lPXBIbFM3CWkvFpMy2HWki
hJoLgVW+7TItzVafq2G9QmGky1kjyHFF4RZrgvBFWjBDuWRAaS5wdX535jzkjf/WBbwoounJPe0+
/5t/e/0O0xGNfW0GydmAjwF8zkPQWMDpiMsQ1MIPobBCIUi/qLikDrywMYOXJsKuesJOs423x/wl
gITN0wOem9GpSmMpUHjPILPQGI0bjrQFWOxolLMQa6nML0oTHR8HVi4eH7eUbOje3KhpReeb2NnO
fbdSbZ80opUwRypWrWXKSOZnJKEWm7+sRyajoonUAB9Elkom9eHW8ijOmQK2SdoItVQ91Y+lNUhc
euxmsZpXchMdPQcvAFoy7IwsBNYuaOiSz1FELYLuWsfRWI0Mbl7kCb/UU6D8Lcaxg43RS54hTBUS
abiklIAZrEa3pGTWNDl5EfSBYfsvDC60YmrRE3PaZvPt+e3lNf+xenirn8/fbR9fj6hHVSY7zTyP
gkQrAEV6ZFECRECM0CnkyBX1FxXU9h60oEnnzlY107HomJKf1whj8hVDx5qI57qWLQP2NZkmS1RW
HreLAwkCpjvXlEUTwEu9V565H/gMsIGrY5GZmjc2OGbdbWeDvqaXhjVaQTPlXBbl9d4OGQniSh0J
E5kCkAcnxdUFlW7LS22iWX3+smr18lWrRkc3WJaTmXb/Y7kCGNBLAfSsCQ24RILDogitScKiTBYt
BcBwUQXwL+8WAP/S93QgsOtoMSMi+/b0OJQjnpY2V4mWomAtW2yCUhD/ugg2NClBi7QOptpF5cv7
oRcWxXCxFXmeRIdfCjkpRbl9fHk5ZlGU0ZjRQcvocgQX7QA30oQvPeHOMXyDJAzuElitoj1XjjIa
txVLqI5Yakgpf/oy0Ftun8vD0+p1lNbJgcG7swbmgAOI48DQOCYciT6YoksOgfG/nNY5QfCJAIct
78mvW4U07Shk1KHSN376/Pi6rXVeL0dk7oZIhHntfcows+F1g/tRACBVcSRrLzQ1OXhDP6wX7czS
bUlBZgK3+hrd03c3M1YIugfkN255dYBMZUaVYfEiIQVg1SyRn0JJEUIABFsuR/7LAPB0vZXe9r6W
vZ0yi/3cbjffcWPn7rEe3TFAI46bhFWVYbMQ9/U5B6MUa1muMJbgvjgpQnNAgVlkcVHA333cQrFd
79aJij2Lu7KTD/Tb+v6/3yptCKt4T7DKjQimCqJ6Q2LEtBAaXKs9JQZguWEcuUIv0ugwel+Jw9VW
7lXHxq6Vm8g9Oj/w0GInNPzgaliJQ0AkkaJAOlODGUeYZpRLCrYtuqFM+q97w9P1q1bKVUf0W3Hc
Q4d/sGmaqbkQh6YDZYwrBd6xTA5cuE+SgE3jREOsyY3mLC1Y2umorUi3sieS7KR+Tm12Gie3Hho5
AAFjgB6UwCInLP1Do8sig7CXR53UP7tPPL6jFX3b8VwVwTWif98+/KyTdwhXavLfA15mRZKYC/IN
qUgsBJQkw5ROmKii9EP4hv4dHr3UbP/ws1Vm1zE4691qTpE32EpVDYwaSuhCSBBOe8DUYFQAilr4
SYKNcVRIExmEDRdhh/3gfYn3FxuhN7Rj4zfb1ZEeYJh19Npd2yN24IfG38S4KBF3GjmSIWcKEisW
iI6CmewhUgiTLpb5eI04u07oznZmVpC42QB6q50srHayVIvGTLJW20gMNQ5eIvgaWwRMbCukdjW2
Cu/52DrsYq9tvdoKbGxP4M1s8aGP+roauErBpdRaDYczuQAgiNYXklysYQglvgRJFCiFHVXWefUR
M3kswjlHOtwxUfK2o6Qd+OxGfZywzF8fXk78AIdpgl3qHitxOab6heCYVfaCJOOMhAkD1pudbRAd
D9xKZncdyZydEDY9Pr3e70bZYaRprRs5jEn8gODGkT0igT+xikYSPHYsWKUKd2cZvUbjtnK5uYfj
wtDqJianB/8WwUlU+Fux0/DTkLGQCtAFgfgOTJzF5mesVKJO+urlbMyX5uLhIcumGS5etXKyjvBO
TRYhwkY8KO/l1LvdBHOZA2JHsnHFDIOXmysXVSE8RiYV42CjL9olK9/eSSZ96/kWLpzuaLHmk6nx
ox73dOqDP/jqBE7RcRsAHmGDHscGvWSx9Tx76iwPENCdmxrjcVu5dr2psdv0KgmHd/P5cfeEdTas
bqLVP7HQBl4jRP2KGIsFvxJ8oaPMwTumXjJsISyXE02dHnRmK/J0U6OQdvM4j+tZGmZ1MK4HO5pW
2x81BTAy4UbCNAeTQFTIoFRyEIs6lon1OWouGYuX7Ra0zzhvz4d7WpU6rhx+OXVDP78jm2Y9P2Jo
QD9UrNaWIkxklEyo8kj9gKnGwD1AP0W9DcLxclHa+Cs+YzijYomRZnTHRIu5b+JmVir5Jfmvo4JV
rPjkyM3H3L70E9yRg4+McVyBiZbBSELwAHbIwa+5i1yfz5PhAxaiUbjSiFz5BGciC9tdHL9+PZC+
VltuCwUoAlgEqQhgPXCsfWcAEAUFDK5Nkuny9fDr13ML4dep1K4n9RTGvtSA7vr5FNGNN8mxPtjt
64QxwoHZkhRy6lBPkYrNAS7nweMGvpI5xcAY+whcMAszL4xG2zcge9/NHunPVm+ngIhZXduONcUN
KwKfBZtGtCdOOkq4kkabYL0qrIWOpzHaR9v5Nghfr6e7+n/c16bNAk5riCjFvn1IHMqJRLAcCy5h
PuP7ToIE6SOJysXsWLRgfi5yV/snLLz4/dVGhXXPJWyk7XQ+bR72K7TmJobqVwiFFZUFCTcwgWci
skdAQEddUYUKV5xhf7k2e7h21UrWE1cf2XlqRUtbbBmLjK5ITOVha2hJFKnlYXFqVVwAMCjf4aW8
vNjy9PRWaL3rCD3jPdiv0Zc/H1+/b5vKRlyhMFeGUn4xlIGkEk1JFovhAuBHZiAKrSxznCtDY7Al
uA/fMRtW4s1cwvlyPd7Uvgqz7b2KaYp7sB/wCZUcenwxpxeKYrgFyjSS7ZeEhDywXCAIdJ5j3Wyx
f9koDdcmova+mp0eyTBuHK4NYpvXl/EeetOmDB4sOQxEKMPCeAeGFcIQTniJPAG0y0JfWJEwfdAS
xJ7e16poe1+j4Vi8ZqflVCOD4HBPIRGHBhSmnQRswSBsSQgJFQW8TWcUi9essyq2dr6Uhd5uOvtR
h6rTWs5FB6R/KmyVHhaCB3PpJYJ9BtbTGgAJXLkM+JRLq9w/Wdg6vuOqlXcengrL1KxM5Xn7dl9T
u2j2920SLtPsosaSBEwkyciIx3XsNOc6ScouhA2VCejzGZagz1eteLons5uTdlwfj818BBP4o+7L
njadvFOeqQgRSuBY+o2Vl6VYwpJJWUC45d/ZLZmNvtT5Pbltos2qo40UhwTB/7w8vI4msRh6XpkD
iOOYQu5GhzlcCF6M0iSZHMClsZLLpDBxPE4rwLx9Bn95zAN8+lwmHskorzgDPxQiq8QQEQ+JAThC
g3YmBJF1+SCPdHz4RGTXE3nqkHL5jMfaHQvg69ENwVsAKBYPa4I5izXCLhZAvpLCq7QU3oa+qDx4
P/ZCefD+6kTqTUdqtz6Rmjw/ACw5lF4ITAHVUwyyMzkxdBcWTzEoAACytSQlWHuwzFyIeUprchqp
FcH1RNi4Tr777/e3W2zSrEdeMTl0EjKbAjUZvjyARzwKDxnXkNVd6MKdTcwx866pqiMvr/Z6uZV6
01sit0eiovU/cKvpRGpYGYJTsQJpKVSkgJEd1n3hF4dvrBVSwwQ1WSDNKO3zb+fBoHAzlqAmmf+3
m9GGAXxIxAH1T7SbiRmwO46EenyIghVsuXZE62Q9TE9lef649rKTJAso9aaXAwL95rGBWLkpl/R/
fqtb+ebaDAeIgVOsIZhzwhctICgx2KlZ28qMV0gqHSW3Apza+ci3Drywv/Rtso0vVr15vaZsTqE2
zbQFAzhTOUsoz+jDWCIeU0GicOqzySxc5sM+p5tFurRG1HUn4MU63SmJGDZNjKokBMe3Gql2jCpL
jC4wc5BV2ONblTBpdEomFn7ZVup+9AWHtb/ayt1bhOvdFO4cB3zZFw/tE1V1drBaPBQ1GBFPDSkW
94MtbjNEzHBzVaSmOXl7eaH0YpIqjK63iuw6kGc3S9FOTsA+1ZKCB65MJGBXHA/gSDQWxUmGZ8sY
rLUQ3sgEmN6/3470Pv4d33PVSqx7apgDbhgefB1OvrtmCWXt/AmZSIU9hkp54rwAHCGF9RCfJCYn
+LcdaCLD3DBKKqaV8+Hhbfv69DQUOYiaOah/7urOE0AGmgIYQ4pkeFi9EoyC8NYayhkDhKnoO5QR
x/GXiCOON1y1gs6r4yVDFu1Z3zAe2wjCKzkEscMPiISy4hxPq7BYDSCChkBCIEWWDQZeK5Usv18H
h4Mvf368etVKqDpiQ4zeit0Lj/23G3SP1Z4YVX2RtbZkGhgBC4LFNfgT9YkoqjWebEvFO8fofGiZ
P1xodZ3TPDnJ5eyQlIzsZUOOH/80dVu4CCeVIizi2aKOR3CyEma7MzzqwEpQ5uOcrM8LCuWrVvTO
lFPmmP75sd2sRmTcWuuqC9hE67PKBGw9OFPpNbbbZwLmR/EMJpM1Z6RMB7pqn7briLCSxxPdHu+m
cN8kyjLA/cIF0hoxjcWeCkBf4SVwx6wPHwT3jw9vRV51ZrzCE5aG4rFnGOLhj2t3KtDD76+DsFkz
ArgUM7/C40mtYKmDyvCbpDKfsFS2w7QSbHvfbccmZYKvz6tTr7ThB/Y5K2lRgjKkdMOeLQNOg4LF
wyAtaWwJZWdJq0bDtlLt5o0uuCd7kCp88TcTXnfpAPria/AOOR85bq3kBOGPi2B0leJFs38Rr/tJ
uqtWftZTSs346I6SPOEZfUpfMzMQMMIPlU/GwNqImmSGx4g6CkFqxpZKiaTmEDXRyyihmwctOZjR
LRNldEcZt+lgjUrrhTUmT8+1sYzXPLVTtfJdZJMwvQLWEHuxCpixAhGNjdpGKmIGDHIpYmqf8w7N
2PG+VqtN7xPtaEergwGtxZKPeLIH59h6X3Pww08Iwp1A1n2w1dLF/YkjAlmkIrghA9eUipfqN33i
+2VVhztbHXddHeWpYPX3b3/+3PYa1YOP0UIkTCj2egMIQB544wGz5+xY0UpeEN79nxrVG1EmanRM
p+Unw7U/PYJ1TqbQGrPyiGYo7gri+TpBU+RgNhlC1UK9m+QdJqM1kljZk0RPSf/ucR/9wOuq3KEM
hmcGcWMQxAtMPEBwCpNDMpgwwjEGRs2zfM6EnoZthdLbnlDbxQMLrgejVrfA8N/t/yoGBvLgOOAp
8JQ5CdzuhfDXFnA8OitdEmigyr/Eug7XJpp23P6t2vWOF/v29PQAn7HDaWuUzgnwItFYXgBBPMe6
ZPwrwBA8q42/o+B4/DNnjO3vaDS47ZSQy0rQOOG7qe1e8NzmYIRqb4aTIzW4BQGBPVF4gpTgisMM
h3A68uzgv8g99x+HDOfyLLWtTe8ba68A8s60V3WbfFg+uNd4s3m+//kK1vq3UR87w4+H+23I5gPx
HQFQzzG9IeEnmKBFJ0otd0XJSb3hwpCNWErPs0RK3YpJVuCXX+LNsYSam4HPIzoHiBwcdMLz9oRM
xGUnITBFvttcAJFctJeEYy9MJbjSSns7z2FoptbzEomaedmH/DDNB0iRpVVJwSsUSC8pZECyvVAJ
Y3PmiZpQ3m3yW0i6xP21q1ayTUdcPS2lic+rl++HM7RvjrwSdLBQuhKnRSm5cmDBqWfgYXOlqIO/
ShuD4hSW7mVM5b1nLXjYzp2tdnqePNBcrU9b4Xy6E558prj/nUEdbCSgJCQla4c6BVwLIDZ82E74
nBUcpet8kMqYP4CC1fPm+/0f2xMzuaCHQ9Uik9RAxESUxA5zgUe7CTSkigUZlBMQ401qNtrBWkFs
793N6tZx2+7haXPoFwMnsAfJMLXAotfwnyuQg+O5EQKrkLHRRDBinJDgWjXMav2uLfyyf8Qy1Drc
0SghbueZUC31dIP6/rGhzWZDqc+QzbKZcuzSJExhK4MRYNQkmBQmBFgRmo2PH1IA/PlxgVUbLly1
4m87OlnWgcajrNhpT9ImE7wLnuSAHQUUYCPiG0KDSM4IHsHov/s93smHNbe00lvekd5N2dh+Przd
wVcZW7KGx4Z5UwDyEOoYEnxkQ6zigWSrdSiYZrys3fUrPObz42KW+ni5VcHtOips6CKbba1KQy4f
dmzqZhTWrdmXNoHBNIAx8VxMTL0ECJiR6NwmLaUPyqRMLy6Nq485UxxXr7fqbExHnZ1eON34/tCT
dtzmUIoqW0/MhDfPwPTwhDR/xYP9odhOZzAe8MWrLC/iOT+2vZ2nOT/e1qhj+byjGqK91SR3OdA+
v+5hYuVfHmHSMfcz4A8LQAJRA3b2FlUIrB9PGM0BonzNnTPvcz+fBaTjO65audcdZfbBPVjsf5yi
KjWc7vm/vF1JcyS3sb7zV7zju4CBfTlilSYsOcaiLb/bi97o6Rhu5jL2+Nc7E9VdXahGN1s2QwpF
kGJBQKIKQC7I/L5oIqwXQhFuUTBdiA0GTqyYXBEpM+9naXv/6nlSetEJRuklHxXnDz8NRYxz0K+k
U4qUScIjMqajN+UM9YTrAsuuFPBPy0dhBU8kuGrF7GjQpZqHDv5eK8hut3ev+/Tg3aVd/aXWhGZF
i/SEUmcxsdaQgOy1qZgYHKhaEfNHcJcMzcogyLlqt12TdrLqOIagV2Z+0/TT4u1h9WV6XSyvla73
xfhLxevzvmYpOYSLE1niJSXHOpdAU1IlpncwOn+Tx9LKcwqfcNrmqp3gccxLr9lcrX9OpRrZYkgp
GgoHJKMRuZ40Ry+fYZpGEQ65OqzISvH8Du7qhV91GPuEWqnPrlrhO0p9zeflsFhfvpNpqg6ZAU8m
aUZisLBUY4ZtV6gmEtyexAQ80fHS2vbd09P17bsGrfi8J74aaVV/+fS5F8aiJRb0aYgLWKCGGJmW
F02KsjExUOZGqo8MY03EaMXvJCLotR5B214WL1OWKLarGgcD0IDNrYkBXxKjcB72jIF3r3SUFKGj
lZpHr166NFEwWkcLG4ppM8sW/exxGnMYsgyMuabDjTEPodgAnkuqTClScGKjlUSDa+4plZELcRnw
2eP5zTlpcNVKvOhMYzNe/Wz++bp5qKneo9q6HnKmAmVYYccc1t5qTFX0nBMGjosGQ9wehQ5mPbVS
bI4DgQZMrnnNy5CXusS81G9gpq9nqahRRlBnYJOBv6KIcFj2CeckAScL/ECVYNtdhAZT+z4RRsNH
V62Yx/eRhos5VV+NYWHu6vPj3U3FRBhT0MDxqovBWsPBn9TEG5bBH/RY/qnhxQbPqXWKRXdRjcvx
UGfCak27q3YOnRXOUS+LeRr9yz4kNIAT1gTnXYwpFOM4HhnRaAyQ6ERsQYRZ+FI5Rpdd5h/hjjWR
qdO592OTdqodrWyEtvsy9G/p5nPLNp9KToEzSqRLCO5EBUHCCBI1S0F7qaJIvxfb/ChcMycpOuvS
qbmG2hfm3z89vuCaHGgChOBDXBQcfgebmdBKkqUc0kjA2clCosV6oWIQH2dT7aU4DyEwtLlqp7Xp
zHVpj6yqh7+9gRH68+N6czeDavQRy/QzBY0A2lgIkfEUicTmAPa5QmCKi+r/5mOcxnKetmpns3S9
2Sxn1yKrBv12nx7g3D5HVOniJGwykhCDRmimYOdRxI7V3FDwL2zI58uEj/qfiml55/bG6gMt60/+
s49/mF02FzgMwFAH05wK2Dc6BSRqBJsOjjznYGmZ+HtdNk/lu2rnIHoTc/Mq6M0r9nqkIRnizg9U
vsEjVj4NxAqDuUAUsWJhecliJfj1ySV59hP0h5gJu+gIq+fqB8++tH2udAnfD5FgZmteBC9FGs4I
RQpPYRloUG8F4YGClepoNMa86wWOvZ8+fMcm7Qx0ZwZOz3Fxfvw0+vt8VxpqlK25MIExa1NORGWs
lvBBElddBgPvOTKm8zue36XoFZ/ORgXGx830erBq1i3mavSHm5sZ3o8pHDw6S6SMmFEPjkJArpYi
cw7CxZDeweOGHk/Ygjc3rYSLY+1nF3R+eh7iY2jF/3Vbtuip1cQxOiQxM6xejiyRHLACwSI0siiC
ILozHqMu+YuLP7D/07FKfNrMYdHJx7aLgx37w+e/7C4cft48r96ej2mTJE+Y8A+bIPII5glCK1EN
Bi7Wo6KjKZy6yBQfR7okKtIXq53a7bEit0uz7qVWfL9fPu5T7/Z+NPhKOyquknyxFvw1g1jLwoSI
eZWwwoIVqiB6UfAX51RMhzqTUDFtdtXOYNOZ1nJO11iBjIdeKj6JGjJu0TYp4LKBuUUMJnKJaCmx
qFS8Z5H5ZKKhF5VtTEc4cQ87adHOoaOp7XI1v3PxT083QxpEh+4t5OIrbFFgFjYNxsexkIeUUkTO
PBgT9IXR5N0gJ6PJu+ftFG57n+FwiXwHlsp2whYwkJJIL8E/JTzjDZGGQ9fRorBUyjAWaQ7zLJBp
L83wqw4+PvxRzXkfXxevLwcFW2El8OVp73JJ4PExHZCvGKu6BQL9iOgsUwqRrM5yPx76nYmle2KN
OD5Pi/sJCXWF57BUCWcTcd5xZO0D35NSMLlShKM7gIx69k4mfczGXnbGlkeLavv8+W7xfbzcnTmT
3tTif/goqnKnZZCHqUAMB2vZJCMvxH5shzmxtJo27WR6RuJKzgF9dobONX6PLeL0vrT3SHyPSsCC
YAwOaVMY4lQFcLtoknjnDtasoxg3vxDYCX+56Qw3g3hqm83mtu7MzfTQR/2v8ceEzpWpCcnKIP3H
EJPKCixjE0l2BhkeELwWK7ngmLaGw8lvjb4YlgZHOQNMg4/bGfTO4NVmfcRejxfPu8oTuYu6D9Qa
llorAnyQiDeUeHNEPKeZSFO9j2RhO3xcGHoU5NRF0+5xO8lNb5K3ohegQe/i5WU7sBnu3UPNKlGL
F5kG0J2YIyGsySRwzHXyqYSkDNjQ+v00p6b/M1GZpl07m541sBZstuiWj/cDD0pFHhHVwhERzBgn
EjiEmOQUsOJZgp+ruQYDUBfPL4svBRilTxLxeH/VisV7ss4t+8/Pj6+Pq8e78HZ7iyEIVhOz7PWQ
JSEkdzlQ5LSgyGGM13nOB1IMbBvH4JhzF+UEtaOcgseetmnn0oHksOsjwIOZBcZqLExpKlW9bZPK
sMDApLcI25BB6SdtiHdMaFqMg8P5olKt922v03bX2qw6E1nNcfXqbV1cPL2+Pe8QPnS9CB/Ano0K
ikoRwc/CWF5MnFijEhjLlolCvRFJvJ92M+n+DD/ZpFU7kVVHT96axQ4QN1fKw4mBb31iPBk4WlXU
iIYM1i965EwJrzUX2r+DcXkpEu4w8gECd/jvRvbbRedMur2d6/iXx9V2cbe+vqk//+d/LWbqVJc9
JXjH1HkiqcLJlAC7QicSqYsp6wL2x3nvcOjyxOKpz6YCO8qPDSL840zg3SXtVHUPTDUV81yDUca9
QGgIXP6KkqCwwCsqjJcGHxn9j4OJw7OZzKYjs7FdQumqIPG3oSCN7grSqo7L2mfB8QRCrHZmcdu6
TApivjLOWL4gebv2fUY34+NW+g6qK/xxOYtCYT7XHjJub5DiXYhkwUQFq115tNFZRPRLXUg0oMYE
DdQJ+x5IYNvvTLpVR7rVvIrh57e71+3r49vqy5EBCRarlrXwr/6suIbCFaS71kLAqjBFYLY/xzLc
UkLBgtaLwgdnBm0U7bxZO8HVsXGHwNknk4ZqWOIn/8c9iBbYvddiuCyjQjvDpNvVnfECKkxpiZiw
uajsMqz+dxcQ9n0mIAJPr1pRFx35d2Vyh8/89PrlebM4+Hd0RJn0MWOSvyE5Joop0ZgGiLwtmmUR
tWSymHMLqOm5Fa2DLgF/HGv34f9YH2oPxPVAHIN4/UJFRXS93MsRLE2HCEHUSRezlDL35Tl0N5PC
dqRYiL0Uf/5U5iAX0gluLZrpyFYmDNLWSIRmySbCGtUuC/tByaaH0VuhF51XxwXvwA58TmUfbRhi
c0XGQAVhFtP0OfjsthhPvEk0BQFfW15cLwRdn16J8PCqlU50RFZ0thC/bp4fNnc9isTENQLgWAKK
DYkJrcK8nkK4jFTwHOEE5ucW4rTnVjLFO5LpA+3kL+Xmbfs6Zk0JOdhwVvKQiQngd4pEwQZCliiW
OOUF1oFXs4yttptWgk5qqANTcC/BdvX48O0QaJAV29hTnWAoTBQDzW/hHLEI0YdgUSpIGqKeESg1
vVy1Q7HO+HYO9ha/vD183T78bcxkGTB/MA5TU5FcgqXlFJEc0yokWFd2UJJBFxMCy+aypdUOc2KJ
tY3a6XRSoJ1YzX2jhsx6f1xzTIRG07bAkqKGKcJ8wiJBMFVqPC5JJYQG9RlK/M081hdwWDczkbSz
MKTgc7T9L4uhMhDOpSGNe/gFj2+sZpXIoohQhyKZgPGoAN55dM6zWHJhl8JCnLzG3D1sRe/td6lH
+ozX7fr7IbcIw1VoG4K2j07KROBg8riqEYMAlGXxAoHdbQHjtl3V035aAbTqCdALy4yBh3KTv20G
BGzOaC3SrRzMu99rwS74Z0ngvldI++jg2JcVF9s46UVhXH0gQMtenhMNd0/baXeYU53iI52G/7UM
NugYyh0Qu7iUrBaSJovci8kj5m0yBBQkGIqSwabi/yXxb6PZWjmuWmlvO1MQYy3F6vHp++32bjOd
wsAnQaO2SWANfLWwMpqODhZSjJZHwX2wQp+gAph22UojOqcJeCr7hfzPxfMhm5fXdF4Tk3YhKOIM
RsOQrtV6G8DhEbhCXNaNjdJ20g4uO/6W0uoEAeU0kwEcWe9KUoRrUJWCwaYKQiO8oJfa2mR1SL+F
dPI80WQr9ab3ynYsyOfxBQdKqSadqxQ4fBl8T2MFbrSCiV1aE848GFsC8z/Lb0EWPEcudWjRTEir
jheg9Zjj8Pbwj+3DxFgdbv2zyYp58G418rF6JcGPiXCgJbx8s7BMU38xTntrxeiwjuEfj1bD6nGB
gRpbbwLwVsJHmj1mk0XMvsK4n3eSEZUsqGVqVXkPYBK7PPXS4NFMzI51qo9vKsvZbITCLFWeFpJU
jPDZvSVOgPNEJU/KJsZtoP9tNsJ0huWC9rNG7aw7QXSn7fyC/2ZxC8ryWAPg9DUdkK7h57UY4IqZ
wvVNics1cwR2AUJcE2mRUTaKFMNFBTOnRm20eNOmmZtZdo4hs5xHPdP25at/Xm5fn0d2+erYVwVD
UykyOTgFPYZ9AlqG6MchjVcuIfH0DqrrrPdTtbJNo9ksOsEKu9BHqXDb1def4FD6y6fSAElj2BOx
cXBzU8ZSDrgcS8DqOGQcTM4RvOlICPEkYvyYjLhRmFMBr7HBVTsv05vsnMNhefe4+jpGjDRqL6wu
TYx6UqLHNZcl3qV7wgJzKoGHyPxZXolplzOROqEsu56HnDH6Dvtrs453j2/rkSt6QqecjAbznCJi
HxysKUQMnReSrcEae6lDoZdeBRwNdPpG4KhpO7n1sjO52/niWjw1e37nmNf4IhzSNgppiKrRUKTz
Ba2ZSWCSIvOSEkVfXE/2+e1lX4Nxpqps0qqdzG1n8bjV3HbGzVZjGS+lqcKEfyungrPVpOfINsiQ
3xWry8FBDFiIqbJKgSWWpbmQ6XU/2OmdPzy/aqXuHMsLvTpCNwBncKCzpNdmYFpm5roCRlIawbFV
iWTDMc+BcbD5YflJ4aiziB+V0sfZ/HtJTl0LDk+v2umse3NcH8yT1YE5byiNA48cjJLIEjiFHDzD
QKkmCYxkynkwydATlkmHewNG6rzi5dEF+Hrz8vX18WlCbHLtdth/rhpMJWfGhOREhYgbAE4fy2AX
JC9tyMwEF91lmTx1oP0bxwanEnqOGl61c+hObMTkuqulToeSiBGTRBbLEO0P3ygYXVRQ4q1LBIk4
k8dCXlu6L3ja40yUjk+0XM7x9P6UsLJ8QGIeivsT94kKZGtC2xlOdY/E0UF6ajHzN72T0vmfYLj9
6UTywZ9SO6UOBb1bsfm9zKjgTitjRcGUpkFi7pTFYByWRiPXpaTSa+pdoO/R1u3GeEfHXrWidtTZ
is+Rv57uFq+3j8/3o44VNaE+C4l8WsnAaSISuDMuZrDrmNVcehWpPMuD03baisU71vdam1Gsv99t
XzfikEVlh/yzGFgxJhMuEYO+xtVZwvAX5tOArJ6LWVHUtKNGhLXtiWDtCL6+WH3ZHFLVccOo7DzP
iJqBW1+Dpgg5CwInL5wJmkmf+jbHpKuZCJ2Ps3ZzV+nTw+vd5+fN7eZ581DPJL7zPId9bOB7UCkw
h8tWcmkDPrQRBI4m68AMCTRepLtmw5wCDGgatdNxvTfqxo96s3rebB5+2SywymfvhjrUxBisNtxo
W1IAf48i4i4zCD7EiPaqYLKBYHmGeHzcXyPOhnZiaxu6OfYHnjAhbHdwlL/i+3UVYnKoKxE0a2bA
MU5WRIS+8OjaU6KEKNyEHEpRF9oG04FOGgjTRrMJdY7XDZuDM+yL6b9s9zEKRNwcLi2TsA6JorQD
ozljxDUGR2Cfc8NC5NF8SO75voj+x0/ni+x/bL2BTSf73G3s3PT+w+Z5uXl+fNlndNc9YDTNsM6J
5xx5UCiCU3tNgnY8wSaLOZwv1dh32hd4/7QVd9ETdzFeDYLET9u7zfP/P78egi61ysyWyIQgYElU
5jk4VoMD75lT4TK3CAlwIv4363AmTucSdXOoxFndP41WQFX/OkcB/iZJNUhsPRjx8A/xVCiv4CwT
cc4kMfbQDtzzWDerefz//z7H3aoeDzAM/XtQJMIJwopCaECtiJcMtSKTATy5SNVFh9eh9/4XPDxv
ZV+Jnuxzi+WPm9dyg8GqgyMUuRYRrBNSOKoihsgzEXPsnPGWGaapPn9PXvs8mcpZblo5O3mBCyHZ
7ap5x992zPG2CmqroAKcYxMQE4fD4SowugrqIZMoOEc0OmnfwZj5IPrpb0e08TAB3pmVHjOXkQLj
2G5V8Jphr3Dk6YCFa6QkNihKKDKWx2httrK7f8buWiH0siOEG/2SPz+/bRCf8Ga1uDvoLXABBsw8
H1G/wpv1TGMgQsHJI8GsU8UUoaTy3KTfD4C4vZfvSN5O3fVW1XqeKPXL5v7xdfPrdvOPQ3n4sINd
rWR2XnMEEQ8UMw0QViwYhnQwFlOmUlTqorrw42FOzXHerp3U+jgssFCbI9SxskuYRqRbeq2u8UZy
9xt+Vgn+ZUrg5jlkMHfIWpU4fFZvMk+MuWTP482M/Z8K0u4eX7Vi2o7sRzzC+/uMAR1+nwg6jT7F
7IoPAdN28FgtDgs1giUqRkWjyCoL9lvuVdqRzt+ytG3b+d129pq2I+RMjUHsQlz7PALD9rycLjlV
OZuYx5AsV4VYIQzRmQmfnMuykvxO0xnm/V21Ax9HJBbudu7bVUKP05iSYACmDJ4rUnkX0KMB9ChG
BVSmTgfJbSrn4Rin/fff7LTFVSvssQOxWLAxL+juX/cLWNB7bAw0AcHPztaAljURjA+s2bNMglkb
uSkmwB/NDFZ62sdVO47sDX57BGi5u4jY6+d5GO5wmaICGNcxE2XwIGHINskLWKu2gP0duDGJvRN8
nw11wsRuWzWTuhXHlwjwxzmE2HaFIdbrsn1Y//w9bQarZhL8jRnrORXhwWNBixPDLWuFWAS32at0
UZR02v8JpTBp0U6kk7i2uDVy5vjfH6D+MKkEV0hm3AepECNVY9UzcuRwDXaOTK7gGX/iRrDtsRXG
qJ4w+oCAfv/4bfPv1o6uSVEc+M6vyMtUadVJYQgBrfIBASlWGbdGnNl7olCYGesUtwRvb//9dgd1
weVjp/byMDWGptPd6U4noTspfy4XM2W8ZUVE3XLLMYrPgmBN9sDQVe7Y3DG0hsuj7/HdEfOrg9go
0X0g0dorX5/xs28Z51MwaWOgTDFYxZwqeBebPYBFqj5iFKYm/LcSE8v46/u2DFHmYKPWbF1A5e1E
HOvZX30Wh9xdg0rvE0hnBoVliAX+gWLgkGPasKa1HVzTmpYCa4EpM/+fs7QaaLnjp6ZHxOGw1Qgi
QY1VTvUXZ2ux4hAP+Ad1xp7NbBjKBlMb98FnMLaZFJaDFjNBdUczrunt8/KaVprSFn4BrHDFatIF
ofK2weRH+fa9FJXBxFxqiElv4LJhQMZFmQF+27YH4FrUKWUOn03vQosqWCTJ+e9yULl/jHev19yO
1flwADbHQJ8V7fcZOURxQjbfyTF/T07k6+mIKTwwr8uj01siDkfJ33fZ9cFY8JVH2T/h6/EUft3F
Y0KLOhE3G27hb56MiVKuzJJc5Cxe6qsNd6FX/gw9/ChxBRIQ7R2i7fsuTWrZ0XQ2+lib0rNPnpK3
inxxM2qZ7r8T1HR8cnwlN3MYk+CYR/sJGymy6pNTkoFfT/OJqquy7vd0/tAn2TfQ9SQOj+c8BNrO
qbhLHFqMJ8Mhl7kPevLQl15Ouzza7BNAggTcUA9lzSXf4GGepJMhXr/hg9ED3ltjFMyFQiWrNjZR
5j0FqioNyqrbM4AqiUhPjustH0nw92eHNJRn7ylYmwtp8rM0gV4eS+Y23/2L2WvBKdqi1tUVqjBj
Llku2URbjKYkWY7x/nWgqq5RAboT6+C2MhzRAmuGt0XFxRsZaaAAQTHzIQUw0a9NWJnCClCvkwJC
LljX3oVe8W2vHi2A4tYgGjuMiCmY6FkQck8xg0W/L5U8V2sBWr0l5kp2FUMHuRYsectWSK5qfC59
WpFPXkDeklRsHMRAc3wvDapxpLUetFdkdCRxH0F1jmxdX7w+ImCAl2O2CIgGp2Al9e1LcxFMTUys
Ict0mzR3g28uFkurXQaU67LhX0F7UXzYpf1GaBUE5sM05ATKHb0RykaNOoMCK4Nqw1asxbXMnV02
5AWouyDuYtUGT5GAVWBac+KuzSe7GRIvJ/GlVQ6G2N08jD0X0Gpn1qClyvyjnfvsh6IjzMBpIUKX
mS+9JBvUcV+83Wy4MCxKYWibgUm6FAFZC0MU63TtLQLvcdUoWgO0Kww933SdDrQaFaAL73Hu2GAR
ze1TTdaQgMD5EnSRylBnw3D96FlLu50EDQfPg3AJBOfOzVoIcgUJXEbOQ6G6zSMCsPUBnxAsA7Nb
u6nM3AL0LwJ2eM4qilMozLVrZe6CB5N+AFBLAwQUAAIACAAXiB1JmXLRNvoDAAA/CwAAMAAcAGlu
c3BlY3Rvci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUtc3RkZXJyLnR4dFVUCQADrszEV67M
xFd1eAsAAQT1AQAABBQAAAC9VltzozYUfudX8NDJ2JlujbnDZDKTtZ2O02STDZ74MSPEIaYhiArh
ZF/623sEAryuc+l02xcGSed8+nQun3QWRYvb1fL6i35+trxczEM9q2aQ56OxNrljef0E1WROBJks
1tFkDfFvmZhErOYUJhdkSyLKs1LMGIcJrwuRPeF0NLuI7khew7LIswKqXzYjxzDGeqjjUhjiB/H1
YzVoLMOQqF11yopKaFNd142XqTFNUjf1DH29Op9xUm00Uy0YiedYaaC/iWJ1KK5teobfGq82nD1H
lJVoL+T/4oVCKTJWjJr1xQvQSBABxz9/hz7W7A7OoHFCk3b1QxDDnkf7oE4HGgAkiaPnGDNxX+Xs
+b4kYnPf4Gtub5VS106VFRSCf9O8Zs22HNt1jAAch2r+YG7HFujbp4U0XbEhZ1rQ2XjUtz2iaC1X
M5ZgZACPUAtoz3N31R3khjPBZiTPzzl5guOxNjU6FDv2HYWyLATwkgN+eyTp9GqAr+PfgYpuLE1X
30rYGcoSbJO6F0A1OuMPl1kllAnSmqoySRNiB9Aa0bco7KL9CALmQMA149ao5CzNckjeiMVNY5IV
D7dAKlb8Z/QslTafmibtkh9dsPgqo5hjUj2GIXb0Pkv0tFtPL/UCP/Z01ATZ/tL7imQFVjqQpHdo
QFaI9spx+90kJ6dF9g03NQF2kefXV+usSNhzby8PHRP6qLKK3m7n7QTTODno/ZlUOPFHDTVITiu2
2GILXTJWjlQAfs1ZTPK2HNtgIVMUnzC8hfTke8qnR0fjMPzp3ghDbGxOBOOjsWTi7TAxaOt+XhdU
CsTJlmWJPhqftnkjcQ5rTkr0P/kfGZ8OYfNbsi74HmBVvEZ294SdRgeDK/XiIeJn6LwFPEOXpL2a
GmumUg3fT8Ai1uDaW36VR8aOAZ4y/jSkfQP0sWQofhJFNblveo4N03dLMcmSSyBb6C4tVKmXBkf1
qgeeb5rOuzh/HpyXQNYAZAT/Bkg1mQ+p6dH0XaBOWBZb7HnSyfYHxaW9zqXsv6IgTU18IY+Q3Ah+
oqDVhXeKjWs6PVvD8f2B7RBozvK8uQwUwWWxZjxPRnumB6j0FrIn2k5pXHeXejZzECTLK5Qp0x04
uST5CKd/QubQjqrtvcRIp9ZOFJZFVWJzMj7LM2xerEM2zyq83OnmCqqKPMB1cc5lNRbJDY4GHnLU
dXMkOCauF3BT9a0REHA968BukajjDjYMK/yq3Vasmx4dRA52kEmqF6z4tM24qEmui01dPOqC/cDt
rP4BYfpe6uo9IMqQ8rtldfOSkKC3UJXoCYewulfftHv1kcDG5O0gfkYxQpAu/H8DzVnxMKinrPYd
5/63FVspptpfUEsDBAoAAAAAAD2IHUkAAAAAAAAAAAAAAAADABwAanMvVVQJAAP1zMRXX83EV3V4
CwABBPUBAAAEFAAAAFBLAwQUAAIACAA9iB1JCdS7sdcCAABFCAAANgAcAGpzL2FycmF5LXByb3Rv
LWZ1bmMtbGVuZ3RoLWdldHRlci1leGNlcHQtY3Jhc2gtbG9nLnR4dFVUCQAD9czEV/XMxFd1eAsA
AQT1AQAABBQAAACtVW1P2zAQ/p5f4U8TRRN1Xpo3TZNQaacyVhCp4GPl2Jc2WxpHjgP0389JnYTC
2jKJL1Hsu3t8fu6e85wjKki5RhlfoYRXOVNfga6qTXEPOQOxEAChaZoYXxhGKRmvZNj8gBChcRlF
k/vF7HaOppezm8lViNJyDFl2NjCGDzyrNlAOr4gkw8ljNHyE+GcqhxGvBIXhNXkiERVpIcdcwFBU
uUw3ajsaX0cPJKtglmdpDuXF+myE8QCFSJnCUH0UPjrXi8YzDIk+FVGel9IwEUL4xcQ+s+PEw+hx
MR3XtzQsbfBoTOwkQEdR7BZl5Hse9nfOi7XgzxHlhfKX9f/khUIhU56fNfbJC9BIEgnnX/fQB4bT
wmETM8p21g9B9Gd+eQs6akED22ZshDLFmVyWGX9eFkSulw2+4XZejuk6ifaCXIqt4fUIQWwDetpM
6v0F7wtk+K2Ph5njEZ3DbDHmTNEAKt9Kwi75h19t1neCSz4mWTYVZAPnAyNoUdxAcapRZrkEUQhQ
3w6pDjrI5m38G6hs17XrYlvAq2Xdb7sKvmFLry7F6iYtpXYZGCbWPZGYiRPAzokeS+E12mckYLZ9
RuJgxPoEfoBUtHwoja4hTEuDEQDCcFeKAoTcRhmXYZhUOa277d/wnYZsTQtjQYCtfwGtQDanHsiw
dZ6r8neoTosKmHl4v6gN4v+AjboUPWpqNUt+A/lKrk81kKLKbcNpYvvxzk6EINumdaeKpmuevhOl
CvTqQAsc7GKs1Gz5hul3CsPUsvcUpjI7aLPwafVZ5meoz2obw/WZY8Nh9en7PpFs0myQOOvYO9mF
zZSqT7O706jn69kJCvM9m5bTjzAfk3cjrFbCsg41rFE/xpzY2SfSPUKyd8Tmf6AAwWcUwMb9+LPc
5FQBVPxKRX6oBl1L22Y7y8BzRrinvSLykEx373F9lwNDS72eYTgnf4DdSfFNg+gX67uaX8ZfUEsD
BBQAAgAIAD2IHUmXdPd6rAIAAAUIAAAzABwAanMvYXJyYXktcHJvdG8tZnVuYy1sZW5ndGgtZ2V0
dGVyLWV4Y2VwdC1zdGRlcnIudHh0VVQJAAP1zMRX9czEV3V4CwABBPUBAAAEFAAAAK2V226bQBCG
73kKrqo4qspyPqiqFDm4cpomUbGSS2tZBpsWs2hZkvjts8ACcRIfKuXG8jIz3w7/HLiIovDPYn57
o84u5tfhZaBm1RTy/GyiaPc0rzdQaZeYYy18iLQHiH9lXItozQhoV/gRR4RlJZ9SBhqrC55txONo
ehXd47yGeZFnBVTf1mc2QhM1UIUpCMSP4Kvn8tB6BgGWt6qEFhVXdFVV0bOOvMSMUxepD4vZlOFq
rRjS4JIYm6mvHqSYPcX2XBd5nfNizehTRGgp/HnzP3wmUPKMFmetPXwGEnHM4fzrDn2iWD0O6Sgh
SWc9CTHe+eUt1O6hvmkmia3mQjO+rHL6tCwxXy9bvuIMXpbuWKn0goKzreKOBD82QX3chM3zBR0L
pHi9j4sSy8Uyh/liShMhA4h8aw5d8ve/+6zvGOV0ivN8xvAGzieK31McX2gqKfOCAysZiN+B1ATt
VfM2/guE9+fGdbEt4dWx6beugm/UkqcLtrrOKi5dJoqOZE+kemr50DmRQym8pn1GAnrfZzj27WRM
4CdwIctJaQwNoRsShgFwgoZSlMD4NsopD4K0LkjTbR/jhxkypSxJ4vvI+Ai0At7euifD3vlGlH+g
Wj0VUOKi3aK2xP+B2UOKLtHlNHN6DcWKr481kJDK6cNJanpxZ8eM4W3bujMh0xXN3g2lCHSbQAMs
5CAkptnwFN0bJgwRw9yZMJHZXpuBjk+foX/G9Bl9YzheYpmwf/rk+z7iPGwf4Dgf1Dvahe2Wam4z
h9uI68ndCYL5Xk3DGleYh/C7FdZMwrIJVQx7XGNWbO0K6RwQ2T1g804ogP8ZBTDRuP4MJz1WABG/
EpEn1WBoaVPvdxm4lo1G2WvM941p9z1u3mXP0hJfzyC4wf8guePsu4TIL9YPsb9eAFBLAwQKAAAA
AABTiB1JAAAAAAAAAAAAAAAABwAcAGpzL2RvbS9VVAkAAx7NxFdfzcRXdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAHWIHUnwHX9Ef0IAAMo8AQApABwAanMvZG9tL2FycmF5LWpvaW4tYnVnLTExNTI0
LWNyYXNoLWxvZy50eHRVVAkAA13NxFfrzMRXdXgLAAEE9QEAAAQUAAAA7F1rc6NGs/58+BV8OLWv
vLuymQs3lY9TEkKJN74dy/am3tQWNcBgc1YCBZDX/venB5CEkLQWaydvKoUqtZG5dD/d09PdzwyU
rpLY42nak9c/w/l0ds0jnyc3Cefy7wgTnXyRrlj2UL8UPkd38WQ+5enR3eXZ7bl99P5o/X7p1OdR
FgYhT3q7tUh3PEnDOKor+OmnnyQr9rl88zzj6yd/M7SuRuXOBcvCR34A+BJQJF/VjLp6zh7iCKxA
SFG/SNc8ncVRGrqTNXHpg/w71swv0m3KE/l0WMehKkiShizjRzfhtAYEK0jrKkYXmzLSe4rSU/VD
YqhyV9EVRbocy9tsO2eeDKd+k5FyCP+pcgfRETIV8wAgzuIk27gLIakfxdHzNJ6n8u1tBeMA60PV
sO2uZaJR1x6QfpeO+nrXHGJFJYqmEH0gSZJALve/sa9cHoeRx+VBHGc9WdUURZFT7sWRn0qSlbD0
gfvyzUPCmb/UocCIhemMZd6D/Mecz8EHXjw9ZLPZhB9OWRh1s/wGSbKfPD7LAPn6mNm/Wc6gP3T6
lmWPx3JnfPrz2P757qByvRjo5cD9al9fOKcXd/2zU7hpOLwWd7FMVp6U8uO6zHc5DyTp7ly+5vcg
IpUvOEvgmsW5ntTtnsiSEOg4N/ZvNxvxWwpDis508aW7OuASLFzzuyzruvbrFznpPh0l357k8fn/
WJeft4Q++Dh3AnirdGOvt6fbwL+VM5/YIxt7STjLrDjhBdD/WlqOFIgTFui6/PlmlCuSP8jElFAj
GYbLqMcM+dPY6vU+je/YZM6LPzw2mdzEV0k4DcXUGs0jT4zPcSc/K0b1lzDKzmG0DtBJcdB+4t44
g/nx/uNC4KX7f9zLAFCUZoujMDlnPMmeL9iULw/xgCcJ95f6hIIDsIgqhoQbm6R53jqCXi9O/DBi
yXPFph2od4HJjQBIWMUSaQjJ9HyX1CH5PGDzSZY7vfMdh+2NEAJAlWhjbwUqq0PLXu0lpCuS2gwK
800DoQUUi08mbwKEqpLWFIiHDbw2KQSScZaE0f14En+zWLoFjhvHk5VeUzckvZleRDTfUHboreur
aNIko7EiE8pmqaiQ/ykOIyjPPRABFbmm7d3HNVQi1AwqmU21YroY34ClmdC4U08RieBVSG+9XgHx
LuTfPspzqNz3EVQnyD8H+QBjVUJKMyiYa7h0AEsS9gxJKYtFktsC6n1urmZIAF40I/LuT6kEU85U
lYImbEAdEGlMNQxDRxiyNvQDCDdC65mBh4k8mYDFDvQ3ybNIQwbRdAmRhpIMl3D5cWoLKTfx6gaR
PAiVEG02UzSP6ovscXojinevx8Fx86ycIHfnlbyfxRaUlVECmT93KkbgVLWRRpN7lJQ16jTKeDJL
eCbidk2r/cgmdn6AQZO3M5GW4bz8a+xBacqREWQCNK0hNFc3ylrKAcC2MEI6VA+kNxw0bCisHP4U
0o8DvcSDIyq0I/SI+FIBrdFMKlOoS2tBRRToBCVkvlV4YuVtwxOjvzo8MW4YAwHWgpfCE3Tdg5a9
IrRMhHkzpKmqhJvNeEI1qiqroJyzbFclHcfzxOM508pLy7v6LMlT8QVwB/8qS45LIWXjfvIuR2go
EqZNAapGOaFnSRyEE+7b3wd6lV8GBeGaszSO3g6+CRG2lo4+c3cFW95AjxRkqrrryuV1Qtk5NPQF
A1ji/s8bpgO33Art8KFnKAcS1hpaTaCeraxeDDDM2ngyycO9NPQ0+hwnE79Tu3SLScsrhpfnnxPR
hST5rdVTS6uGPGPhJC1TNQYmWUNw6M1mPaQRME1vapoG5G0P05rYtBW4hnbh1k3AbTTDzXDg63Xc
9oRPISMv009x9EXkechQsoBXSsmxESywmQ2wKdxnhDNvhe2Xm/OzQvL1PIoq2fEKOk/RYufn+pG/
oM32I6hfoV67LAdLxCJQXWzhS6oeSERpiteHLLYHXpakAGQwib2vS0CdHJCOdwHCCAChhoAo9ciP
AkpzRKa5C5ApPISbAtIUcw9AJYLPDJhZdD+Kk7OYVbKBxbwH7l/zNI/AcjqTHUCxogFQ0gio5yNm
autAh7E3F/EsnCWgRnEWBs+jMArFas13wWGzjLN1GTk8lRgAjzaGFwRyFEfdxzDJ5tDMZQ/z6Kuc
xW+Gmeq7IWMKkNVGkAlSAhfLOzT2evCX9/Uih5fHHYLJ11m/qEgkFJIz0RrqRoqHdusOcn+IEBOE
eZXlHljC/cE8CHhSuMTcDkkTU1NvBomQwON1SEXs7g8IQQHuVG8tZiYSEdWsDlCT6ppSqQNzNylt
FDBE7PihP1rD5cdz6EHzpK8ZkPTrt+RgqCGcYzYrSkoAzHcF5volJBtX/sIiP2+PVxhVyA/Xm/g0
TT+QqNIIn84V12Ny9/fyynWt/XTIJ/weSr0oixHPF0CHNci9L2L4DBi+F2QcTqc9TKHXomu53xpd
8OxbnHzdxKgHQWAyajID+bLjaGr394vx7fWZtQSTM4wIkobzLcweVsdF6SzV9uJo8tz3xLpY74vj
isLghNFj/JWLDsSUKG6KRjOQ/GokIpcSLFHSVLtq6C9pL3Rsx/AlJykSpQ31uirc4jjOvy+wvqba
moSQUx1rwtI09LDm+KUqpx7c9i0ihf9ncSgAjx4f7fqIwASWqNoInEoDysge4JCRu2fhi376HHn2
1a/eJq4rpDnWaE3U1a+E1A4V0q15IvbcnLtz9rRujoMLSkW1RvYQ7nPuyVD4J3E8y1sZ0R/zJ8in
C8m5ms5jHPrLpXLxR55LdQirtRwuZuUonkc+y3eYNjQSj5oaNJDWqC+WAvtw0/Niv0NMEggXo6kF
PnCIrRYArQniZFqWRiJRs6lo1zTk8/kkC+GGJ56My9pXFYwNLKlKU8Gmy7YJdhaSqx5WUTMP6z5T
EMSoNbq+vTi7vLxyTseO1T87O7342bm8vXFuLp2+M768vbZsxbmyr0eX1+fO6PbCujm9vHCcfOlM
UnEzrVrgGn6hdR6dwVgM48KqVCzKYkh/KmkqEblBVSL8T0Q5BnC0oSju+oZcFTSecS8MQi9vNDVJ
Vfdcbi63Lk1kUq9YbqaYUMMUa9aq1lCIomC/IgTaNDBNbybECFRoEVdCFF2lkmo0RIIxqyCBP8V4
mc2EBCY3V0hMpGMFS9AfyZPQ9Z8n/iH8E7q7hOQjZSKqq54ppxlL8g2l5Q4v+u7OrtBQnuxOWcTu
eZLv8MLx9DnN+NT5CkWLT9YhrGnGlEGVlL9ywX8hQ4n6kO/wVmRvsaAiw/AMcIDGZWdxvTO9T5xi
w1k0U3hpDe41h2ealMFsEInlj/z6hGfzJFoDWkqbFTrXxK27mbjE9ws3O9/+WEJEZAmR/P0h0r8/
RPVHIFJDQEz59BtQeUfswOUbDyuA3ocPh2j7dKrKwp5PfWwAQB9KiwNTKHsI0zIge710wvnMgXLT
WV3gPSRxFANbmCd5Mj2exNG9LP75WBGTnztGk4+AafGZnMgn1SUtteGzBCbCKsyevLd4EfE+sASg
V1pWswnpRtPHEcAqrEHn7U7ZBHqT0oQKrHkUQjZzRN9yvLxILBeH3vkc2piTd1V4P2pEjt5s+sCC
AI+hQi1xiXi8jbJwMmKTlP/lVhTb/u+K9dyGTzwIW5Bprmz5hbMZDIfHIN/f8//IiOik4dMSYATy
oSWtGQER6hXMYLww56DkN3pT+TpGaCU/5y03LK14QqgsGIDcqeF4f9A5OBFTVszWstXqlEsuasPn
JgCKhhX1TaDkO5xXgnB1XiOu3Kds+CgGGGLALCo4UyUknDKrObMkfno+rmS8OYg9LmCA3tch/vgq
B74XKXRJRah4gkBpWCG5okIxKy903Nh/zgskyh/waCTJF3suS0nLDlHX8kc8GpZt7st1QauirfWq
vWVt/aNYBmte1Sn1uTxloilM750sYbNtPccegohGg6Ug0VbWK+0+zIq7tMqsxjx5DD1+DlKv4twd
GNVL3T5iie5uEjZEdFSrPG/B2OSGnFuhGLhJfTmrU4zngexU12GFymL9itBajq7DrmtSqEoED3Kc
i3ERT44jHjwteDWhap6T32YOGfKbzSFTfts5pMMcOo18/sT9IcuYy1Iuiyj7kakD2jTw50wksAfH
exRtyI/1wyaQS7VavePID8VYOo8sCcXTIUWTs6MdWB2dFp1AsefTtNNVfE9DbvEowRVLxO7hWSzW
q+C7tUAE2fj5dDqbrK+8FU/oiUen/DM2dX12LFoiGXL1aiN845IiwVcu2WxfsnDKizXJ482TME7M
f3Y84YPX9j4VslB0pQiptUTz4j4Q8qir8E3/ie/XPJ1Psj18Wzguv255fABRWulyj/OzZ2D1SWf5
9W/kvl7vX5N8hP/VOSh643+IPQoYdLIl8HO87/5xpr77m01JsUG6mjuHDz2dHNQK+D5zlFH+Dxip
/DEJQ+4s8Qt/0INa/7GPPwyTFr32Ln9sd0U+JIayjgAhgKA1hqCr/veHZBQn4+LNJFF7do3NaoMY
UbQODGOIFb0pMOIxf49Y+QyJ2xIjXGJ8GZ+u1/xGtIMaE30RHmcMeWW5sZI4TYsW53/FIvRx/agg
WCdLX57zNGUlHSeEApba/SKY8EGNUu6BSFere/2nw0HRW6199cu+a42Ja6rcWV5TPGwgZjdSGgKg
gUf3BXCzYuErNmnQDSDiEUKEmpFrxTNcsxgbD7RkpbLOkj8XCss9y4+y98CSsqhAEv5vR+n1xCtS
LIuTDlDeyptHDd8cyKEYfn390llso4rjTrHY7HwrnrnMG7MTcY14vvz4FUa8K+P/B+9+VzSyasNX
HHKTsbdmbVBu5i6+v8aqaobOFyfEKL1G4MlisUOsDa0Nu9izavpChsZNCO8KxoXtxzuULGNLa/gm
BjjapUaZgjbWtJZTCqlN36MQIxgQVAj+lgU3O2Vjw8zfpXijxR/j7RZ/zLclrgYQ10+nN/LnOPk6
CWG8xBeelO/ntuS1Ja/fJa8vZw0dqWpLXlvy2pLXP4m8Nn0tG2YkNf85VLXpq+BgPqGvYaZNX/l2
PZfx1ZuCi0ILps3LV6YKqqI23b4EyV5gGlskV/7ofL/tp03f7xY6NV92/n0xzgiMEDa+1/KfPtpa
0e6ffrr+9wUBqAhV0FnIfrQJ4LNt+3E4u7xxisbcbA5KeaEx38dL2zvwfe58qdVW/rpWG/1ZrTb+
E1tt8matNn27Vlt921bbhFYb3CFDqwPBxSfyL3wya1vtttVuW+221W5b7bbVblvt17XaUEFMToJl
lsurbFFkr2AIltsUxdtFn8PsQWxfrNTyZIVGIFx7GBbrTZ8uBDSeq+xG85B/L6r/ADqYvFnUmnbk
oMZVVGO3Gj/0z9lXLhrW/iMLJ6Kc72HzC7TBbA4Sv3q34K3NW+wjvLnc1Q6D0tBNLPD22WF4a8Tf
2Xt4a1UvUSX011El/GdRJfInUiX6ZlRJfTuqpL0tVUJKy5VartRypZYrtVyp5UotV2q5UsuVWq7U
cqWWK7VcaYMroZYrtVyp5UotV2q5UsuVWq7UcqWWK7VcqeVKLVdqudIGV8ItV2q5UsuVWq7UcqWW
K7VcqeVKLVdquVLLlVqu1HKlDa5EWq7UcqWWK7VcqeVKLVdquVLLlVqu1HKlliu1XKnlShtcibZc
qeVKLVdquVLLlVqu1HKlliu1XKnlSi1XarlSy5XqXEmRvYSlD3CN+Mlw+TdDK1mSLH51kMsdjXbd
MDvoSbKcsKeevHSn4rrMdzkP4IS7PCHUqgYyfKrAhEy8XXf4ayfgwynSFKHEDytnENJ1D3m5rHTX
CXdW125iM79j6wlQIidGTX1+kThhrm5xdV3l+Rk4jpTNO4z8BNp2h7AE4S1KkDhB1izxDaaxwBAn
qDgBWIPqLeKEuuUEFkrCWVUWJDaTBTpYkgSTmnakYEXMwwRvGxOQJZ3F9yHUANm6uu3lsWRKdpLE
iWzFPi+OrO7UpBvxO3IX86nLk+IkopIkDcKIJc/y6ZTd81SETe2jyN3SlOpH/jCcT2fXPPKhUCcc
Au+nn346kI/xkFoqoVZX7Q9Il2Ay6hoWUrsD27CIPcJIVfon8tFdPJlPeXp0d3l2e24fvT9al7ZA
oTwhRfeoLpzalWsHg0CXP8A8Kn9Y4oan2fghnJaTq6MAmpFimaMRsQCINuiSPtW7Rl+1upZu9YeD
gUoRMrah2SV1HZeKNnH5mrcN13w2i5OsCo2MFKWPrGFXQ1TpkgH8M1Bsvavq/aFG+gQje7QHtKrg
NXQ8UDfQmaqee213Cu5oCvkAN8H/DtEh/QBALWRTa4Rx11Bt8CFWbfg2tLuYqANF61sDZJJtQNcl
HwYJm3Lxo3tHdxxSA9Sao37tmip+l7JgA79HFUPE3vqvj/waZttwIxvruo5p1zIVcPBoRLt9qppd
UzUp1oY6UQ28DXchcTve4lwVJwekdZwIaSrZxLnLwTrtj+yRYXUNe6R3iYH0rmmptIv62sCgukbx
0NgBdLdny5MVqEjzibkBFYhIPSQKI8/4PfOetzt2qPdtbINPh8MuUVXUHVCddkdDBfc1czAi9ncc
W8j9nnuLK6QCoSgEmm/qFeTLgywwMThZ/Fy83CEqOcSHVPhTMWwCwdpVFUuDgO2TrmlADqDYNvWB
bVNCNcA3TxMxmY7E7RVlhodNr64MDjIlH1G4Q/j17rygSosZrZuHSGQ/BWatNhyBanAIsQZ6t080
1CWm8f/EXVtzGzl2ftevyONWbUHG/fKIS8PrlCd2rPUkr81m02ZGpry6ODP59fnQFCmiCVKsWVfy
YtNECzgHOJfvOwctxwzv81xLLH0zoYE379eLe4TeN3m3Fw9vPnwfN2/ft3dn+/gaW9oUotZhQRs6
DHx21FPQj/130AuYprsuP4E/yybmoFVKkigdFA45SmI1jwQqpC4BqCSWz2oS+/vF3aatycFjhxK0
Hz58otZxEA0dV4vdOT1jrs32//rcnZRk/JrTawEdNaMqgogTbRDeRKQeESLCbjrGNcJHx2I8MJTt
fG9OzFyLtmqYkDJ8FhQexuHpfv0ILzPT1itDBZyMXtuSuwIXNudMvBcldyGdWpot4cnbxH3yTPmz
J3DzPHt7W3ejV7WIoiX3PJh5/AngUcjE838G+4CNtfg5WSRXIRtA90Ci4BapDUIHLzOJneJBGWwx
ZWclb8zfVqLx4Ewf2dDH9pMbvBxk/7DrJ/yFa1P2ninhowqEKgnLUBo5z0bsPfVwAm+onELcScvY
T1hLYxcNaZzeGSwc/1kKxhBsdUEJNiBzOQ831EhiQLDEpWAJi76jgFRIY+7nBJTd4rXEQ0viUTfs
Yfz1o9+vCw2u5bXCD05/Q5HAkWpkRr7IJXPoZIlz2NYuGqmNzk6IRjz5eL/+AVYzM42y1Gl7KKO1
EqM5VkJPFKOKhUNlzeaaFXs2U1zvrEi5gxtqQEYijNDE6RAIcERUCUidZnaJ9IdrnIh2wwlT1r1t
aNEvZhH9l37z5f7ux1hOoDxdpNdAv5TLRFS05QAKCJLaEh89gyuGaGi8RPrd3G3Jd6OV1GbVCCh2
oXcO+OOX9cOws3rFislzJh2yjCU2RcS9DtYeko/EiQgjsTxQfz7u+WEYb0tdY3w1+/wYB0zQfqyW
7qpWoGFRduQ7Rx7++td+sd47My8OYK3n3FPQIVNQCdggCTkg40SauaU22OAOQspslnr5sbGpji53
m7pcP3zvH4ev+5Qn+bWikyF75DUkGeRxKz3c0GFzFRPEINcz7kE9Ujvl1XNe1SuPDXEMeFBV7Pnb
uP62BFn9i5wMk08wwyamtYmZJAnEKzoKwKQswgJTyrGgvFPdJab5PHn7JJ8Ha6GHRmZww2p/hHff
vt1t4v0f3x/vdvuoQaLZtdjuZGesMxL+hOgM1B6RqIMo0J2mLKQNrHOquZPHM9eCLRvIrVdyFq0+
jveru/tv/WYY/aa//eNh/XDo8qB6nQ4skhQ58gZciVgnGGGaShaotC6aS/a1sUx7jxsPXtUaqIZa
h7nv81HykyFqZVwiXico4ZlDFqYwDu6y70A1bGd+VvL73DiK3pmWzG4GMB/6zXJx9/tOfPDKAjDV
xPEVKIcA8jFwd8FKFDMhAlVkAE+nNGjJORhRzTwTrW+ItmC7EPB+vRn7e3/7ZYSWLxvL7dZyYwwe
occ5B3imFZhndITqFBjMxkRh/o8CbEPMWs1heazmMAAybE/gbvFfw7Xf+6cs2M0oV6JHIiEW7JYk
sBtYKdFZmSSNYcbEOtAeznJVr2RbyyPQLqblv24DC+kfNmx//M4WBF+c0CQeOpE6omkh9h5wxzug
n+Rpl10SkpmuluR4wpk8jUg7LMfdqS8evl3TvSCFC3vhead0JLwcszDRgKsLHD3LjuuOeRpCLcLB
HPXay1Vr7dUcCu5to4QjVn7g4KvyzQSvg9NIRcR0EimeBbi4ANoO3nSZZaa7LP8pC3wZr3UYG7F1
HNRu/9bD01AqKnuLUqBjqkgcvTcevIVIyngJRSBjGogKfEYHGajhOdX7OJvrql5SH8uxYnS2l397
94JH2TXnhSHyQlydA/0TXBElQEqERsL0KiOfZ8dETJzLV6jhxQTrMMW+O//oy/hVrRZr6KqGGW6N
t3dPy3Q37LOY4M/G4i3njDtKPPfFhDVMOHBNYlQ4EmaTTBeh1/0KbfH3w4fSL2mDsi0ZM6uxSgF7
CMuolMX9yylxhFKRnCadEMA2iAbECvheB0JtRQheGHMu+jeQJ5a2DXlKSqp3E5b3+XF9O+1m4TE4
hCkkCSDNGKIiLGUQGcsZsd53RCHo0ySzYjJctJm7BU5s5m74UPiRqePwNXLFd+6X7zaPH/v7h/F+
v51Cbo1AxyyF9Jw4MF8iEMZBCjpOGEyd2g4RVaWfbvH+7zftZz6ND3dP98MWO8ylrlTmxjRUNnZ2
Xt/v15uDkvP1x/LvYk1bqKwnMIF8ljuTAd090BCsiNhcGi2cdgibSejsf0ZF7mMtSwXyytBMP9fS
bzGLZDfjUFpS/7G9wLCnAGJCSrzEVx0Z15kSHXLhAdwhVQZDTPAJHMF0nbyoPFAvdLLydfBMpY5Q
x+4+SrlP+L9/u+XX/KVWdM0mUuWk4hmROMGHkM6UAvaALl2nQBCS9jyqOjkczlMJYMaGi1ixL1gN
T98fXgSQ1E6711mfmM2OgN2VSOMYCVZSohCNtI1cKaVn3PJgnkoA64550ej4/ECLg/8yLtf9nnQo
DY3klCujz1aB6QbeITtlEYhLnUOuDFJjetGlV0rHu8lPB5dpuBLciaEhuBh3YP0fT/19v3kE4NzX
7HWxvgmo+QwzloxwoyExHIw4rjxJVjDNrBZatst980kriRb2mPLgy3kH692Hm6f7VT+UAry5lqUC
b6Y+hu8Yixl0QSZZKgZZkNB1+Ge0TDBqnHDny6j7mU+UmnbDtdRjwwAGZScXOC5dr+6eNssprAJ/
b4vYCp5c4pWUAEtZFcgE8X0HfJfBQ2NnO6WkTsLli+rXeb/E+Ur2y3NXteyNEDWM41HKvL27v/lj
M5TotO2ETH8XuMUUjRzRCBm9I0JRR5zuPIITAJdymUrX/fTks5fnlBM8D1e6LltOsBTLOWMdh/Vm
vW9esalob1nyCV6rgxalVW4JPsB1GbzDAHGGqex2mqsezjkTqhHTlnYxqw/t3frdh1Jq2YYVaXQ5
AZhLoCJk4rUFkwJxId4D8Cqgv8C8ETzJy0LKuw+vBJV3H2rhe94QfkFn1nP3fdx8ud3VLibA9VzE
SMFlZElLsmCZCKE64qiHBTkeBVhFF73900WM7Vgt8IK1BGazqNM/Ldd31084sYdrXz5/3pQ2OqTm
U9WeTXlFQV7pOHhahuEz2HzoDCfSu9h12iZlXzH83cwnaNpuuNJgpI0tH9m8TQ2nioBePYJvC1Fw
D+abJTY6C8R0ljWxgVpiYzSRl2JAFhc2HPbLnGw67J+oFWmA9XEs3afqKF5g37sP010GDgI+nQJV
dKcOdZEqZuNUX0RSjQIxKCGuyiRUNjzaLr+SDE7eapiGaskbtAf8dE4zPvX/HTHffX+9QOi9HacU
ICfCAYsvidWVsrfKpFwMwCEwGD93HQmGJqalQQpo+G3xxV2cfDNf403Z63HzWNoRw4ebl/FDBVbc
HReO8OUeDaR1/2Vz9/C4Hn4ZHx7Kzae6nw8fmhgccpUUmqiIxCUkeJNDwCcqeA7iqajJs+rJ+Xkr
EaVuiCgX47GZ346/HrbWFMxDlD3efig3MsDelIKZw7JDaU8p4lkQpLPSAjonqrW9vLl2trfmax0a
BbJVIXQ1WEBW7pfj4zg83t0/DNtrMFuS7wChtxBWeSYNmKie7hskgQjPOwpInT2wLBgAu4gAJCyV
dkudvh5z9FillpLHGGhlCwhezDPWPp9v2dX2jg/Ytn3OAuVD6XM4JVSpXRsL3iZE4EhgWhJnudMW
tEG8kgWqtV7FDntZTiS7/XilNtD/sdrOzC1yKJWS3xBMppLJNmJZca234HX3sZyp150MPBKPRIes
DUcKDoEra5ZEl3OwPJxX+nmBMxWbWeQqr/8d69AP8zLldKnkEAv8y1/EtdgyGT6VkYPqfKeRMGB4
nIhgAT5ix0kySvtIU9Du/IkdLXF0qaWGGqu+0fnBl/uu4qce8GQzjC99xUlQoUGzJkSkYxEUFNRJ
QKXEotWyA3/x5s8LWpU6agkq4Remse8LO4cd7/vNl8N+1fbey/R3wUqsU9yAwkZVLk2BVEMV+Etn
o6JcAEaJ+NOB9qFIJ1pFB09USg/iuCa+WvbzOm7/45Al8Ulla901n0pbnDLBS+NT+0y35DMYGJrS
Ghm+VHjN+Sse/tfXGNLhE5UC4/K4EI0v953k+Db+cvNSDjfWwklKMSorhrMoJ4XARURnyp3FAI6f
FRdSWIF5X41nb+/771/XpwqyleVVgsxUGBsqjG6nwm+/3y73BRtjp054CU6U5piMVCSzktuF6RCm
mMPeu5QdZwGgqsl3Xias5FjxhgOs+P422tv8nzdf+/txedTmjIHLoJInMbDSJqIgXRL+rDzojU9R
5JB+UpuzluFAfjdh7pn85cv5lbXbuy/rzcP21vFhwzl5nwwsGcDDJSKsAn3M2ZDUgVZmrUst4JL8
Pc3/qs8eSnGiuXjwRK0nMw09F3rkx7DrXz92b6uLNJqblJIj3hY+hMxNAhfwV+2581445vzFOKtM
fgZpleFa8EV/LLgw/Sw7L/rht6fvh4kNVvZ8FUtPvms1JKeFFAkQOkGlBkcylFAnvEhaUtMi08da
hNlKhypsx65qURcN+d38GtbbcTNu38Xsb2+AzpCbdjGTU7ctuLqcbUqMEVCLUDQot0ZCSRYMjNUF
0XUXtYQaa7XVaTxY6+ZsS7e+UTVNT+NjGhdPX97ffYGJfjm0LwfApAyjpPOlM681mFKWlOB71UUW
pPbs0u7MfJ3TZY/5k7Vmi8apwZcPezafxi/rh8f7P6quTQlsnWTJApQEcBDQJxVLTx7s1RgVI9VR
TyH2/6tpU4t9VSvIW1rvO1W/jX98+7LvUk23KoyxUlkJgNjBl0QEVwyJMiTIxCTnJnapfR/ocK5a
CKaOhShXH2qjylUF1k2sQ5UMJ13X6ZJIXFYCaCoBIkoLp+lyh0zoAlfni2bnYUV80wQVjlrRiLDW
ykt6Xs/8Cby2FP8Um+wodeWXehhJqC23L60vLxxkTaROWolOKjlt7c+1o704Z1phMwZVtFQt1fft
m2/98HV/nczqQnwZ1xFMN8FuHCs3fDOxFqcUXPJdFFGLoJt2czBXJYM77rLiSz1P5H+P8TD0xOgl
7wA7hSxvy0gJbiqtLg6rQCJocvKipIBp2xuGgVpM08Abpfpx3MkuZL3gpanmwfXUXFceRIEmS1Sn
fCmrBhIEbIJryqIJzrzaDX2e+ExcxOihyEwdX79xzLplo5A9caqtIU85l3Ius/KagARDXCMhrtSR
MNFRrZVDJDxvwv/+1N8//s9pe5xpNq1/WrVpuNLN8eFYNyfkrHOw3Dw87BGsMrqg6WLFrovKAzaT
RFMhoakU+oImSZhS3LBaRXuue3Awby2W0Q2xyl+zLS93Kv3T49f6eqlDwJOIggSTlKZGQAjsZHml
QkkRQkBgzJcl1N38p/Z0N15Lb2lDeruc2fjN93Ecvn4ah7svm+mXQGyjIC+lsUmVbYlMKRBFDheN
U5cXTJGUMiTJQnNnVSc6cRHqaS53orXWenSmYsMnXG9nB/R5sf7H0/SmC5tCu2DFiVNWGtDGkBhL
Yy1AN6s9JYZlahgvb+9dpNFu9rYSu9Fa7t4dy71Qbib3i9vtr7MJjQ9uKlmWKbwnoGjlBUNTyA/M
jHJJ4RrRbbvuf96nX8avain7huhLsRqf7wjgB4bq4jIXYndtWRkD9Iw9lskhEPkkwXgzJ5pZgBTN
QYbtiWvL9ay1SEvZEkk28O/LlTZdjFtvb38g2VlvSFCitDRKo8+JTFgEWet41En9s9XRwydq0cdG
4JvyUCV6+ZUkk/FukcnE2z1SI8uSxC6XV+QAb21mGeBdq1TQOqU/5RW58uslTl1sv/1eK7NqBJzF
as4R/2183MZKNQUYtW2YhZCMhFHYDkEFCdXik0SMAQmQJjIghIuujD9P3pb4ebASemWOyRO+HI6M
p8TYj/1m3F5r41OF3ZWTyEg/0fpMkosTGKDE5yCJYkyUa0TWefUzTuJQhHOJYPvETMllQ0k7TvHm
4M4fzPQRk+/vku/uEpcbzb70jXnh60LwQg29IMk4I71iiD7s7GXCw4lryeyqIZmzs3fkNneP69UB
xSuvA081EcZkOUCkofKmQUI8BAgG0/MpC2GVytydfYnyYN5aLnccoTmoxRTm6pjiPwPL8qmgNuX+
7actuJYK2ZEAZcFFbbkoW/pL1Ek/RWkbu0sJNRY5HVoweFXJ6XRD+AWfbeq36TfKvNw23kXphHDo
uA1IjOVGGS83ypItF3w7T53lwTp6blMP563kmt7vnMtlhG01HW8+fZyajbvil800In2QrtxpFRJJ
I5hCcDtBkWC0STJdXPzC3GdqXxidSe1aUs9j9MOEVq7vX+DKYRmsdEvdc9e0pO8QeFLl5QzqaXmn
zyHp8IA9nhhPigGE42cEjSMMdSHUqndAts7N7t+j659esj2zJSZ6MKFC8gmOpdx/AO1w0lEC0m+0
CdarzOre9csc9dL2mM7zxWJet/uxLppc534Yt3BJPN+EEbsytwiWl0Zg5KW5Y5IABfKRROUiqG+0
XF5U3NqtcGLjn0crFRarhv0M0jYu8Qy3BXjLZ+Att8DbUUVlLje3C7kxsVxDBlqhLqtMhcvOsFcL
9PHMFZ74/qqWrCWu3r/mMVWO6yZgzDK6DGbjkPLKL2agxHoH59QqO/Ac/7+8XUlzJLdyvvNX+OgL
GNiXI1aJoZE9T1TIvjl6o6ZjKHJMcmSNfr0zUb0UqtDLe2JIF3JYEJBZBeSeH+SFPuHrk4DH1Vui
9UOH6Fkl8O6Mvn57evu0aTJueEJhrwyFDWII9KYSTUkWkzQBlAszYGLVdkXOlaEx2BLcu0d+hpN4
P6dwflwPg9pXYTa9V7GZGjRVfsAnVLIW0OJ3dOCSMm04YdpK/I7Y2QHHpcAp8RzzucX+y0JpeNaS
anukNp2sB6Bc2GtVpwanBC2JOJQu8E3Ag8BOwwA2r3KKMsPorJH1lnW2zMbO97nQm1UnnrJPFdZs
Bh3K4o/ZSOlhl3iQJV4aEC0MRIs1YJNz5bLVjkur3F/MRo5H3LT0zg07YZmaFk3A//91W516lIm7
shCXaXYRRDMoV4UFRgxcSNjkTnOuk6TsSp1a+y3uzvRi3N205OkezW6yQf/4srrdnZofF08gH37b
PDVJP++UZyqChRI45usx/VeKJSyZlEUCscP4hRLfyeynKnwnwybcLDrcSLE3rf94fXwbbWIx1DYy
B/rfMYUdsg69d0ecURoM6hxA3rOSS5kU7Y/maQmYlwvhHw8W9Hd3ZSKujfIKXG1KQsSiUMxAeyzd
SjRoZ0IQWZd3EteHxVuS5xg38MeV6zjsv2zXm2f86ojvwaQa3BGbAjUZGAADAdG1sD0LkVSEBnvf
JuaYuXji6synN2193FK96n3ptTn0P/6JsbJjB2SFE0jFCqyiV5GCHeQwHyLhsEWQpgpbJYKafOdm
lnb99dxTFU7pM2GO2/+8H0U8wJlDWV9/4vFPzMDxcSRwU7DexRHLtSNag7HvLSJU5ferCjtScsIS
ue8FSMTyoSPgHpzqBOq7qSg4b7W+HF6/A8cFZBvmOSTse9g6jkQvvJEJ1Ju/XDFyqdClHXPTUqx7
bJi9lBgWvg3Hk1pDlLIWZ4RMpMIyMKXAjPYCpIYUYEIznZicaLt2ogkN8/0jqZimicPj183b8/MQ
zBbViK4/H5AgBgKCpgB7hmKnlLMG3DAFlh6Y6eD4gj5R9EIh8GH+U+XAhwE3LaHzVLBkiEwwq4r8
efMHKArwowZ7bvgF5V5WnCOQjsWorwgazAbhsQwyGHitVLJ8OWuDk5/+/Pj0pqVQdcgGc7Ulu2cp
+p/vUYrUqK9R9chaa0umgRE4nZGI+hv1iSiqNWIKUnEB4etdc9rwoOV13rzjJJcz/KYM59OyWhWC
P00N/xXhpFKERUR1cxxMbS5htzvDow6sBGXeTxb5fIKhfNOS3tlyyhw8od82q8UI4EBrXXmhGeRn
VpkYr8BElV5jMXEmIH4Uz5pm1sA3TSe6aVd76JCwkHsSPj79OlXuJlGWQbkXLrBZhWlMTSrQjYWX
wB2zPryTcj8s3pK86Ox4heBvQxfjC0zx+PutO+bx8PvrIGwGVwPUNwZBhIfvD/aoCCrDX5LKfIJP
007TUrDpfbcHNskmvr0sjuWshu/b8aykBVwMRgKKW0ENKA0KEg9NsqSxao+dbUUaTdtS9TCv6sDY
5Z6q8MHfT7AypAMLAV+DdzaDnYOJ+ZwMAasdhK5SvGj2N2FlHKlrmDIr1mHqgXbU8/503j29bV6e
EIqHcyy9rbGO4TeMizmBMBkgCKSLO4gggY0nEWScgWdKxWt9kumKl3Mz+5Etjw9dHuV+Q8fv/vvn
b182vULV4GMEz4YRirWeoGEQuMF4YnTOjhWt5BUm1j9VqNqQMmGjcy4tP56KHdwL60DJaI3RD1SV
FKOvCIgVNMXub5PBXCzUuwmWyGS2hhIre5ToaZ/g9unhEFWUyu1zETwzHWUAZ0+g8e8UFv9KBhtG
OMbgxHiWz53P47QtUXrTI2pzEmHkdjgxNdSI/9/un2KADADPBJQ1iOGcBBjXUlBiC0g1nZUuCThQ
5W85usOzCacdnbJW03h27Uf8+fn5ET5jp88avNWcwBghOjmQTbCTsLgB/wk6DjEK+QUGx/OfwHQb
jWg4qHXjMw7sFI0ubSviPKzbIJlUeTMgpmqeo8gsEIWQb4IrDju8FHDPsoP/Ivfcv5/ZMafnRHvQ
bNyYewT3nXFfEX93xwdjugOs8fbpV8TBOGgV/HgY19QeBK5OBCxGjpCIEn6DDVp0otRyV5ScIAac
mLIhS+l5pF6ptZjE0378Md4f6jC4Ger5o3Ng7mk4LIgzKWQiLjsJXo8oQuUC6u6qDjKc+8RWgict
teu5M6+ZWs5TUQPA8+BPwja/ZWivZGlVUvAKBXakChlACLlQe8xz5omaUC4WBZ5oLYq7ZzctZasO
uXralRoRnf+nDZadb17uD3XydJBQurbrRSk5+LuRIAA40F/bCuGf0sagOIWj666L+nXWOqFhOyNb
7vTcM9V89zFq0J9PMw7JZ4p5hgzsYDUSJSEpWWt9KRhNYCGFd8s4zJEqkLrOB+HW7I2Cxcvq0/b3
zREtQ9A9CmIEp92AOU6UxFpdgViMAgWpYgG8fSfAgZjkxtrJWkJs793Nil8wAlyvD6nhEQZKADYy
bmnYWiDRq2/JFdDBSaZYsJspVqsJRowTElSrhl2tL8rCD7slTpta+xENE2I9j8VrubMIjkxsnz43
rQVDSnUIldhMOUxECVNYD2UEAq6DSGFCgBSh2fj4LlUYd2MamsDF0+eblvxNhyfLOqbxKORyDG/b
ZIJ3wZMcsCyJgtmI9g2hQSRnBI8g9C9+jwvBlmZIS7176FC/oie7x2vq3GIQ6FBBzShserPLv4K0
MWCgIQosOsUBXBkEFrFJS+nBu0+ZXp2/r8ucyeDX5w07los5Ow5Lo5dzXIK3nVFSAQJGFtAYnAC0
nQW1hToKS2qLKgS+lieM5qCz1Nw5cxmc4Kz5Mx5x09K97DDjVntx+efRhlcD+Gs0EV4woTLUZHwh
Nhg4HzG5IlJm3k+S8X/27Ha96PjVeskPYvq7D0Ph77TFLOmUImWS8Ii49Gi7O0M94brAdyoFvKHy
XkiaIwoa2pdq7sTplZnGkT8svj6tPo1j5vJW6Ro0x19qw6T3NePosF9PZLBVPOVY7RVoSqrEJML7
mYwtPacaRMdjGq7XvCOD1uqAe/rT3cee20pLLGjDEBfw0g3sibW8aFKUjYllcGGlek+3dURGS/5q
blIainmiZdu09Tw28KsApcbc0iH2z0MoNoCZkCqSkRSc2GgleCrae0pl5EJc16/1fP5DjAbctBQv
OmxsDkG8zR9vm6dav3I4tdVOFyFQhjWFzGG1rMYUM1ju4OkG8MOYsDM7fTJTQwWj8+is4UJPIbzR
6UKUi5fnx/t6Jc6hAQ4shfpCrTUcDCBNvGHg+mEPrkeUTx88p9YpFh2/ylyfLXXGD2zG3bQ8dHYJ
V3TieGB9zevehxn6Emvlw84pwlsDOO75aDRa9GDb24It0SC7cozgj2T+HvZD40qdLso5DGlZ7Ugx
I7TdF1//nu4/tnjm4KKDk8cokS5h9xIVBEFRSNQsBe2liiL9XXjmB+IannodQ8Yt7UwyP/36FWT7
j8/rzeOkc9FHLNgGE9rTDKarEBlNV7zSJoDaU9iicFWjxXSN0w3541EtN0vX42Z6Lcjq+elh++vu
2s9DAsHVINdgXhQnYeORhM0sAox02I0UG5o1NxTUtg35fMHtbP4xmZZ3QnBWH8EwP/iPPv4wCUcX
OCDMZ0MCBb9A6BQQadCCMgd/y8lcTPy7wtFj+m5aHkSPMTetJx4uT5lJXobgIQOAavDKBkEDscJg
thAMFgu7ishiJdiXySWZr7if5YxIBroWHWL1VCSjPEjblwoX8+3ozjNbMye8FGk4I1RgpaVlgWDy
nvBATdKORmMuw5QfZj8tkA5DWg50h4OKq96i798dzGisbqgQTcrWbFlgzNqUE1EZq6d8kMQhuqg2
8J4jYzrH/C59DHdnje3D44a9XpugdYupavnu/n7S+WUKB6vQEikjVthYS4LVghSZwZtzMaQLoAow
4wkb4/6+pXAx1wh2QafS8+inoWn2X9uyxbh1TS3ToRqEOa5dZAncTaxIwgsarCiCIOQAilGX/NXF
YDj/aYcTnzY8LB7mloldmnUvifTtt+XzPoNdQ+/DxUU7nLKSfLEWLFWD/fkC0e4DbDQCfo9QBZu9
gr86ezRe6kzqaDzspuVg02FrOcWyrM3vwyxovjI1FK5gdLpQYUBPE4P5UBEtJRYlL7hrkfkEPl0v
ItNBpRqtcCLiPBrR8tBRZ3a5kvMreO6HhE8HCy/k4muXV2AWdpZj6FfwREopImcejAn6Std/t8hJ
13/3vGXhofcZjuHyR1Dn2xEuygC/JL0E54DwjLEwDZLJ0aKwvtAwFsHHn+a7xrM0y686yCbwRzUF
xXxbvL0etVDtxcCXp73LJdlAmA5gCFjsExDYFyWis0wpbPw7C4x5nHdClu6RtdiT9WXx2whqmFaY
X6qEs4k47/A6CVD8llKFF+WAfAtAo568k9Eck7WXnbXlbFNtXz4+Lr4dwtgTL8Sb2k4CHwWx5wTN
QA9TgRgOJqVJRkbrrtpWzTIntlYzpmWmZ0mt5LR/bH9bG36PLSL0vbYgKXzf58KCYAxMdVMYtvXV
e9eSxOwCmHyOYszmyj44/OW+s9ykI64dNuFt3eHN9FrO/S/x+4RF9KbW9SiDQEcD6HtWYD6aSLIz
iM2Dbf0ZFCKIafAjQfJbo6/ugsJVzvRB4eOWg54MXm3WM4RwDLH/MGCQyh0qmBzuCKLWigAfJGIs
VhgnCXi5mUhTTfRk4Ti8X7znQMipUuTd45bJTY/JB9Hz7NEEf33dLrePu37omhiql/ZQLzINoDsx
GySsySRwzOr6VEJSBgxNfTmh28x/xp1vxjXcrMW8TsZiGrHddB9fnt+eV8+P4evDA8YoWE3r2tvd
TQOSuxwoYgtRBE3G8KzzgRQDW9ExEB3uqoxiu8opMI7xmJaXTuOUXc8B6lurhtXAhNJUqho9lcqw
wMCWtNhck0GRJm2Id0zg1S4OBN5VjfeX7ZmTtoyjfB5jcdTYLq5vPYr421BBSncVpPU0ZQ0+FMfv
IhDT1yIzLpOCzfiMM7z38uJpqnOfkQL4uKW+024Pf1xOnELMkb3uT+pO9WGvnmTBRGUsYqLBF2AR
25I13qsEBwY8ROqEvdT92s47oW7VoW41vaPkx6+Pb9u356+rTzNVhZcByFqpW3/Whl3hCqIO6+H2
DzDkXVScUI7IlwV2krrKmj+zaHOkp8NaBuf3KOFd8+5kLql6CR/8f+wbQEHD3oohJkqFdoZJtysU
5XjxmdISm/Uz3neVVbycFcO5z/gn8PSmJXXRoX9X13r8zF/ePr1sFkdLkh7ap33MWDhlSI54lRhX
mFrNgUjNsohaMlnO3sXSzNyS1mn+gD8eehLweuFjPdf+jmKEgxEqKqKzUFgCADrNYXcbddLFLKXM
fXqO002osB0qFmJPxc93ZdqDIp3g1qJBgIh2Am/KthI7p7KJsEe1y8K+UwL/uHpDNBfzSJGrYePm
q37evDxtHnsYjolrbPayJKaMyIlWgcKUhXAZqeA5gjg7e03reOaWMsU7lOkjLuZP5f7r9m3T3LUF
asJKDj6CCWAuikQjcQgIxhKnvMBL9WqS5GunaSno5K4daJvjVVXPT7+PbgIZIM+pTrAU5hY12A9w
KC32amPXoAqShqjj9JKq0Sw37VKss76ddv3GT1+fPm+fft1tj31/G7pPNVXnkozBKbx7G2vwogYP
oWqcoIsJgWVzlS09WeaE5GgHNexI2nmdUkzvw0Z0zBrZhqMxVGcMv6AEwQpovDotYKe4SCag8xXA
FI3OeRZLvu4K2N0SJ9T/8LAlXasO6brnAhyM3HKff0eM9NrGUjHk61fZ/15rrMFuSQI3qwIzIDo4
+NKAHFBgX3tRGFfv2Hq0p+fEwN3Tlu115wgqrvblPf6XMlghh7DB0FLJpWQJGymTRWzIhFctpGQI
iEgwFSQD94f/RTjdRra1dNy01D50WBCHCqXV85dvD9vHzZiFAeqJRm2TwLaFqmMzGg+OeRKj5VFw
H6zQJ1B6xlO21IiOilDyEAb5Y/FyrFrgtWzBxKRdCApvrfQDqKv1NhBeBO4Ql3WjpdpJ2sWl7iyu
1QmAzHFqSWjvXUmKcA3yXTCZSBAam6O91NYmq0P6Z0AxzwNhNlRr1TGbtD7kaL4+/d/2aaTdh6xF
NuBve0oC3hEjvJJg+EUPuxDjoha+aup/u/FsLRla9MgQs5e3el5goaStQZoKwB5p9pghjphRBWcS
rAzJiEp4Py21qlzqJscpT70weDQhs2MJ6XkQuZzNphRmqcJ7kpOK4AQrb4kTYG1SyZOyiXEb6F/N
pow5LFeMnwxquDbLzs42y6mDmbavn/3Lcvv2coABr95ClVk0lSKTg4Plo0CsedCQaBwKWkB1h8TT
BZiDyeynipqbQQ0XdtHxLu1iCgK0fHxefT54ZvVaOqyMTYx6UiLegxyyxOi4J+AvO5XA7mb+LDDR
eMoJSR2X0a6nWFbo+8Nn2azrdQAHxOARqG4yuuBVEpFjY1MKER33QrI12B8gdSj02kDEbKHT8YjZ
0IY514GSdAu9mnUAvC3WA/ol3WHlO2Zua2MzpRFsK5VINhwj5IyDBscbSgV4OhYb+FJ6Pw2+p+RU
QGl4etOys+7xuD5KzwPyEXdDQR8YhSAzI8MrbjiYWYFSTRKoPMp5MMnQE4KzA3UEK3Ve8XIWOl1v
Xj+/PX95HZUvuaF2En+iQMqZMQF2vAoRHXnY5ZZpR5KXNmRmgovuuhxQXWj/xnHAqVTQbOBNy0OX
sUNT5GOtRjtWMh36dmSxDNut8Y2CTqCCEm9dAuO8gJ2Exa62dF/weMYJKR0LZ7mcNjT/I2H19QB8
MRTAJ+4TFQTsGDQ5QXp4vPwgSE8tFlakCxnzf6WJ9h8nwtb/aOLVbsU6YmfFp62LXx4Xb3jh+UEW
4lYBR0tIClZ0MnhLcNIaVH/mRDKrufQqUnkWtqudtCWLd5TrWpsDWf/7CI6kOOavhpshQwysGJPB
JUY8mRpnYGBLMY+ZDKDVczFpGxtP1JCwtj0SdvcZou25WH3aHCtpcMOp7DzP2JmBR0eHCgUuCEgu
OFOaSZ/6umE0VUPChnb224ZNK7r3lxN+2v7bv7vdpYQgSWpULgnrGF7g50BbZfTn8N4K+HDcsBB5
NO9S67C/k/D7u/N3Fn5/1/LXqXZwGzvVeT9sXpabl+fXfQVBba03mmYaOTikHEGqKKJKgAcRtOMJ
tnTM4Xxp0H7SPsH7py25ix65i0PsCyj+As7Iy/+8vB2N5FrpZ0tkQhAQrRUzEM5JcJT8f2vHtpwq
EnznK+blVJmqxYKBgSFVPsDMYHkMMRVNztknCxXPsdZLKmKy2a/fbvACCJrULg+WQtvTc+mme6Yv
HjUsT1GOnt0N5k0FYYWcml3C5OT5NV29HMViJg8dJSxQ1nSZ2cDcV3oAl+4boHYyWJyWqGYyOmIo
Nzyp2T9OptXdhZ8PYi+tDkep2dakD5LBAvvbDBlmyXeY7tumCwqvaQegQgmDfcqX84S9fgZPz8u0
T6062qsi/D5Jw+GhbFd+LieoYwkQ13pIUbaYGK4i8LjKc31uuqZjOJc3gjOcjaei4bBMZ80RWwz2
/HxaGuO3feZtnlfZyQi1QCt1AwykAUVat9B4DLDeC1jSFENYbX4lMOUrXnMXMm+/naXdhg7Qml45
RycATMF0/iJnMMzAKxTzRCnMJm7rPGCGbmCqbSE4V9yu5Z8jujIRXt3QzqppbR6TFai1z4vk/eTr
nS9jD4W98HyHYm6XwMD9ZAzIC1wTc3IBbWDeCMY+5eR93kzTLkwVrtyp2blFE7PkLF4v3B/AYwIC
o83auOm3/4bMaYPWKSUofx4mEPcwr56krs58V1FpmmDUXyk8esDfZFnuH2tlMnkN7WdpfI/FO+IE
k87uD0FLWf2VF/pBgIczKFtCDx1/Aq6Dac0MYSmmrK8VFCm1dKWkSAm21D+Hn1sGsTevnmVmCaCa
458DFUgFGiTmrgZ7AdRGWHCgnTNleE5gUy6vlAAo4q/vSxFCKxN7riXGsXk8b1n+s4phCR3iOlDz
AH0XTE4Q7q6Adx66JnLTFrolqBu6Adx0K/k1ijhKjc9rjpziuVvN1b86BT5irCHSoEzqBzbDiHEH
3Ycxaxd1QIDb0guRbxu2psoYy8S4rI4Y55RsZLV5S4rbnJkKYNmcoVjQHYFFwnF/CuZL6ty1HCUd
xVlDPuMqvgox50w/MeLqqcVTr5ip6sQutuMEsGi4bgS4x+8HBiY5lHroua5nU5C5zqecF4v4G3LS
9+rTVE2sGiUbbh7jhcRzNHxY7n4t1ofj4GqsV8gp6Fegb5tUYhSpL3VfSaUzy/KFAUoOWFn/T6xX
Ay2V/tTMSBYqXz54yagRRZ/5LN7PziNE4AuuGRmGEphFDyTueITAPT4FPVeA2Sg9L3SYe1nhqGml
yQ3jDLDUK7vGpRBuHk2hKE7BXj7tptvZ+9FExzgQwxbWaeS4sRlIqYPwsgJqKycv81YQACUsmqb+
3qdtiTazxfzgqzLcrVbQzVugT8TL5Zas4llCJh9kk/5OXsnL6wbdfOBdncavv5Is8ib9vdgeHtxm
/Urj7V9jsDzHL4vZLckDN/MT7/EUPtPklhjFm9skzfwa9/fLDV9Db/w39PCj0CsYgaw9rIazWCd1
7VHmMutrbWrPEcHyUMXxfQSowXr5QXCl45PNnBzZ4ZaMNmm87Ni217Yi8pps4c2xTjsWM9s0arn8
2w3ZvsNaT2bjzS4dA227dZakG1qcdTzeNqMWpd9utB9gFsaTZQI4sP0jZrNtdck7PEyTdYdmWAH8
1BJ12k5+q9BOx+i3DLhVbAsRtTwgSCPao+r2Bvdk9OeDIg3Xc+9x9OTfaZ3T1QS6f6yJLsEqdLjU
til63tQBm9x1+gi6yBT2S9cRdJsVL8z/sW2ARVC52L4g74CAWcOK32WcUv2DDcZBpH0fku+9EfmV
F3gD5NPNrEqNSS+AtnLPomR2g6DcAwspOvzx8IjAcopnM/i5JUAZ2n+FGbnR+pkfAvHxDhmsp03D
wfta5N/dDcTF4SLUdGARHkBb8Wy1WN80Qlu0rw1HvuiT7pP/KJvRMlAiIm2YwtSSKxfIbTcCJhpn
JPgjdQHURaw/kgn6fkbZoDT2y0bQ8Vj6I/8aAV6bIWgv8rvqCiyjMK7j8V3vvq8kTHDzuFILuzUe
j9TP0ZUpoAzYEUCf7ntiIC+TwBhMwSpjWoKKTTMk5uyLtD0brEATev24gNfuf4VrR4ORf0euzmzb
6+agfxBYVrttaZHni/sIanRBxmj/AlBLAwQUAAIACAA4iB1JfIdiOasDAAApCwAAJgAcAGpzL2Rv
bS9hcnJheS1qb2luLWJ1Zy0xMTUyNC1zdGRlcnIudHh0VVQJAAPrzMRX68zEV3V4CwABBPUBAAAE
FAAAAMVW227bOBB911eoL4FdBLXuloS2QNZ2UGdrx4iM+GGxCChqlGhLkwJFufHfL6mbL2s3Llpg
36Qh55wzw5khb6Jo8rCc3s/125vp18k41N+9KzDL4QO8YshFxmivr3/6pPcwImS5zUH9jJrvMJwz
Cn1t8MhIuYZiMEYCDSaraLCC+M9MDCJWcgyDO7RBEeZZLkaMw4CXVGRraY7u438Aiw84z3umZxt9
PdTvolEY3kWPiJRQ/1TMbMGzdSayDdyWFFe6qsXJK+BIIAH6+2sdM1qIFqHGVubKsOAyKi62c7SG
zgQpcA5Jh62C6ut/rVki46w3KdOXjIqZtIXhmEExZ2KJvlXGvzVT13Xj1TQCI0Dp0NBXy9sRR8WL
ZjULfowcjPzL4/rY+w9v3/x8FG0bVRdmFfrPx6rZezI9jA9Rw5DxJKOIb/d0nlFyLpmVMM3paAKc
xPYxTQIpKomoktP7QWCXsmruXlipi475xC+G47XwKAl802zhR0DIr4MPd+DY8q2DylHokeAZfY4I
+z5CxQmKmDHSYvktlml7iW+cwTrGaL2DPe/Ac1rv2umOZRR4GKI8B5ocQVxdH1D1NdPooCynzViK
CqFgzjrX5yVjkm0VhjXvYwbfr/WSFtkzhUSXLSLRzRbdAs9qhCLO0Va2gmCqtU7wvJeOlnK0HECu
6ximYfmaaTdYOEixZeuESIonoIJvNdPp1vzYBn2znij7ku0mnGa67fF52Bm2pTddjqoBApK8FM2p
Pc72OlYwNVZvuexZJcxrUALAjt1MjCkVwHMOQuX9AGmyQWRSGVBM4Gy7NMfR/UVq1Cu2YccWD/1m
WIHEPJExv0uB5RuoSU8hq/EpR+LlSU21J+WqmUG7ExlO7Bwk0jLOJ9ky306yZf2OJFt2F3Zqeelb
SZb+z9Lzojw3lSs52pKxHc9xjV1qSyTOzYf62lSx1I14dXx8VTvM5SWULAT/2IA09/XnK0nq7khd
v6menLM0I5BMfky+qLbJRnsAVDD62yTVBW0aZuAO41iXLwT1GFAIM5TR5QsHlHRi/ne1w06t7cqG
6NS2zxhZkYyQqkQagVO6YpwkvaOtJ6R0O8b3sxVX85NXrvtLnZoxCJSRQlWSv9PkoeQSTT8j5hRj
0DIiK02Gx4wTAmvZsl2X1NY3OeWjo+l+SJANCO9wvyxnX2uvh5LSvQZcyCtGXXrV2g1Nxlkhpw1+
mWykgB3jwTZFZO6IEtmJFxAhXkiEPwjD3zqkXl/7F1BLAwQUAAIACAB1iB1JRq7KBjxAAAAW4wAA
LwAcAGpzL2RvbS9hcnJheS1wcm90b3R5cGUtcHJvcGVydGllcy1jcmFzaC1sb2cudHh0VVQJAANd
zcRXHM3EV3V4CwABBPUBAAAEFAAAANxcbXPbtrL+fPkr+OFOj9yENvFGghrfnKEoqnXqt7HspNNO
hsMXyOaJRKok5cT3198FSMmUTDlm4+npPZ6MIxHA7rOL3cUuAPqyyGNRlkN9+2e8WiyvRJaI4roQ
Qv8dYWLbn7TLsLrb7Qo/Rx/y+WohyqMPF6c3Z/7Rj0fb47WTRGRVOktFMdzPRfsgijLNs10Gpubl
idCvH5Ziu+lXbhkW1QfnYZXeiwNAVwAb/XJHpMuH6i7PQAaETPZJuxLlMs/KNJpvkSvv9N+x5XzS
bkpR6CfjXRTMRJo2DitxdJ0udoBgE1mGyQ3s6MgemmhI7UPOuG6YtmlqF1O9S7KzMNah6VcdmYfw
j+kDRCfIMZ0DgLjMi+rJKIQ0N8uzh0W+KvWbmxbGEbbHjPu+4TloYvgj4hp04tqGM8YmI6ZlEnuk
aZpErrtfws9Cn6ZZLPRRnldDnVmmaeqliPMsKTXNK8LyTiT69V0hwmTDw4T5SstlWMV3+h8rsQId
xPniMFwu5+JwEaaZUakBmuZ/jcWyAuTbc+b/6gUjdxy4nudPp/pgevLT1P/pw0Grv5zozcT94l+d
ByfnH9zTExg0Hl/JUWGlm1/N5ieKwiQSYqZpH870K3ELJEr9XIQF9Fm3DTXDeKdrkmAQXPu/Xj+x
3oYYMmcWIvDBaD1ImFTN77pu29Yvn/TC+HpUfPmqT8/+x7v42GH4muaCPtI4VOJMlyIGq4/1k2yW
Fwv1cKh5V+7055Pzn/Rrf3o91P9VHiX54igsivDBWBZ5lVegNflpKYoqFeXhXbWYw+Qp7cI0NPMz
HL5wPmDiWi3vw/twGhfpsvLyQtQa+K+NSsFFYopmtq1/vJ4oRvobnTga6kPDnEWxSWaO/n7qDYfv
px/COaAbhqUn5vPBARDKygro2kTD/bBRntgmr+mCPvIv0xi0NBxW8vPGjAaq3f8q4mkFDvvj2y0g
B8CZmhrpJ9EMWUmc1IRexO0R3g8d/JlG+0nOiZMkTJ/P06wKynn+JYCZvwsUFCCIgSLrSZHaFp01
FCFuFg9yqk3HRprVF9ssIkK/X/iSynX+OEBSJFSz+9EDN6R22Cjt5FoGheFQgIJXlai1/eFsreZL
6TBeOJ9PinAhfpTKxYhrvB9H5licNRxPskoUy0LA7w1XyWCvVV1E/xJxtf4uu8qw1/oKq0ZYG/2O
KTTf3OL2NAWPqLtIERDGlub0s1CBGXVETTF+Dm+b9eugdUwNmb3AxglDvHFkFfnUPE5WWXydn+YA
X0yrIs1ud4WQ7LjJNQQB6Z///Ke+/6dhx5DjhBEHnphD7ITRjo1NSh1EMcdUQ7in01gxJjtOgzmx
bA2R13UaRP9qp0Gsp9MQSsR+p2nm7j6c++pBCBnXGsE3zPL9VEVOhYwgB6BZPaFhe21eAgB0mRGy
GdaQ3TcKczN8EoWluwWSjwrtgJb3jcQ0ok8iMaRlGnJeyzyx+brmidFfbZ4Y943p2Jp9yzyB1y1w
eZGFNoFeLeAWYxom/QK0SCgzH41yFW58ZJfXNF8VsVBlT3ckhuxsODyHRD65rIrjhkiTkLxTQZly
U8O0L0DGG4eG9HOWzkXiPw/0UnWDQH0lwjLPXg++Axa2FY4+iugRtv50vu2ECDuK9KafZHYGSXCd
NW9w//sFs6HQ64R2eDfk5oGGrZ5Sxwwi3Ubq9QSD1+bzuTL3RtCT7GNezJPBTtcOkTY9xhdnHwsA
Igo1tN20kWosqjCdl02oxlDW7SA4jJfLIbIIiGb3Fc2CgucFovWRqRO4hfbhtqEcx7wfbhrNEnsX
tz8XC4jIm/BTP/0mcmUylKzhNVQUNoIlNqcPNsuhsQjjR2w/X5+d1pSvVlnWio6XIkvA+us2N0vW
paZ/D+wfUW91U2CJ3JHZJVvrkrIDjZh98SYQxV6ANyxKADKa5/HnDaCBAmTjfYAwAkCoJ6CExuTP
AioVIsfZB8iRGsJ9ASGcvADQQMWmy7Asr8RMRqdHl6iN6l0Tvq7F1+oyL1O1hfFohZiRfbC5BbBJ
L9jcdkzGtmGP83glgUjVSeDFKmvUNsmLy3BVikTuE45W6TwRhVIlstaotgcrXBhB0CG0Ly6UWM/j
Wq4Wy+v8s8jS/xXFaZ4vB892nz5kMZTpWb4qz8Cx3+pRns9bEekSyE1FKbf6akUjul8kQkEk1lMk
jlHSQ6Re4qhcg7L9iDkGxFZPxLZAogfikxkYrNrS7Y0d2fu1Dd4F2O2e2EMrnH3DsEUJ35sI4c4g
K22iu/JUuaekAhffb9rMhFSB8L7Iwsh+HlmWV+nsYZJmqdxifFSmF8bw/UqUan2qF3tYzvfCoxKe
0xvebKZneWbcp0W1gmqqultln/UqfzXM9BnIGDyL9lqdmIicWYT1PRyHQ/gWfz5X8OpoBavfYLtT
vZJTCFQU9eQdmjHaz3um9HGah3J9bqUZd2EhktFqNhNFrRKnG5IFayPF/SAl8SwWu5Bq0345IAQZ
8KA9tHZFxAFPrzWGmySxLbOViK2iopFRwpC2k6TJZAtXkq8giqisy+KQde0OUWAol8rptbDYccSp
2Vrwrr6F5EnPn8MsUfXpI0a5+F09xWdZNuDrtUpwwp0oDnXj96bnNle3HIu5uIVcW2YEGZTBMoPe
gTz8JKePw/R9g8bhYjHEMkTQrXXBm5yL6ktefH6K0Z7NZk5InZDDShYEFjN+P5/eXJ16GzCqxM8g
aARf0uru8bnMXRu2wzybP7ixPCwcfgoimZkFaXYPi4gsARyN2n3RWBzp341ELvkEa5T35c64/S3u
NY9uDJ/ULoFGnZ58IwamHwTBb+fY3mLtzVOIqYE3hxwzjbEVJA2rYNe4/RtEav0v81QCntzf+7sz
gkyqMbMXOEZnNCQvAIe4Us9aF24JiYF/+Uv8FNclsgJvskXq8hdCdh7V1L1VIU+ggw9n4ddtcQJc
72kw1EseIhIhYh1y7TmkmaqWkAUqJOjD4ZqyYjO4z9OkTtYhQMgvKpbaWGNbMVx65SRfZUl9QPmE
I4mpY0EF501cuSsvDzMf5K686g1OwjVG+kqQQBHfKcFSFPJYtFkaicZoX9KRw/Wz1bxKYcBXyKKa
ta9NGPJPjbG+hJ0o7CIcrClvadjqp2E7CU0ENupNrm7OTy8uLoOTaeC5p6cn5z8FFzfXwfVF4AbT
i5srzzeDS/9qcnF1Fkxuzr3rk4vzIFBJq8bsflytWcSTmusqk0XLOK+lKuWpCIbwx3hfiiiatSnC
f9LKMYBzepISUcL1NqHN0TlgcyzNMp/cSek+72nO7Ql1aKxDAXktympQVgnMXYCGwygE5w9KdbZ0
HEPq8VZ/bJTfg6oI06pUbe/ajeEcbDes8qJu0t+1SmMLM6xZqCdEYkLd3kCUOwSiuG/KSZVeg0NY
uCdJzCAdTbZGDCCOvdUl5iY81FkfMzWL9KTOMHjy9gi5j9nNAWGmQSDpxcGJhYN1eXdBKoBqFvjt
PI2Sh3lyCL/SaN8pnzIjB1GbxQ7MWVjIUwq0uTOBnr0rITk0jcYizMJbUag7E/C8fCgrsQg+w4oq
5tsQtjhjGsISrn8WcncMpJaLl7oz0aLdIUGLBo85yG4JPVj3Dxa3RVBf4ZCZHt5Ig4f94TkODcFV
ZdT7Q/UvRLUqsi2gDbVlzXOL3LaaSUSSpFZz8OWPDURENhDJ3x8i/ftDZMPNR+vPoKVcoi3F4guE
tKBMbzN1QvmINX7z5hB1e1abFo4TmmDeCobVXVo2tjkclnMhlgEsi4N2KJW7LFDVrAoV9I/neXar
y1/tmKrajtH8LWBa/8y3Q6vN+t4RiuMYHEnlQN9E/BJYEtB3SrYjE7IhJyF9pXIsKH+jhVqHGhFa
sFZZCoEtkPnV8aaTPFdK47MVpFvvfthe6f6cEPVtj96Xl+SMwFq3wSXt8Sar0vkknJfiL5ei3oGt
V27U99oUyIIc51GWn0W4hOmIQwj9t+LfMiM26XtjK455AqnzjhBgoXFdwUzX4hw0dZjdl77ACD3S
V/XVdVi2NCFZ1pWKPtjB8ePB4OCdumYH3tqkhINma4j1vdoVxwk22atAUVchLmVhOPgecs2Fhn73
u6QgM4xxXdu1TCJoolqwLPKvD8etiLcCssc1DOD7fYjffpcCf5QhdFMyUXnVyOy5WAqTwWLWdAyi
PHlQayVSN8F6UUrk4eyG0iZZtC11F6znCi4SfZfQ4/ptD9tp5s4+Tb1d139VpzQRkCLL/LC8ldXK
siv9eAEhIm9/rgnJDHN3pX1JBSgi2q4AZQ2TxlAVxHeXuVIHRrtL3UvIEjt6WlgiYqOdlecVKsvt
8P+CvQGTYqiYd7fdBvV8HuhBe79Ysqz32WQ1s8VpF/YuJ5MyIquhIDif1vYUBLIyqut/QpmKya/j
Q1x/NR9y9Nf1IQ4+9P7kWv8IczKX107lB1E0Lyf8iaQYEQt0upRB7C6I72Uq8udyYgdqTdZewfMs
UWfmwX1YpPIqWZ3o7EkJHp8u6mygPp/qne1yYqFIb872C3nV4DSXe2vw2Vsjgoj8cLJYzrd3CdUY
dc8yOQ0XURIey7RIh3j9eGvmSZc6yLe6PE1hqnQh6v3T46eNME9h8hDEUgffm/+0CoY6M0WI9c2r
MeKMiaf6k5+vRLmaVy/Qba041W/zfBSWopXpHqvWU5D63WDz8W+kvuHwH3M1w/8YHNT58X+IPCYI
9K7D8BXeH/7jRP3hb+aS2OpbLIJHyvcY/v/Pi7oQyfvWlyA+obROpveJ3y250jc3+9aCto1D8Xgz
e73QqutX9Spb116sdxVo22Tm8A7KrS8DMN//DszhUL7tJrfXBwetN8Qw7VvuSZ5Woge/nU8rAjOE
ebA+KJMqDeodu+BLfa315N63AnV9/+T91W/nBKAi1ELnIf/eJ4DP9/378fLiOqhf3nL6gzLjraJt
1hyqrT8fv0RL3ecRLxn5bl2eyWp2S9Xy9la/t3fARh0zjMIWmLU0x3uYbObTUvVan/wmwpQ36/OT
KnxTUiL50gXuSZjMCKoJf6lm13tpY+6od3teqVylr1eustdNtU09bt78lUfj8u3qJsvW1f10fWBR
I0qrg6Gm60X4ddjxIi40RJsGyZaZTITUBPMq4n0jkq0G2Ybk8ZRsSVstCM2IZWFFq9zXEC13ubPE
UiM6G+RrwQXfYa86yQbncUhMCcyp/IHnyHw6gqsG1DVCSoJwBxMkG0hbEswoB0G4bKCyAbDO2kNk
A+towJJJutzSyvpNXr2YzXe4gwub8tS6wF1zArS00/w2hbioe5c39fvYWPOLIi/UK9rNG9qbkZZ2
LfchzleLaP2GP6Kapo3SLCwe9JNFeCvKobZ+3/rr5lVr3dC3HiZ0NrP1NztnhgPzQD/GY+oxQj2D
uSNiEEwmBvcQM0Y+94g/wYiZ7rtv/yWCNjtbJE8xwEOFAbyoucUkz2end+micS2FZmJ6zmRCPABi
jQziUtvgLvMMz/bc8WjEKEK8C80+qtu4ZtZTXA6YeQeu1VL+qYA2NDIxTRd5Y8NC1DTICH6NTN82
mO2OLeISjPzJC6C1CW+hC514F538ERLd/gA8sEzyBgbBf1Be0zcAFBZX6k0wNjjzQYeY+fBp7BuY
sJFpud4IOaQL6Dblw5l8SUxu2Rw1fy+hPHJ3+rTwI/Ve3S5+MgulQ+1cmPslrbpwIx/bkDRRw3NM
UPBkQg2XMsdwmEOxNbYJ47gLd02xG2/d1sbJYvbEOpGDZvFTnPsUbFN34k+4Z3B/YhuEI9twPEYN
5Foj9fY3HvM9QPdrtmlsQxVcPHFmJGKBdkyiFvJU3IbxQ7dix7brYx90Oh4bhDFkjKhNjcnYxK7l
jCbEf0axNd3n1Fv30GqEchmwOBXiEfn6IcPUwaBkee9AHxBGDvEhlfo0uU/AWA1mehYYrEsMh0MM
oNh37JHvU0ItwLcqC+lMR3J4ixmPcdtzNg9DU80ojJB6/XBWXyVbe7TtHCIZ/UzwWms8AdagEOKN
bMMlFjKIw72JA66NLQqspyoXODpNowIC79FkrYvy6GIpsp9Ou7VTd09BpZ0gtmWIzA4ZYrwz1Srk
e+ESkm0wTedQjoDfUomTkcXGY2owa8Rgkj1qcAt7Bogw9seQpozR5FlJvLCI8qxbkla3NoLuzu0e
2zLGpEPGWbSepybjyuqd4vVMUYQPsXlIQEYLmcxDhBqWDeGNeKYLEcIDu/GhHobw4SPPaxlKTe9o
D+VtaLMOE2I23gkKpYhXRVqBl9lK9cw2CTiZecjl2jXChE8mE8N1iVy7YDnl5oQbeOzyMXbHLmLu
szMwbah3q3Xdqm1DJF24yQ7u1h9PaY4SSlAsh3FUImejie0gc2R4BHNY2gD0yKUTw/MZHjEbVGyi
Z5F30O8WoqPjjjy0Qx4eKjd4nMiwXO9GD7BlS90jRlyPjQyTUbAMZsGaxz3QvemCE7i2SVWI22sZ
G4LbaHjUgcax1gYLjt+gQAiCrSWzBD6ClctxwQ0tWMQgfzWc8YgbyHN9E1IqWMac1wkoa+bbiOMu
xMLqsAfx4dLd8AUJDukhg4HqfxBkhJH9f8RdW3PbxpJ+1684j6k6NcrcL1X7MlfHW8naGx+n9pUE
IVsbWfLRxeucX7/dgAhigCHFSlS7T6IJeNA909P9fd09IJMF4kXByKGTJc7BtOZopDa6OCEa/uT9
/fU34DQL08BHHbcHvFor0Zu1EnogGJUv7CprNpcM7dkMfj1bkUqGbagBMhJhhCZOh0AAR0SVAKfT
ws6Rfv6MI96uO2LKemMbWmy2C4/+y+b20/3dtx5XAO9G6TWgX8plIipaXAAEQVJb4qNnsBVDNDSe
I/1+7Lbk+6uV1Oaq4VDsVu834Ldfrh+6vdUrhibPmXQQZSyxKYLfy2DtIflInIhgJJYH6k/7Pd91
/Q1mNfoXo8+3voMB2rfV0l3UCjQsyvZ8v5G7v/99s72eNjPHDWCt59xToEMGUQlwQRJKgIgTaeGW
2mCDm7mUxSj14/vGpDq620/qopXxByn5paKDIXuIaxBkII5b6WEbOphcxQQxEOsZ90A9Ujvk1WNe
1E/uG+IYQMBVD/pP/fWXHVDVH+RgmHyAGTYxrU0sJElAvCJTAEzKgltgSjkWlHcqn2Oaz4O3V/L5
Yi1014gMrrualvDuy5e723j/x9fHu/08AiHR7FKMM5mNdUbCfgLvDKg9QqAOAqE7TUVIG1h2qjmT
65FrwXYN5IYnJmpv9X7scN/cdr2/3dz88XD9MN/yFOZNBxZJihziBmwlYp1ghGkqWaDSumjOmdfG
Y9pz3LjxotZANdSax76Pq+AnQ9TKuES8TqCEZw6iMAXj4K74DFTDZvNawe9jYyk2zrRkdguA+bC5
3W3vvu/FB16JAFMNHF8B5RCAfAxsd8HQi5kQAVUUAJ5OaaAlp2BENfJCtE1DtC3bu4Cfr2/7zb2/
+dSDloeJ5Xa03BiDB9fjnAN4phUwz+gI1SkwMBsThfk/crANMWs1u91aza4DyDCuwN32v7tLP+1P
idjNKIfeI5EQEbslCdgNWCnRRZkkjWHGxNrRzke5qJ9kW48HR7sdHv95dCxk83DLpuV3FhE8bkKT
eMgiZaIpEnsPcMc7QD/J01xcEpKZXEuyHnAhT8PTdrt+v+rbhy+XdBIEubAXnmelI+G4zMJEA1xd
wNKz4rjOzNMQahFmY9TP3l21nr3MxxxsA90Rw/8w+wq/GeB1cBpCETFZQohnAba4ALQdvMmFFaZz
kX/JAg/Xax36hm/tO7Wfv+vuqcOMymRRCuiYQomj98YDbyGSMo6uCMiYBkQFfEYHGajhJdXzuBjr
on6kXstxxehiLn96e8Cj7JJzZIgciatzQP8EV0QJICVCQ8D0qkA8L46JmDiXL1DDswnWPMS+PX3r
4fpFrRZr6Kq6BW6NN3dPu3TXTVFM8Gdj8ZZzxh0lnns0YQ0mHLgmMSpYEmaTTGeh1+kJbfGny3Pp
d7RB2XaMmau+CgEThGVUStz+uEocXKlITpMsBGAb8AbECth7GQi1FSF4Ycwp799Anjs8Lr2WB0PS
6pzZx8frm2E2kccwNrokAUgzhqgISwWIjOWMWO8zUeD0aZJFMRnOmsz9A45M5v7yXPieqbX76rni
++1X7qaj/vvpFHI0Ah2LFNJz4oD5EgFuHEhB5oSBqVObwaOq9OoW7//xoX3P/sD0gB2WUlcqc2Ma
Khu7WK+v99e3s5Tz5Xv8N1rTCJX1ACYgnpVsCkB3D2gIrIjYgoUWTjO4zSR08a+RkXtfy1KBPLy0
0M+19NsuPNmHvsOC1PNbqiYKIAakxNG/6si4LpToUJAHcAehMhhigk/AEUzO8qz0QP2go5mv2T2V
OkKtt3sv5RTwv3+54Zf8kCu6ZAOpclLxAp44wR6CcKYUYA/QJWcFBCFpz6Oqg8N8nEoA0ze2iBVT
wqp7+vpwEEBSO8xetj4xWxwBdoeexjESrKREgTfSNnKllF5wy9k4lQDWrXlR7/hyQXGD/9LvrjcT
6VAaNJJDrIy+WAVMN/AM0amIQFzKDmJlkBqGFzm9kDreD37cuQyXK8Gd6BqCi34P1v/5tLnf3D4C
4Jxy9hqtbwBqvoAZS0a40SAxbDDiuPIkWcE0s1po2U73LQetJNraNeWBL+0y7/Tuw9P91abDBLy5
lJiBN0Mdw2fGYgG6IJPEjEERJOQM/4yWCUaNE+50GnUa+UiqaX+5lrpvGECn7LAF1qnrq0N/9A96
TGIr2Mnor6QEsFQUQiYQ32fAdwV4aMw2KyV1Eq6clb8+tGCfzmQf7ruoZW+4qK7vVyHz5u4eXzyE
3mmshAx/EW4xRSMHbwQRPROhqCNOZw/OCQCXcoVKl189+EzyHNsEz5crXXetTbATuyVj7bvr2+up
eMWGpL1lySfYtTpogaVyS+ADbF0Gu8MA4gxD2u04V52PuRCq4dN2drvID03b+u07TLWMbkUajSsA
5hKoCIV4bYFJAXEh3gPgVYD+AvNG8CTPcylv373gVN6+q4Xf8IbwW7qwnruv/e2nm33uYgBcz0mM
FFyBKGlJEawQIVQmjnqwIMejAFaRo7d/OokxXqsF3rKWwGzhdTZPu+u7yydYsYdLj58/3mIZHaTm
Q9aeDXFFgbzSceBpBQyfgc2HbDiR3sWctcUfMzht+PuRj9C0/eVKg542prwHzF1POWwqfEXFBpxv
C1FwD8y3SJjoIsCns6KJDdQSG6OJHJMBRZxZcJgec7ToMN1RK9IA632P1adqKQ6w7+27oZeBAwEf
VoEquleHukgVs3HIL0JQjQJ8UAK/KpNQxfBoc3khGBztahgu1ZI3aA/w0yXN+HXzPxHGu99cbp/w
1UFDCJAD4QCLx8DqMO2tCsHGAFgEBsbPXSbB0MS0NBACGvsW9+LeT/64fMaPw3tJbh+xHNG9+3C4
Plfgirt14gi+nNBAut58ur17wEOe/cMD9j3V9XzYQwODg1glhSYqQuASEniTA4dPVPAciKeipiyy
J6fHrUSUuiGi3PZrM7/pf5uX1hSYh8A5Hj9gRwawN6XAzMGyA5anFPEsCJKttACdE9Xanl9cO1lb
87UOjQTZFRK6GixAVN7s+se+e7y7f+jGNpiR5DuA0COEVZ5JA0xUD/0GSYCH55kCpC4esCwwAHYW
AcDX4qf9o463x6xuq9RSco2BriyC4O0yYk3xfGRXY48Pvpj7OQrgB6xzOCUU5q6NBd4mROAQwLQk
znKnLdAG8UIUqJ71InaYZDkS7KbrldqA/tdqO7O0yA4zJb+DMxlSJqPHsuJSj+B1/xHX1OssA4/E
Q6CDqA0bKThwXEWzJHIpwfJwWunnB5zI2Cw8Fx4eW+uw6ZZpyqGpZI4F/vaDuBQjk+FDGjmo7LOG
gAGGx4kIFsBHzJwko7SPNAXtTq/Y6hGrppYaalxtGpUf+HKqKv66AXhy2/WHuuIgqNBAswZEpCMK
ChTUSYBKiUWrZQb+4s2fF7RKddQSVMJvTWPet3YJO37e3H6a16vGvpfhL2IllhU3QGGjwqYpINWg
CuyXbKOiXACMEvHVgfZcpCOlotkdldKdWOfEr3abZR53823OkvigsrXukg+pLU6Z4Fj41L7QkXwG
A4amtIYIjxlec7rFw//2EkOa31Ep0O/WiWj4cqokxzfxlw+HdLixFjYJJqOKYrAWuFLguIjIBnsW
A3D8oriQwgoY90V/9uZ+8/Xz9bGEbGV5lSALFfqGCr3bq/D79+mtRD9wY4dKODonSktMRipSGMZ2
YTK4KeZg7l0qjrMAoKrJdw4DVnJc8cYGuOJTN9qb8l/jOzRXZc4YuAwqeRIDwzIRBdIlYT8rD/TG
pyhKSK9U5qxlmMnvBsy9kB+/XLas3dx9ur59GLuO5wXn5H0yYMkAPFwiwiqgj6UYkjLQyqI15gLO
id/D+C/u2bkUR4qLsztqPZlp6LnVPV/Drn9/n99UjTSam5SSI94iH4LITQIXsF+158574ZjzZ+Ms
HPwE0sLLteDbzVpwYTaL6LzddL8/fZ0HNrCy51YsPexdq0FyiqRIAKETVGrgSIYS6oQXSUtqWmR6
rUVYPGmuwnjtohZ125DfLduw3vS3/XiSb3PzAdAZxKa9z+TUjQlXV4pNiTEC1CKgBtg1EjBYMGCs
LoiczyoJNZ7VVqdxY62bsy3dNo2saXrqH1O/ffr0890nMNFPc/tyAJiUYZRkj5V5rYEpFUkJfK9y
ZEFqz86tziyfczztsbyz1mzbWDXYy/OaDf6k38Pj/R9V1QYdW5YsWQAlATgI0CcVsSYP7NUYFSPV
UQ8u9v+raFOLfVEryFtaT5Wq3/s/vnyaqlRDV4UxViorASBm2EsiAlcMiTIIkIlJzk3Mqd0PNB+r
FoKptRDY+lAbVakysG5gHQojnHQ5awwkrigBaCoBRJQWNk0uGSKhC1ydTpqdhhXxxyaocNSKhoe1
Vp5T83rmT8BrMfmn2GBHKeMrIYwk1GL3pfV44KBoInXSSmSp5DC1r2tHkzgnSmELBoVaqpbqU/kG
3+MytZNZjcSXcR2B6SawG8eww7cQa2GVgks+RxG1CLppN7OxKhncusoKX+plIP9HjHPXE6OXPAPs
FBJPy0gJ3FRajRtWAYmgycmzggIM254wuFCLaRp4A7Mf60r28FN3gJeGnAfXQ3FdeSAKNFmisvKY
Vg0kCLAJrimLJjjzYjX0eeATfhGuzkVmat1+45h1u0Yie+BUoyEPMZdyLovymgAJBnGNBHGljoSJ
TLVWDjzhaRP+z6fN/eO/jtvjQrPh+cdVGy5XujnerXVzQi4qB7vbh4cJwSqjEU2jFbsclQfYTBJN
SEITJvqCJkkYTG5YraI9VT2YjVuLZXRDLPyzmHLsqfRPj5/r9lIHDk+CF8TfisWiRgAXmCUeqVBS
hBDAMZbzAup+/GNzur9eS29pQ3q7W9j4h699333+te/uPt0OrxAYvSDH1NigypgiUwqIIoctGocq
LzBFgmlIUoTmzqossjgL9TQfd6S01rp1oWJjT7iNXSzQx+31P5+Gky5scO2C4SZORWmANobEiIW1
ALpZ7SkxrFDDOJ7eO0uj/ehtJfZXa7k3bi33VrmF3IdtN7WzCQ0f3JCyxCG8J0DR8IChQfIDZka5
pLA1ohur7n9+Tx+uX9RSbhqi78RV/9wjAP+hqxqXuRD7tmVlDKBnmGOZHDginyQw3sKJZhZAiuZA
hu2RtuV61FqknWyJJBv499DSptG49dj9AcHOekOCEljSwEKfE4WwCGQt86iT+qvZ0fkdteh9w/EN
cagS/XN/83Uw3hGZDLzdQ2hkRZKYCx6RA3hrC/6uN5h0QrRO6asckfsJHn2ssf3ma63MVcPhbK+W
HPE/+sfRV6rBwaixYBZCMhKMwmZwKhBQLXyS4GOABEgTGSCEs1rGnwdvS/x8sRL6yqzJE3zZrYwH
fez7zW0/trXxIcPucCUKhJ9ofSHJxQEMUOJLkEQxJrCNyDqvXmMl5iKcCgTjHQsldw0lbT/4m1nP
H5jpIww+9ZLve4mxo9lj3ZgjXxeCIzX0giTjjPSKgfdhJ5sJ5wPXktmrhmTOLs7IjT/fc6B4eBx4
yIkwJnEBIQzhSYME/hBAMDA9n4oQVqnC3clDlLNxa7nc2kNzoBaDm6t9iv8IWJYPCbUh9o+fRnAt
FURHAigLtqjFRlmsL1En/eClbcznEmp4yHHXAhcvKjmdbgi/5YtJHV/Ceeg23nvpBO7QcRsgMGJH
GceOsmSxwTd76iwP1tFTkzoft5JrON+5lMsI2yo6fvj1/VBs3Ce/bKERwgfJ2NMqJASNYJDgZkEh
wGiTZDo7+QVjn8h9wdWF1K4l9dJHPwxo5fL+AFfmaTCslrrnqimG7xB4Ung4g3qKZ/ocBB0eYI4H
xpNiAMLxGk5jhaHOhFr1DMjWutnpHN3m6RDt8Xf+/vZvHpgQknwCy4L9D0A7nHSUAOk32gTrVWF1
7fowRv1ou6bzfLtd5u2+XaMml2WDv4uJcEk8d8KIfZpbBMuxEBg5FndMEkCBfCRRuQjUN1ouz0pu
7Z9wZOKfr1YqbK8a9tNJ22ji6W4QeMtn4C1H4O2oorJg5zaSGxOxDRnQCnVFFSpccYa9mKCPJ1p4
4s8XtWQtcfV0zGPIHNdFwFhkdAWYjYOQhy9moMR6B5tTq+KA53j5wjnh84uAh6fXQuurhtCrTuDn
Pfrwx+3j576quOEOBVsZGxvEmOhNJZqSLBZpAgQXZgBiDccVOVeGxmBLcK+e+Rl34oe1hOvtOt1U
T4XpW1PRLwHN4D9gCZUcGmhxHR1QUqYNJ0xbieuIJztguxTYJZ5jPbfYP+2Uxmu1qLYlanWSdXrN
KtjaEFODU4KWRBx6F1gTYBB40jAA5lVOUWYYXR1kvWQNk+nt2s6F7rtGPmVfKhyqGXRsiz9UI6UH
K/HgS7w04FoYuBZrAJNz5bLVjkur3F+sRs7vuKjlXQM7YZlaNk3A/3+6Hkg9+sTnthCXaXYRXDME
V4UNRgwoJBi505zrJCk7M6YO5y3enjiL8faiFk+3ZHYLA/3+tbucXhWNP7iCv8U4Txp6pzxTERBK
4Fivx/JfKZawZFIWCdwO4y+0+C5GP9bhu7htoc2moY0Ue2j9/eHmcWbEYuxtZA7iv2MKT8g6ZO+O
OKM0AOocwN+zkktZNO3PxqkFWLcL4ZcTgn7ztizctVFeAdWmJERsCsUKtMfWrUSDdiYEkXV5JXc9
PbwWef2OG/iycw3C/tv1rr/DVcf3ezCpRjpiU6AmgwIAEPDtWng8C9+kIjTgfZuYY+bFHTeMfNxo
h8u11F1rpXdmOv/4L8yVHU5ADq8TSMUK7KJXkQIOclgPkbDZInhThUclglqsczVK/fzdmqkKp/SJ
NMfluw+zjAeQOfT1w1/c/okZ2D7uf3m7kiY5bmN9n1/hoy9gYF+OWCWGKAelUej59qJXsYPDGb7h
kLb0618mqpdCFXqRPSFd2GRBQGYVkMj1SxK4KZjv4ojl2hGtQdn3FhGq8utlhZ0oOaOJ3PccJGK5
7Qi4rVMdR303FAXnreaXw+t3YLiAbMM4h4R9D1vHkeiFNzLB9eavZ4xcS3Rpx9y1FOseG+YgJYaF
34TTSa0uSlmTM0ImUmEamFKgRnsBUkMKUKGZTkxObrt2ogkN8/0jqZiGicPD183L09PgzBZVia5/
bpEgBgKCpgB7hmKllLMGzDAFmh6o6WD4wn2i6JVE4OP859KBjwPuWkLnoWDJEJlglhWJvcmBeCUH
fW74gXIvK84RSMei11cEDWqD8JgGGQy8VipZvh61wcnPf358etdSqDpkg7rakt3TFP0v9yhFqtfX
qHpkrbUl08AInM5IRP1FfSKKao2YglRcQfh61Zg2PGh5nRfvOMnlDL8pw/m0rGaF4J+muv+KcFIp
wiKiujkOqjaXsNud4VEHVoIyryeLfD7DUL5rSe9sOWWOltCnzWoxAjjQWldeaAb5mVUmxitQUaXX
mEycCYgfxbOmmTXwTdOJ7trVth0SFvJAwvvH36aXu0mUZbjcCxdYrMI0hiYV3I2Fl8Adsz680uV+
XLwledHZ8QrB34YqRmx98fDtjTvF8fD76yBsBlMDrm90gggP3x/0URFUhn9JKvMJPk07TUvBpvfd
tmwSTXx5XpzSWQ0/lONZSQuYGIwEFLeCGrg0KEg8VMmSxqw9drEUaTRtS9V2ntWBvssDVeGdv59g
ZUgHGgK+Bu9sBj0HA/M5GQJaOwhdpXjR7C/CyjhR1zBlVqzD1JZ2rufD6Tz2Hv4755h6W30dwy/0
izmBMBkgCKSLe4gggYUnEWScgWdKxVttkumK12Mzh5Etj9suj/KwoeN3//zl98+bXqJq8DGCZcMI
xVxPuGEQuMF4YnTOjhWt5A0q1p9KVG1ImbDROZeWn07FHu6FdaBktEbvB16VFL2vCIgVNMXqb5NB
XSzUuwmWyGS2hhIre5ToaZ3g7nF79CpK5Q6xCJ6ZjjKAsSdQ+XcKk38lgw0jHGNwYjzLl87nadqW
KL3pEbU5izDyZjgx1dWI/9/+r2KADADLBC5rEMM5CVCupaDEFpBqOitdEnCgyl9ydIdnE047d8pa
Tf3ZtR7xl6enB/iMnTprsFZzAmWE6ORANsFOwuQG/CvccYhRyK8wOJ7/DKbbaETDQc0bn3Fgp2h0
aVfx5mHdBsmkypsBMVXzHEVmgSiEfBNccdjhpYB5lh38F7nn/vXUjjk9Z8qDZuPG3CuxnX8/VcMR
w/FBn+4Aa7x7/A1xMI63Cn489GtqDwJXJwIaI0dIRAm/YIMWnSi13BUlJ4gBZ6ZsyFJ67qlXai0m
/rQff4z3xzwMboZ8/ugcqHsaDgviTAqZiMtOgtUjilC5wHV3UwUZzn1mK8GTltr13JjXTC3noagB
4HmwJ2Gbv2Gor2RpVVLwCgVWpAoZQAi5UGvMc+aJmlCuJgWeKS2K+2d3LWWrDrl6WpUaEZv/5w2m
nW+e74958nSQULqW60UpOdi7kSAAONBfywrhr9LGoDiFo+tu8/p11jpzw3ZGttzpuWWq+f5jVKc/
n0Ycks8U4wwZ2MFsJEpCUrLm+lJQmkBDCq8WcZgjVSB1nQ/CrTkoBYvn1Yfdt80JLUPQAwpiBKPd
gDpOlMRcXYFYjAIFqWIBrH0nwICYxMbayVpCbO/dzZJf0ANce4FU9wiDSwA2Mm5p2Fog0attyRXQ
wUmmmLCbKWarCUaMExKuVg27Wl+Vhe/2S5xXtQ4jGibEeu6L13KvEZyY2D1+bEoLhpDq4CqxmXKY
iBKmMB/KCARcB5HChAApQrPx8VWyMN6OaWgcF48f71ryNx2eLOuoxiOXy8m9bZMJ3gVPcsC0JApq
I+o3hAaRnBE8gtC/+j2uOFuaIS31btuhfkXPVo/X0LlFJ9Axg5pR2PRmH38FaWNAQUMUWDSKA5gy
CCxik5bSg3WfMr05fl+XuRDBr88bdiwXc3YcpkYv57gEL3ulpAIEjDSgMTgB3HYWri28ozCltqhC
4Gt5wmgOOkvNnTPXwQkuqj/jEXct3csOM251EJd/nHR4NYC/RhPhBRMqQw3GF2KDgfMRkysiZeb9
JBj/R09v14uOXa2X/Cimv3s3JP5OS8ySTilSJgmPiEuPursz1BOuC3ynUsAaKq+FpDmioKF9qeZG
nF6ZqR/53eLr4+rD2Gcu3yhdneb4oxZMel8jjg7r9UQGXcVTjtlegaakSkwivJ7K2NJzrkB0PKbh
es07MmitjrinP7993zNbaYkFdRjiAjbdwJpYy4smRdmYWAYTVqrXNFtHZLTkr+YqpaEYJ1q2RVtP
YwW/ClBqzBs6+P55CMUGUBNSRTKSghMbrQRLRXtPqYxciNvqtZ4uf4jRgLuW4kWHjc3Ribf598vm
seavHE9t1dNFCJRhTiFzmC2rMcQMmjtYugHsMCbsTE+fzNRQwejcO2u40FMIbzS6EOXi+enhvrbE
ORbAgaZQX6i1hoMCpIk3DEw/rMH1iPLpg+fUOsWi4zep67OlLtiBzbi7lofOLuGKTgwPzK/5crBh
hrrEmvmwN4qwawDHPR+NRo0edHtbsCQaZFeOEeyRzF9Df2hMqfNJOcchLasdKWaEtofk62/p/n2L
Zw4mOhh5jBLpElYvUUEQFIVEzVLQXqoo0l+FZ34kruGpVzFk3NLOJPPjb19Btv/4tN48TCoXfcSE
bVChPc2gugqRUXXFljYBrj2FJQo3FVpM1zhfkD8e1XKzdD1upm1BVk+P291v+6aRxwCCq06uQb0o
TsLGIwmLWQQo6bAbKRY0a24oXNs25MsJt7P5x2Ra3nHBWX0Cw3zn3/v4w8QdXeCAMJ8NCRTsAqFT
QKRBC5c52FtO5mLiX+WOHtN31/Igeoy5aT7x0DxlJnkZgocMAKrBKxsEDcQKg9FCUFgs7Coii5Wg
XyaXZL6hP8sFkQx0LTrE6qlIRnmQds8VLub3kznPbI2c8FKk4YxQgZmWlgWCwXvCAzVJOxqNuQ5T
fpz9vEA6Dmk50B0OKq56i77/9qhGY3ZDhWhStkbLAmPWppyIypg95YMkDtFFtYH3HBnTOeZXqWN4
e1HZPj5u2OuVCVq3mF4t393fTyq/TOGgFVoiZcQMG2tJsFqQIjNYcy6GdAVUAWY8o2Pc37cULuY3
gl3QqfQ82Wmomv3PruzQb11Dy3TIBmGOaxdZAnMTM5KwQYMVRRCEHEAx6pK/ORkM5z9vcOLThofF
dq6Z2KVZ94JIv39aPh0i2NX1PjQu2uOUleSLtaCpGqzPF4h2H2CjEbB7hCpY7BX8zdGj8VIXQkfj
YXctB5sOW8splmUtfh9mQfWVqSFxBb3ThQoD9zQxGA8V0VJiUfKCuRaZT2DT9TwyHVSq0QpnPM6j
ES0PnevMLldy3oLnfgj4dLDwQi6+VnkFZmFnOYZ2BU+klCJy5sGYoG80/feLnDX9989bFra9z3By
lz/Adb4b4aIM8EvSSzAOCM/oC9MgmRwtCvMLDWMRbPxpvGs8S7P8qoNsAv+opqCYL4uXL6dbqNZi
4MvT3uWSbCBMB1AELNYJCKyLEtFZphQW/l0ExjzNOyFL98haHMj6vPg0ghqmFeaXKuFsIs47bCcB
F7+lVGGjHJBvAWjUk3cymmOy9rKztpxtqt3z+4fF70c39sQK8aaWk8BHQew5QTPQw1QghoNKaZKR
0bqbtlWzzJmt1YxpmelpUis5rR87dGvD77FDhL4vLUgKP9S5sCAYA1XdFIZlfbXvWpIYXQCVz1H0
2dxYB4c/7jvLTSri2mET3tYd3kyv5Nz/Gr9PmERval6PMgh0NIC+ZwXqo4kkO4PYPFjWn+FCBDEN
diRIfmv0zVVQuMqFOih83HLQk8GrzXqGEI4u9h8GDFK5RwWTQ48gaq0I8EEi+mKFcZKAlZuJNFVF
TxaOw+v5e46EnEtF3j9umdz0mNyKnmWPKviXL7vl7mFfD10DQ7VpD/Ui0wB3J0aDhDWZBI5RXZ9K
SMqAoqmvB3Sb+S+Y8824hpu1mOfJWAwjtpvu/fPTy9Pq6SF83W7RR8FqWNe+2XcakNzlQBFbiCJo
MrpnnQ+kGNiKjoHocDdFFNtVzoFxjMe0vHQKp+x6DlDfajWsOiaUplJV76lUhgUGuqTF4poMF2nS
hnjHBLZ2cSDwbiq8v67PnNVlHOVzH4ujxnZxfetRxF9DBindZ5DW05Q12FAcv4tATF+LzLhMChbj
M86w7+XV01TnviAF8HFLfafcHrvTT4xCjJF9OZzU/dWHtXqSBROVsYiJBl+ARSxL1thXCQ4MWIjU
CXut+rWdd0LdqkPdatqj5MevDy+7l6evqw+zqwqbAciaqVv/rAW7whVEHdZD9w9Q5F1UnFCOyJcF
dpK6SZu/sGhzpKfDWgbnfZSw07w7G0uqVsI7/49DASjcsG/E4BOlQjvDpNsninJsfKa0xGL9jP2u
sorXo2I49wX7BJ7etaQuOvTv81pPn/nzy4fnzeKkSdJj+bSPGROnDMkRW4lxhaHVHIjULIuoJZPl
Yi+WZuaWtE7xB/zjsSYB2wuf8rkOPYoRDkaoqIjOQmEKANxpDqvbqJMuZill7tNzmm5Che1QsRAH
Kn55W6Y1KNIJbi0qBIhoJ7BTtpVYOZVNhD2qXRb2lQL4p9UbormYe4pcdRs3X/Xj5vlx89DDcExc
Y7GXJTFlRE60Ci5MWQiXkQqeI4izi21axzO3lCneoUyfcDF/Lvdfdy+bptcWXBNWcrARTAB1USQa
iUNAMJY45QVeqleTIF87TUtBJ3bt4LY5tap6evw26gQyQJ5TnWApjC1q0B/gUFqs1caqQRUkDVHH
aZOq0Sx37VKss76dVv3GD18fP+4ef9tvj0N9G5pPNVTnkozBKey9jTl4UYOFUG+coIsJgWVzky49
WeaM5GgHNexI2nmdUkz7YSM6ZvVsw9EYsjOGHyhBMAMaW6cFrBQXyQQ0vgKootE5z2LJt7WA3S9x
5vofHraka9UhXfdMgKOSW+7zN8RIr2UsFUO+fpXD75pjDXpLErhZFagB0cHBlwbkgAL92ovCuHrF
0qMDPWcG7p+2bK87R1BxdUjv8b+WQQs5ug2GkkouJUtYSJksYkMmbLWQkiEgIkFVkAzMH/5fwuk2
sq2l466ldtthQRwzlFZPn3/f7h42YxYGqCcatU0CyxbqHZtReXDMkxgtj4L7YIU+g9IznrKlRnSu
CCWPbpB/L55PWQu8pi2YmLQLQWHXSj+AulpvA+FF4A5xWTe3VDtJu7jUncW1OgOQOQ4tCe29K0kR
rkG+CyYTCUJjcbSX2tpkdUh/BhTzMhBmQ7VWHbVJ62OM5uvjv3aPo9t9iFpkA/a2pyRgjxjhlQTF
L3rYhegXtfBVU//bjWdrydCiR4aYvbzV0wITJW110lQA9kizxwhxxIgqGJOgZUhGVML+tNSqcq2a
HKc898Lg0YTMjiak507kcjGaUpilCvskJxXBCFbeEidA26SSJ2UT4zbQ/zaaMuaw3DB+Mqjh2iw7
O9sspwZm2n356J+Xu5fnIwx4tRaqzKKpFJkcHCwfBWLNww2JyqGgBa7ukHi6AnMwmf1cUnMzqOHC
LjrWpV1MQYCWD0+rj0fLrLalw8zYxKgnJWIf5JAlesc9AXvZqQR6N/MXgYnGU05I6piMdj3FskLb
Hz7LZl3bARwRg0egusnogq0kIsfCphQiGu6FZGuwPkDqUOitjojZQuf9EbOhDXOuAyXpFno1qwB4
WawH9Eu6x8p3zLyphc2URtCtVCLZcPSQMw43OHYoFWDpWCzgS+n1bvADJeccSsPTu5addY/H9Ul6
HpGPuBsS+kApBJkZGba44aBmBUo1SXDlUc6DSYaeEZwdqCNYqfOKlzPX6Xrz5ePL0+cvo/QlN+RO
4p8okHJmTIAer0JEQx52uWXakeSlDZmZ4KK7LQZUFzq8cRxwLhQ0G3jX8tBl7FgU+VCz0U6ZTMe6
HVksw3JrfKNwJ1BBibcugXJeQE/CZFdbui94POOElI6Gs1xOC5p/Sph9PQBfDAnwiftEBQE9BlVO
kB4emx8E6anFxIp0JWL+nxTR/nTGbf1T4692K9YROys+LV38/LB4wYbnR1mIWwUMLSEpaNHJYJfg
pDVc/ZkTyazm0qtI5UXYrnbSlizeuVzX2hzJ+r8HMCTFKX41dIYMMbBiTAaTGPFkqp+BgS7FPEYy
gFbPxaRsbDxRQ8La9kjY9zNE3XOx+rA5ZdLghlPZeZ6xMgOPjg4VClwQkFxwpjSTPvXvhtFUDQkb
2tlvGzbN6D40J/yw+9vf3b4pIUiS6pVLwjqGDfwc3FYZ7TnsWwEfjhsWIo/mVXIdDj0Jv397uWfh
929b/jrZDm5jp3feD5vn5eb56cshg6CW1htNM40cDFKOIFUUUSXAggja8QRbOuZwOTXoMGmf4MPT
ltxFj9zF0fcFFH8GY+T5f59fTkpyzfSzJTIhCIjWihkI5yQ4ShynwmVuMbP7jHkzmXBCTsdLuDll
fq0+fT6KxSoPdY4ClDWSqg1sfSYB/iOegtqpYHOKOEUyOs7QLrzs+I83q6l34Z/v415aHUKp1TXp
QTIIsL9ZUYiSrxXxkhlQeJkMoEJFqm7K5TzN3v+Cp+ct7SvRo30qwv+xeSn3h7ZdQ1wuci0iiGtS
OMoWhuUqEcNVznjLDNNUX3YE1znPRkXLfUtnJ8S2AHt+u2re8bc98rYduuxUQgVopSZgIQ0o0kSg
8Riw3wtY0hxLWKW9UpjyZ7LmLiBvf5vBbgMDvMOVPiYBIATT/CJX8JrhrHDEicqIJi6JDYoSilDb
MVqbreyen+N0LRGu92rXU1ibnzefQK39dbf51ynXe9jGDoV9dF5zxHYJFP3JWJAXDENMLqANzJuo
1E1J3vNlznlhpuNaptZzi2ahNrN6vbIPwCMAAX2j3qDTb/8LD6cErTMlUP4cAog7xNVL3BDlTeaJ
MTDqrzQePcx/zrLcP75rybQd2mcwvsfmHYsNgs7ug6ANqn92xYeAwRmULcVh4k+wBExrRaPIKos/
11CkWelKS5FmbMOftnPLYOG201hmBYA6X/8cckgZNEjErgZ7AdRG2HCgnatMnQ6S23SlBcB4/j4v
4xF3LbFzLXGxYMd4y8MfnxawhQ51Hah5gL4LJicIdxPhzsPURMtkJCJyU0yAfzQTfI3xHM3i207I
abE1U6z+T6fCR6w1RBoy4z5IhRXjGtOHEbWLaxDgMrmC5/aMa6qdsSXGqB4x+gQ28unp22bs5vz/
1q6vOVEYiL/zKfLSGZ05HQj/nfEBCTocUjuK7d0Tg4W2zCl2BKfXb3+7QS1awOvc5aFTkx+7m2Q3
bMIm4S6ArBgqDgs9zcZLwnF9CvqL9Qxd1hymOYbacJ7xJb0LYT4b/UqMLr9aLN3qSVUf5qJo2giU
xuiJI1zjt0YiHnLIemNT102Fwpir/VXwYpV+w5n0bv0xVSu5xsmGzNN+IfveX9yt989pdvwcfLnX
a2xQ8K/A35Yow12kFutZDnN6qixbtghODsyy/s9erwZZLupT0yN8q/z5hxcujV2Nmef7/ZRyhwj8
gzrDxmMGxtIbMVzxGIP1WBT8XBumjcw0x5qqtzscNVyawjA+Ac9qpdSEFELmaSrkRwXMlz9W0xX+
fpQwMA6GYRnvaTRwYXPEWA8GL3lEFUcrr3mrDABnVATB+X04tsXfxunTMVZlsd9soJoDkM+O1uuc
bKI4Iat3si1ekh153W0xzAfe1UW0e074zpviJc2PBQNeryLKf4Uw8wxf03hAyo2b5Rfv8BH+FsmA
iNXMPCl4XOMh/5zxNfLiv5GHH5VaQQtwfngbTpoldfyoqqvm13gK9z7B66Gq7TsH1CxbvxPUdCzZ
PpGTOQxIsC2i9VBRzL7sk12Sw5sjK4ayKvWp39GNmy7J30DXkzjc7osQZNtn/JBu4BgPTaMv+R1K
b7rCA0wLo9U6ARrI/0QZ6EzIGxQWSTaUaN/wOxIQPXGSjL5aZlX4DEWvI0JWlRcS6pgmsCLC3Jm4
s1sS/LxzSEO6d+fB0poKw4/UBD0UC/aE4C10qGp5gZE3dWDJ0DUPoSl32NvSCZrzywvLJ/IGLEJZ
mr+i7cAAk4HG77mlXD6gwOTAF74vyHc3IM/lBW9A/HEbX0oj0RZop4wsSuIuQg0TZkj+8cFjEQF1
iuIYfuYEJMP5X6VHuoLH4xCIhTlklj02NYfhCb41nc5s0t5eVAYlPEI7UbxJs24jWqaesAgs2yOT
pTVnzWRVrJqwKKBryZWEL6Mj9LyBashS0ftqg937Ia+cFTgtQugoxEOywqhSnz/drGEIDUNmBda1
qplgZwB1fWviXMGqFHosDKfurecwUJ3GRKHHdKQaOD+CdpqUqn0Noctb156xdhFUFTp3w4cDgi5T
M9IQYZwSDga2AR9r995CV/G+Mh4Es8Cakqs60zcmJfQbAYXd52faUGoBT6bKW4AIwh9QSwMEFAAC
AAgAUogdSUerVNkdAwAAsQkAACwAHABqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMt
c3RkZXJyLnR4dFVUCQADHM3EVxzNxFd1eAsAAQT1AQAABBQAAADFVl1vmzAUfedX8DQ11bRgvomm
SV1CtXT9Uomax8rYl4bNwcg4/fj3M2CgydomkyrtBcX2vecc7r3H5CRJ4pvF/OrSPD2Zn8eziZlX
U2DsaGSMbznbrKEaz7DE43iZjJeQ/szlOOEbQWB8hh9wQkReyikXMBabQuZrtZ1Mz5JbzDYwL1he
QPVldeRZ1sicmOpoMlEPhW8e60UTOZlgzWoSXlTSQKZpWk8IWcRFWWCZy8XpVOBqZdjtgZWlxHKy
yHwXxelQ3JAGVtgGL1aCPyaElype1r/jJwKlzHlx1JzHT0ASiSUcf95CHxlux50hnxLanh4EMXB+
2gX1Oo2hE1HqmUzVTN5VjD/elViu7hp8w++j3MB3Mx0FhRTPRjAgZKkD5sM6rvcXfGiQEXYxPnLc
AGsN88WUU1UGUHo3Elrxtxed6mvBJZ9ixk4FXsPxyIg6FC/yQ0+jzAsJohSgnj1SnfRmNa/SX0Bk
t65DF88lvFjW89Z2cKdaenUi7s/zSuqQkYEs3RewPTeCNoi8J+El2kcIQFoAoR4K9ZxhIfBzU8LT
TUEW/JwrSZBIkRf3u8IUhF1DeCiKcBpayLJDAzl9z31iO1s9R+7+niPvI3qO/L7njuvA2z3X7/SA
Wdxs4JT1Fd/TgrOk8UbNFvRsdtBVEhTmKxULB+OEFv7LOPUA3NWpBooG87ipu1VI23q7yDbaX2Tb
/ogi285gLNvP9hVZ5d+rzIPqrN2mONzOJUBdzxpKu8F983bT25u+fpc37KDu5cnkEv8Gei3FVw2i
78Jvyhm2N5B6oZ6eUvAsZ0Dj98mvmzDllhvAFS8+TJIe6IA6EKSpqT5q9ferRrjAeaGuasC0F/Pf
1Qa9WuIpQ/Rquy+vmkjOWDMiWuC8WHLB6NFO6CtS+ojZ1cVS4LIE0aS+POrVzEDinFX1JIWDJh/T
QzT9i5jXGKOO0U0zGuwyxgzWyrK9S9rdvZwjw9Hu9yOXACYD7o/FxXmbdbMpihcGvIaCqia3ZycF
neWVum3IKn5QAgbGrbCaCA1EVDnxACIsKoXwnXHyu0dS/8r+AFBLAwQUAAIACABTiB1JKNl5NrAA
AADuAAAANQAcAGpzL2RvbS9jYWxsYmFjay1mdW5jdGlvbi13aXRoLWhhbmRsZS1ldmVudC1zdGRl
cnIudHh0VVQJAAMezcRXHs3EV3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Hu/Yk6hUG3QIdpblF0i
BC097+oYwjoj427Rv0+jTt3m8b4Hk2RZmmm4kbEOwTP4IARM0FIl2CF548AEz8uHqULoIFoDsQdD
gCIs8UwV7EKHgzoab1RS5qpEe269yjlIhVM6sKC6cB3cyJ5o61FaM+BnMh2rqu+jzXYXgwbL7OA7
0vontO5RGpYu7ZH2VBcobfOKJrz418n0GszH5nrSOvfS0h3m8ewNUEsDBBQAAgAIAHWIHUnszFVC
/1AAAB7uAQAsABwAanMvZG9tL1Byb21pc2Utb25SZWplY3RlZC1kZWVwLWNyYXNoLWxvZy50eHRV
VAkAA13NxFe0zMRXdXgLAAEE9QEAAAQUAAAA7F1bc9vGkn5e/Ao8bPlQiaVgMINraXVKpshEjm4R
ZTuVlAs1AAYSjkCCC4CydR72t28PAJIgSIociXJyklGlHJIYdH/dc+n+eobEVZYGLM9ddfHvZDIc
X7NRyLKbjDH1d4SQZn5Wrmhx124Kfz98TJPJkOU/fLw8+3De++G7HxbvV05DNiriKGaZu16L8pFl
eZyO2gr++c9/Kt00ZOrN45gtXvzVNvdNonYuaBE/sD3Al4Ei9apl1NVjcZeOKiuMz8o1y8fpKI/9
ZEFcfqf+rpvOZ+VDzjL19KSNw9CQopzQgv1wEw9bQHQNmfuava87KjJdw3EJOSCEqPuapWnK5UBd
Zds5DVS49KuKtAP4z1A7iPSRozl7AHGcZsXSXQgpx6N09DhMJ7n64UMD4zvdOjHsXm+/66D+fu8d
Pt4n/WNr3znRNQNrpoatd4qicOTq8Rd6z9RBPAqY+i5NC1c1TE3T1JwF6SjMFaWb0fyOherNXcZo
ONOhQY/F+ZgWwZ36vxM2AR8E6fCAjscJOxjSeLRflDcoSu9rwMYFIF/ss96vXe/d8Yl33O32BgO1
Mzj9cdD78eNeoz3v6FnH/dy7vvBOLz4en53CTScn1/wuWqjaV63+830a+oxFivLxXL1mtyAiVy8Y
zaDN9Jqr7O8fqQoX6Hk3vV9vlsZvLQxpgRkSeLE//8ByStf8rqqWZf78Wc32v/6QffmqDs7/p3v5
acXQBx+XTgBv1W503S3dBv5tXHlPH+ggyOJx0U0zVgH9r5nlSAtDzYksS/100y8Vqd+r2FGQkIwg
sG0cOer7Qdd13w8+0gTQuTTvsiTp7IGgUV6AXAsruhg2wzAsza7kgj/SL4MghYHgFvz1rLc75fXe
VxYMCphX371dALIHmommYDGLopCFQVgJ2krbHN6bFfoNhYhZ7mgoDA01SeJR4eVJ+sWDnr/zSigg
UAeJhqjEyCRRLRGWt+yRd7XmWEgxRSWxQMctSbqNTUuxRCVZPmbqw7DHpdyk8xs4NkwUW0yeGfrE
orX7T2/4KuC6DLpqUrCq3z6eTzsMVvci7dIk6Wd0yL7j3aQjW3EENRrMNmqNp6OCZeOMwb8zrVzB
2vF56f+LBcX0PW/K17nGWwgTtJo+rUFVvzvObs9imFtVE24C0nVTQZrQWGcsJA6rJAZP4W2q3g1a
R1MQEgVr6n4lcJylUZyw8AknX5VN4tHtNaN5OnpFU3SsIF1o7FihoQfT0Tp4n/rncQCDkub3rptN
lhaaciFB4DDc1PKJ+XPx6pIWhJkd2T6s71U7rukcgkUVXWbCS4U3oHmNG2fISlstpHZWijm4cx19
T0FECGFkGzpkhw2EJ5fnn+JRmH6Z6eWd4tPgvh6hpceJzmHM2r6jOTsIxmNX10zAYIhhMCPkhysx
cLmuW4Zc7qGbtPcAi95Zmo47ddf9mKQ+TarZXA0J8BsEVNe9ZtHhogOP3rzZc93/9jTXhViR0SLN
OnulPZD0rTZHt8AcU9gcLagw9CejgAeuw4c0DtXO3lE1xCnkrZ8ykMeyw29o9lGjB3Vb7UzRwdBB
GgJDLRFD9dAJGUyIdYYuuHiahzjOglpDA622qNbA8uej5TjgxAFcNx2mrZlcThpIzNe3K3ua2IDE
EUFCrIhgiudIZgJ/KVNEF+yP0mw4n0d3LLgfpxC5qzlkgS9mF/MShQO9oGtCKJDtE4Y2rjFhHJ4x
+sCmqyLEy69THOtWFI4IA5XRkdAECG2m68ZGRP+38vNqcBJj/SqHEHSVrotC0pyXQUKbEAmFBsI0
2wqijYimYbb3ABGQTjOpLUPtIJ1kASuJ9+p4Wk7dC6CS4VWRHdai61z7qAw3zhMdYfPBSgStNg3b
nls9H41ZmiRl7lYbejr6lGZJ2Gk1XWHSrAVfPqtFtby1eWlm1QkraJzkZUDHkDN02gjKQY9MDKYZ
oqaZNNzGNBGbVgI30TrcFp+tphhuZESh1cbdS9gQQs4sl64+3Yi8XGwJnsKrpVQLic6xWYLYSOAE
a7FBvj+m2QwbH8w3sKpdpXlcViKWvNm6/4zd0uCRp5+DyZhXa6rl0NJX4dcNyK50oViFKbJ02sD/
0835WSX5ejIa8TEBEart2lrpNJ6vsKgcvLxo1pZXOVozAKgjClTz6VNAp0yuxHRF8xzyDL5otGEf
PQ0bYXsNbGTBIoqFYh92CBhrLMI+SYMJB3JFs3zBw3k/za7oJGchL1W+m8RJyLIqApoGrlAt3lz1
O4K1ACNRXCg0n8Y1ngzHN+k9G8X/ZlmZ2j3ZfPA4Cu6ydJRO8nOYb29VP02TxtC+AnEDlvNa45sq
XpH1JmECJumCJuk6CgVMEjKn5Fc86K9DbMPkw1gQMWKICSA+jWDAljVlYezIWu9tZMLCh4kgdgKk
9mnsPNKNws406S8nI389KDJIBE6H44Qn/gDOttePbuwAX8NifA1TaoV6I+6yANwQct7exhglk/xu
7s3p5U9ZXLCsXhA0tbNWQonRBJKAxTgYYboTEnWNYljNwHHlLDG59oWL1XgzgfdhS0ynw3TClnWe
pTQsfRGPYl5M5u+hgzphOoGhVq7ljj1HUTWvOAnmS6ItikLDxnoUo7SIo8d+jWXeNV0awPtrlpch
vcqPbGclLGxDgMFCAUaPbBz5jTGzqA54KedGFyW2zmxYLDaqdBNYjYkmqJtoAVqvu+qYabfMk4U7
yC3Cd5MoYllVAHJWQzIhDyZIDJIVmZguQaJfxFHpwJ87S/dXK4/GnSW0zhtIsyyYFHN9Ez+rZU6H
EFDJ/gK4+Ui2TACzdEtNsLmbxEhSaOtEawzm601Illr+REdhwmnSHCOP9dfL+Ew+5YnQMm0QA/sB
Vfd/r1suaj3OT1gCKWZRZscjVhY9TlqQ3c98tNum2tkg42A4dMEbgHFhte72L1jxJc3ulzFaURQ5
lDjUhsDteaax//vF4MP1WXcGpqyaj2iiel/i4m7++fEonKp101HyWNVO3M+en6TBvRePHiBmciLi
KMQURWPaSH0xEj7wsa4QS1S7YVubtFc6VmPgiomtEFtQr2/A0PI877cL3VpQ3U1iWF29bgIpdRzo
phfWqrz24O59QLjyf1lDYln/4aHX7hGkEYU4QuAMEhGKtwCH7NI9U18c55AH9a5+DpZxXSHT6/YX
RF39jHHro0p6d5LxHX/v4zn9umiOp/MCBFEMTcgezELGAhWoRQJZ9TsusC53ue5UcqmmU9Yqp8VT
/qZcUC1dMRZWcz4r++lkFNKSzCxpxAFxTKBj3f5xltHHY7jpcVrj5JPEVgxd1IKQhqstqIuKdZDE
ioFFRfuQbZxPkiKGG76ybFDHm6ZgSLcVg4gKdoBBrhDsTSUveNgQ87AVUg3BGO32rz9cnF1eXnmn
A697fHZ2evGjd/nhxru59I69weWH625P86561/3L63Ov/+Gie3N6eeF5ZY6uGKaYVjPy7bDSOhlx
jnaSVlblWpk8OophiUpEftSUCP/jo1wHcLagKOaHttoUNBizII7ioNzQMBXDKU/eqOv/Fnb3zMhw
SKBq5Z455JAO0glRIBcQE0I0PZwLsSHsY8VEgkKwAcniXAhwcE0xdUEhpk4bSBxsEkMxsZAQywiZ
M0NCNGQblq3AXFeT2A8fk/AA/on9dULKnnIQsYzAUfOCZnwLBM3Ol6Anz5VwDfXF/SEd0VuWledL
4PP8MS/Y0LuHoMWSRQgLmnVCIUqq94xvHwFqHh/K8yUN2SssaMiwAxscYDLVm7b3hreZVx134cmU
PrNGd8XhOcSmMBtyNvxC48LL41sehZswg++/P0CrvdyUpQchCXUbnBzCiuMhfnIkzmucrpsnjI09
WIU68wYVh4ckcpKVc+wwSUe3Kv/nbUNMee0QJW8B0/QvOVKPmgVPQ/RsTegQcGoZcjYi3gYWB/RC
y1o2IQtCABa1CpmQ4PtDmkDIqk1owJqMYhjkHg9nh7NGfDMhDs4nEN2O3jThPdeI6myD8KEfAK/D
wjXDxcfjh1ERJ32a5OybW1HV995U1X7R40ZgCwnZ3JafGB1DdwQUloFbdkazW1btHOd/SO9g0xQ9
9gQWocBfZ9EfM8Z0LHrkKnS0EJKvlhUw6YIqBx5M7dmrM3lbVL6pIzSXX2bo/ADB4YLKKtdVOy0c
3+2V2/bVAlQnFRUS3TREz2aFjqEDc98FlPJ82lW5bf4ScXWxRPCAFhhi6bpesYPGmPDqhdobZ+nX
x8PGIj4BsfUpCND7MsRvX+TA73hUmCXdBNnlea95fB5XJiwE18XEBTPNgPhcN/T8NHwsaQcqj1sJ
SQr5JuNM0iwXsszyTJWQKB+4htoWhGd5CHabWVSL6VcFH/FEhfAFdUh5+pPfekVGxwtZyvaCMD8I
OhXEE6h28rANh2A+aXKIAcse4oCdg9SrtHSHjtrRexux2PKXqQnCFmoF011wE1WQXWpEhyy8Xbjp
VP25p3rNiiNXWVVqMGlFmjbstiaNGJhn/J53MajGk+fxA94Vg8TAICx1V3PIVnc2hxx1t3OIwBx6
f3qjfoI+SfhhS/6CZfXXCZ6R5yNsgk/HfBG784IHnl09L813gEoZzRCejsJyk9l7oFnMD9ZVudua
nGD+6bBKB8ql0RJO4IlvIl+tN8Oz+3h0e5by6gy87k4RwYr8yLfhFutM1R4dP6wentGhH9JDnunx
I3Pz8wpLTaan6mZNlnOYIh6yqgJ3uHwR+omGj17AffDSBKjBgapECCFDlCroMCkMtuw//vqa5ZOk
2MK3lePKdrPPq5OTs+S92hE9A6uPOrOXfyL3ue4/krKH/9HZq1L+v4g9Ghh0tGLgl3jf/OVMffMn
m5K6Kcp/YUbyLyL85/dLebDPFqXMYD4mpEqm15m/2vLS37YmymhtTCmbf11mGmirLwOUUbbiXgYR
ZZk29iPHXiG58aaz8hz89JC2Lsw8uU4zVL3fLgYFhh7SbW+61cJdCtlZMclG3pfqeObpQ8/0PH4U
/fT99W8XGKAi1EDXRb2HHgZ8vV7v4WR8eeNV3+NyxEFpwQJpi+ptmenrw2281Bx4JcviDtvqzqMp
PVs6D8+PO4lSUWzY1KcNMNGWh+7515KQWH5jUWLX8XmJhc8oJTJs0e/dhJYfYVQJ/lJEN2tl67Yj
zgzX01WyO7pq7DbVNiDVBneokOrA4GKJ+hNLxjLVlqm2TLVlqi1TbZlqy1T7hal2CKkMjmarXBll
qyB7BV1QKeynWXUc6VNc3JVfxp2pZdkcDUe4sE2qC3/vHtAEvrYezV35uor+7yCDKZNFU3wviFDN
sNerCePwnN4znrAeP9C4/ErqFjZvoA2OOEg9bO+DP0UdyvB8xNtw+nD4Kua9Oeq8jtzqOD4QGdE9
KOJEwQYi8yqIVzOfV1G1iSqhb0eV9NeiSvgVqRLZGVUydkeVzN1SJVNSJUmVJFWSVElSJUmVJFWS
VElSJUmVJFWSVElSpTZVsiRVklRJUiVJlSRVklRJUiVJlSRVklRJUiVJlSRValMlW1IlSZUkVZJU
SVIlSZUkVZJUSVIlSZUkVZJUSVKlNlVyJFWSVElSJUmVJFWSVElSJUmVJFWSVElSJUmVJFVqUyWk
Sa4kuZLkSpIrSa4kuZLkSpIrSa4kuZLkSpIrSa60xJXQwk+2B+C3IQtjepDzpxpOEhbyZ6DH6a5J
0+Ivmp9zlWuegsPswCIWdBrcfzmaBbYydV/x++2bROkWU/vx7YAN6fgO2nOx1yyh/Llz5aAyV/x6
+9NC/SAgdil06rM++Oz08mb6pB5EVv2M+yakLDLUKL6tpPDHwJdPErDK3GA349Lc3a+gWzv+FXSk
8wc09X+UP4MuObzk8JLDSw4vObzk8Dvl8AQbfsSqHyuHSOu6q34IfX61+oA/J77Kvh1NlKYTjH2L
rFRYJQLTJ7fO83BsCpN0y7d9p/JgAEILVlsyey5UJbx+6uxbNbijWb1CPE3FxR/EBVDsF1Px5xkx
JdzPvPvZtBpM1reh1c/D9QR5fp5ASZElRd5IRfhTzaZPt1dhxaXJADqQ3jLJQiQLeZKFwKj5OS7O
2C0NHlc85Bj51GZIkyxEshDJQl6Jhaid+dw5uHMtvNfiJdvMUY38dXiJ2pnh5/4gey2isoU/IIq9
hKgsIkAIIJiCEBzfwOHTXdJPswHjUTHnsWdd34TpBELlXlWkXQSm6zBWLFFglJrhFmPlEyzcXd7D
NcbN+Cyr5Tds7rXI0TbwEInUpZRgXNRZdL+dsDaHVsgiChHJC1nCCrbmBj7SKtPPWZ5DkvTLhE3W
N571Vd26HycFy1hY7hnDLEkn9Vh6lrROM7CsuaneMavd3lRTbQ3wIDzNRV4bxJuFHseOo3aaKnmv
GzBbHNFet3wUvcgCPv5WgMEAZpEhbgHGDIAhTvNpt06lq1x7BZeplnGidhYaHgTjsWvpey2Gto12
Hxtba+/CLPVpcN9gPWgVEhOmovjTuF6tTiFO+f7z6xTkb12nML5dncJ8rTqF9Yp1CntndQpnZ3UK
XdtxnYIsbOV3+wN+QqQ4GGfxAwy5ZxQrcARO8HII90Gx6pnrL3Gkvru9Z7zrvWf+XMDTUci+srLe
7UPqpvIHvT/n6fWy4vN3q/jMHbciA9EZtnxZ8ZEVH1nx+SMrPhvnKP17VXw2+sN2XrvisxGCZfwx
FZ9NwMyA/pEVnyfhYR+FKKjDTTdL87zKcRr8v/EpP6S/mvxjDAy8fT8fTPqKasQmRNTQGhT89ORd
lVstvAzrvOt6MjpL03FVBjANtTNrUxJvwmf3UgViEwArCsi2ABrEYs4pbLIExMR74k/6fsUSgP73
KwHgv3UJgHy7EoDxWiUA8xVLANbOSgD27o4qODtmrmbzqMIx55z8KPqggKtDyV0ld5XcVXJXyV0l
d5XcVXLXPzt31RmxHCRPK/zlTits7HWTfLvTCptmiI8MZ14r4Fz3csRz6pq+rQb15olv9TeThzUc
y4DJ00reyyKDjVYceNhsgPYiYv9KpnPW/1qipyUBtTPn9DTxeDnHJQS1z2ps40SNbioVvJIxa+oI
r6Tt6SKD2pl700VEs/ZEiy4vKjuQ1yo7GK9YdjB3Vnawdld2sHdcdrAWTx6A345H8bDM+w4yNgpZ
tp8/c/+ckJCpQxrcecP81itgjVp1EmELQZhHlakgvsgarfLBLxMw7N+LK0FTBnICRwMZ3WPXvS6N
ArpfV4sr67xiXtOrvyRntzj2FkrsyNanzobpUdVz/5+9a2tuG0ez7/4VesxsCjLul9TWduGaTk0y
8cZJdt6mKIpKtGtLbsnuTv79fiAlmaQoRzPrSvVW0Q+JTVDA+YDvcg5ASfzZHrwQz/fghXzuBy/y
90Glj2/HN/2PG1jjm/7HDaxxA2t80//4pv/xTf/jm/7HN/2Pb/of3/T/M9/0b0YpMkqRUYqMUmSU
IqMUGaXIKEVGKTJKkVGKjFLkp0sRikcpMkqRUYqMUmSUIqMUGaXIKEVGKTJKkVGKjFLk50sRMkqR
UYqMUmSUIqMUGaXIKEVGKTJKkVGKjFJklCI/X4rQUYqMUmSUIqMUGaXIKEVGKTJKkVGKjFJklCKj
FPn5UoSNUmSUIqMUGaXIKEVGKTJKkVGKjFJklCKjFBmlyM+XInyUIqMUGaXIKEVGKTJKkVGKjFJk
lCKjFBmlyChFfr4UEZ0PhS5h3m6r+bKYFllLLNfPrUW6nz/9Lg81rEV0pUvFFSwWvP796lAvakbc
0xPndEVVNUnLL9fVbXH3Fe5vvojhBgrd71XtTLJHsusOP0K9nq2/DZnKtVmUejbB33Z/ygU01cXD
aGJ6BOEciNVCTBbLL83KvCuW2VZO1D//WdAnHVE+36dKq2f+VGkqjxyxeJgv11P7n/5mWa3u/8wf
Sp5XN60fVvOaUx33wUq5qGYcwsKn3Xdl5s8kX5bVO+j1al1PBiW054LndMvUrN3th/qjyAlTZMAB
f9BXNZvrSbun67uqXC6WZQZnZI/zNatz3wTI1Oa/dtHS7lZqJua0mLyuVtVmWe76btb81aveF3YS
w3s87/xBZjM18faq2/PhQtM9Nv+8256MJf18sWSeO5bUq38hbxsOhv7jD6Ctv9X3N+xtKGTOQjjP
vBCg/eOP35rbexj1/wOM5s+PkeE/P0Y8KTfF9iv47B/L+6+Tv2u52+mcXN8Dr528kBzNlvd/eXUx
mWyKb68mB86GZ7NiPquqBTTMDg15YMEENRwK7mRTnnrFvNMAP4YykJK5ZdlqIaTkrCjrvranGmZ3
/dGVntWvGGyAQSYb3Rs+/2QCsDGPLynwjDYiG64TfPwKXTeQoVdkSwgdGITkBta2hOFCzaiq++K5
AbAu2i/JDWKggeZBlnftvoBHY7NQkEo3i5ve6ARTnL8fdkOH1gT6uni7/rIEATjxV59e1d7EL+Jm
s95M/HpeNVceXykvPuay/beH21m1aRoJv7i4cMtVsfk+eXNbfKm22W16P3iCdqa0fyYvw8PtXfOt
IB83FTjeL7/88pfJv9PAvWDcI2EdQ4yyhLQnArmoPYuJEoHtf0wuP69vHm6r7eXn928/vYuX/3bZ
7W2PAn8jGIhhXiJA0bu4WKjJS4ik3VcDfay299dfl7e78HqBAU3C3qTEPACRDjHLFdJWeOSVt8E5
wQnRQ2hO9drDVRzjMnMxhOvh7g6YSRsaSxhb4gOShGPEHPzjcFRIKBsks4ySmM6A1u64g24m+RG6
ilQyozut815IzF7Ci+C/KZnylwDUk8h9ohRpEWEOqYjwW4iIMuGwtN4Rw4aAdnueLjbFbZWz5OXn
ClIDCNpL27unhZ/khNHHD1eVyL7X/Sqrv4IoGsBNIlVKUY68wTDBKXFkuTDICMOpDApEOB3C3fQ4
jLdpa+Okc8gEfZySAps8wnlqghW3KSbtkY5JIaaJQsYLjoiVTufvhqNBnwB6emZ3jW2oM1PMj6DO
5sWs5xKNkW+rL0X5fXhig7KRRpjTEBATgiDHFUcpYGqlcYnFJya26fep6W3uaCNfSMmOkMNF3UP+
4aP/UOV4WK6+APIpqV9T/w+4teRcB2eRVjwh5olETtCAoIRHBlEohJeA+7ou1pdvl7MN5MXLq83y
dyisaY93e9kepWVH+3ILPJUFOcpf+aLqgb/+fnt3v75t+qg2kxdkml9Ecq4ghkRmBJJUc0AuEnLB
UuQgAImHROIEOQf5bohtC/Vx6x5A66ZeS9u6WaWO4hQuatzz/50Azb//Guyv9u3VzcOXN6vJC6ro
lOgpgx72v4LFgWOwSxOIVg9lxGENPpZridXcCWWIEe7Y4vjtvlrtnGk30vR/qm/3l369gpb77WUz
6mPzAch0Bnrupnq8E9Tk++vj+9q2l0VT7ju2lxUrerbbd+FDMa/Wq7/nlPz6bYCFaRaY0SkVeZGn
bErzQmNCBYcqwKkCF02MIqgGGmnKvHRBYCrj02YPDnXKuMGbWxYyUgAH6VkIFymtfRdKzlVIH95c
Te2+sikN6zcVYEoMAeqZTihQoKRMeo8MTQxxJmR0XnOPxbEpLXfM6es1MJavy3I7nC4+VNv1w6aE
HHOEpGNEyRfHRswx7QXg36r7PMJhNtsR6Ii30jKOhImQ+BQUE+edQ1EFbTnWyun0pDX9zlsW9Zva
2At67GJwcTHru1j+9/Vnexhx8kJP+TT7Vv0/mGAo5ZEriqC2UkgiwIUch5zCIXcnFjLjEOckkf1Q
LQv2l1rIOR5AzjGfzQYTQwmEFZbZr2/v1qvsopMXop58+DenA6cEZswhCZwtxwUDsqQ0cBDvDOYC
a4aPsT/2dllvd/hmkHJ/+SgeHm/qWCLE7NgSpaD6sGNLHlbL+64hZEpoHeMkh7j1hNvggejpHOIR
J4gLiHgTtIdOBfOUPmlK/WWDu0k7YcjhlosGblZTUsxn4tGMw8VqZigsCETNfPKCCchDU55JCdaR
AeNDAnsJrM8yZDQQaU6jUS5Gzngulg/bTQ6+y/zy1mC6pKbsDwYXi6YswCsyxM/vmu3IQ/Iw0xxr
FAP1lSHB0CpXO6eQhfqMmNE+GeDHkFCejLX3d9Xq9dvhnNHcvmxyxjGIrg0zPGBD2c8btXLyxR3I
fuB3pnZbU7utSk6KECBrgN8CU/IcaUk9AhNCDKD3A3k6a/hiM+vkipYlrdvaCIZvbt/RtbFkAzbu
8svj1sWqyVH7leIECheuK7UkWHgCmVEqmtMKtkCzPfhNBJYDHDwS71uO0vR3eaLnLrTFgAsJRXsJ
ZFuVD5vlPVBV1WQMhRkwVTzVWQA6ynRKCVnLsgAETapxgsQRrA7UBkuEfXIFrne9D0/rvvWiC5EN
4WYDKRvUe95C3m1gQ67gGl7HM3LhEtAc7JBnVAMDAtDOAm/1UVBgQDDFmDyJfKD/YSMGbuzZwwfs
0cWeA+wWstjuN8peUKny3BPBrBcOYcHBM6DsI609zD22EARWYV7rhJOeceiwi0bPBtAYuXdYCPwd
CgIZdyozq9IO5J+xEIYSlCDWGLKt0whqegSK4kELmudJKPvBu4iNGkBc9llifaRVa1ki4WYlVE0J
qSE0Ck8R1iJTwpiFOCNQ+pyM2nCHEz6nbO+7H7Zi39oFXg5NdSWHuMfnqzb3IDvuQXbcw1GiCE+g
FlPWjTJoZAz4Q/SKSyWTYSydzT1gqNOOnFu7RlQDsy/rDcZOEi87YaimJAeiqgtS1CykmNmH4FCG
FJPISCB/VAYvAgZ1l86SX+0xTqTp8kQMykIPWHEk3d8Vqy+b9e9Vm7pKRiWmPCDhdV6AvAXCQVNY
bwnkEOcV9mc50K7vEw60a+2gVouBTKhncp85fn+33Jb7cBUkxyol3EB5BMkTPCTsCGEKUhe0A/Pg
JJo6bJ9O2LYsq5v86ET1w7L5e1VCB8O3ddFddA0Y8Chd0X0GKl++LGbLQxaiOQC0tpRa4HpaZTqF
MYj35KBUepyoxtppZ1q5sNdLd/hqYFINnu8ndb7c3hX35ddDreZ0KnDtyBYKMlRHICCaWwhDA5Mr
CEMKSAqhFqRmGK7V3T4vuiNXA3BU2SPHv1bL23lxA3Bqx6Q1P9KBSKk8aESeaX3EwPSEhrRAhDDE
CWtEPMc1d50Pr+SusQu6HChpplwclnB9e7te+c33u/v1fh4lxhJ0ejOTUWmjOMQTlBUFrAcYhmN5
4w6HxLh2JBoxOJPHPXeBzQcoZyF4L1tdVZvFenNbrMrKroqb79vlth3yGOZNgmRFwVMoeBBKSBuo
GURiThzm2nh1zrwODDM8xwM3XnQtEANmtYv2p6OqzZ2XQpmArAxghCUG6AMG56Am2WjBeaN6rqr9
aWApiqGyXRjTY8bbYjXPB+o7+EzozIxFvcMvQCsxoGwKwp2RnMWU80CHEjBmIyToqaf4T6fnHrRi
AFpzIpKhvV2uqmJjb75UYOXjxFLdeK73zkLqMcYAr5QC6egNwjI4Am6jPFM/KcEOwOyaWc6PzSxL
oAzNCqxn/10+bj1JnkmnEiZnj4Ccz6QzcCCd0kDpTkIFrhRRyncTbbuXi+5Iemh4SLSzevivTWJB
xXZFDstvdJYeOQhVoC6yEJHEeVvfAt2xoPRRsDgmExgnKnaRHHfYwzOQact5tV/12fZ2ig9Asoi3
zAJ3lB7RvMxM+bzlw2DpSTJURmKxc10IrT66Y88XQ2Mv+lTw4Bv1tkd+QetSvlLrAmcklCKkIocS
TxyEOAOZ4KyKiSQiY+L/Jw98bO/aUA3k1qoU+/lblg/5UalHjwKaDZUzH4FZqywILsTrrTMLJVNL
YFQgxKQDBq5oCt157PV10R1SHuNYkP6O+a9vHvkomdK8hSRoVtzG2LxbJ5BgoKaYhIJpRYJ6ngxh
PlDKf6Bpz1aG7RL75ulbH9svumaRAVtF2eOt/mb9MA/r8lDFGN05i9WUEmowstRmF5bgwo5K5L2A
JSE68HAWez2MMAz/0NxGP8cDWnNOiFpUnRJwoLAEc57DP68ShVTKgpEoMgbcBrIB0gxiLwrFNHPO
MqWeyv4DzBOG1gN4cklS/efTPt0vb5q9x8wJSJOSGDBN77xAJCQQMpoSpK2NSEDSx4EnQbg7azL3
A5yYzH1zG3xFxHH6qqg4HCWk9er+qthsq81hOhlvnED6xBm3FBmQ7IhBGgdRAEKY0Lz1GyGjivDs
Hm8/Xp9x7NBH3TGZKjVgsuofW95tlquWLp9e5b+zNzVUWdZkAupZiioBdbfAhsCLkE75MQuKI6TN
wGSyz7GVeNXF0iF5ualnnxmyr7/Ff12VeVf9v5r3LhwkAKuZUt7j8NITKhNG0qWsA6iBUukUUs4G
0AgqRn7W9kB3oJNbdq17euaUA+ZotffQcruYVwdZpQ5iwEpqodJroKYWxB0BbQV2AK/CoDKYi9j6
vrh77KmDgInjhFNxfqAc325v6JQ+brNNST2+4YImqAUBohjGFwLYD8xmjAIkSpCWetEdv91PB4Cq
BoJUs8NeX/lwt30EwLGu1y9qG4hOBoG+zLnOEOQ0x0hAPpTaUyGE7E1Aq58OAG2OlVllaN+lHp8B
38seIcEiXldrb5MWoLUdjTofFjlkQjRQrR2X0D2LIf3w5LHu/HR6q5s7wA0bcB7Dqr1c+O2h2BSr
e6C8h+MOmf2/poo2QSBxgqiSgBhCHBkqLAqaEUm0ZJIP75T2O+0gmulj0QUXdX/n6/31w2ZRlPns
Qk15PrxQ9RGQjYT4BIKFB573LBJDLkb402vCCFaGmad3oA89n9js2jd3UVcDDlAKXYfA8a7/4vE5
7Bey2f8XkEtyxuQc6FoSmbQBfBuBYSZQwj7qKASXgZl01tb/46PeTx8CPN530cU+kCTLqjoq2jfr
zfX3VZnzY3OIVP+fCR8R2FPIh8ApImICG2RktJAegfIJkzA38dnL3wHPqSDYNXdsnQ8FwZzN+5q5
Kper5eHcj9TnHZoEGyBqpZMsP6qnEfwCoUsgOhRwXldv/J1Wy+0+e6AGctpcz3o7VIewfvM+b/Y0
aYUrmVcA3MVBJk/ISg1aDqQTshYotwD+6YhVjAZ+Xkp58/4HSeXN+y74gg6An+Ge96zvqtWXm/3u
SU35dtsowZkEdVqjxEhCjImIDLbgQYZ6Bromeqv/5W2Upq0LeEaGAJPBY//msLw+qv60qo8+Omfl
UQBebigoxQSOT8DnXVQUcWt8jFIHoX/g+PueTwjFfXPHggoPTHl19LwWBFU+di8g+Q5xGmpBeycO
E50Y5HSSJNL5MSbtvfI0b0ckduaRx2GYk8cehzu6hgzIharS/YOnR+L55n19/kSnYEJeBSzw3hxs
PBZE+3qHE4qqZ5CDAuRVHphIinod0w+KwcnDp7qpi3xAeIFC7gudD8UfHvrbFLsHnOoSwGvJAx6f
C6vJG+8iofxgIiwCAeenJiKncCCSKygBfOhhi021z5OX/TH6z1oc2i+6WI936Bb0cfPw9durzfoL
TMZtMVve5PPl/vansEJGrjkStt6nCwpC1uO8gRMUT9SDFnqu7c9BLBdd6PMhew7sJiyLL6v19n5Z
vqu22/wkeffRjuYJTBqh9nImkfBQiBkHJWqggCHhLAUpL7BKvf2op/vtQORyACKfVcdhe1N1HpQS
4O6MNM8awS/5CVfQw0JA2EKkunzgJ5AljqGouQYxErCU+vzjyidPK23XhtliwIZSLaod/b6Zl3cP
kOpbNJLuzli9Jx6rACSSRFCIoAeRVgHksiBOWe2ISj8+5fbnOMwxiq4RA/umi6zzuwwOqFIxr+6r
8n692ZbNs9HN3o8BXdPoCmEJVzYiWT8/ExiUXQrGBZYsCAwQhuQsXZg/jCDshzr9zPTRbR2zBD8m
pgudlcmsTyMOJKsR3c2D34SAWmpKc/4lH38ZwUQ+0lAa5Dxj/0vctTQ3ciPpu37FHvcCLd6PI569
vdET67XsCV9JilQrWpZ69XDY/vWbiSKLhSqQ4ngUs7qIYpWAzAKQ+eWzAgdUoSVxlmMdHk3iHdXc
zPUuoBtpOYFAxutXLYebDtvbuTZM9y+bH7ewjLc193qfBQX/CbsTl1JqpYIMliguEqJxDZLYUwIn
CuxTrmwQ4SyvzQQn1m96S8vEtrMlnZnLhg16Ab+BmqruwEEXWnGtB7Po8BE3pgfZHHgkHiAUnDUQ
acGBSiyaJZFLCZaf5+YwwRlv5EwnYrHZkofVZu6Cr5leU5T5b/8ursVgI/MaIgkqw+MHKAKnh4Nm
sQBrY+YkGaV9pClod37bLaZYZJq1IHa36kQ14csxYv7jCoDv42Z7jJlXQoUGA75ibR2RUJqIkwDC
E4tWywyWsTd/ndDGjddS0BC/Np3nvrZzQPtl9Xg3jcUOyWj1N6JwlhU3WZKoMJNR8QKswKHPNirK
BQB0ET/chJuSdEKsT+5omN6IjiK6XS2y+n+b2t+8smytu+bVbcspExyD+toXOrg1goGNprQG7IjR
C3NeI/m/v2d7T+9oGNjeLoMs8OWYJRE/xb/d9PLWi2KwFrhSIH2JyAarcYIjvIDkksIKGPcj89Yb
QmYsbDssbN2BhW+/P9yOIMDYmuWBwonSEgEiKlIYoixhMogp5uDZu1QcZwHgeteSPg7Y0LHjnQOw
42OK6Kfyy83X1fP2doFhY+AyKMAgEdAHCH0K5ryE8wzY1oKxH0UJ6YMwbEvDhH5H2e2CfvgS5aZo
62+QCkD3u/u7fUen6+x/sJSzX4AnMPCGEy3rgdZausSdJ5pj+Z6jDtPyHEFzSCSXqPMXpa4cZujz
eLja8NMk1h+/nOfFPjwBPnsZ6gOnySHJ+2TgZAKkdaCJrbIklGJIyiz5AnxJelE2Wx3/XRk0peJE
IsDkjpZPZjp8rvWWLwH9f/2QPzVJb5qblJIj3qLnAOAUCVyA/AGw4bwXjjl/MYLHwc9geLzcEr7u
Ej4e3LfX+zFVVqCZKg3zSSuwSy06+KIE6O5Dwj+18jzEXNMjJ3bRcYjZzKvlzMKsZjhnvdp8e/s+
hQhwXvcJm7pKQavhmVF0XIgMAIdKgGvFUEKd8CJpCYaGvOT5hdlM04c3XLtqSV136HfzZM3aAWM1
NFe8AbAOWv6gfTh1Q1DElWJTYmAOqRKQA8wtC6h2mRLCBZHzRYHjzlx9djo3trw52+Nt1YlspLft
a9qu3+6+PN3dVTx93NkOoKcyjJJc/QIaNkwoIILge5UjC1J7dmkMdz7Padfk/M6Ws3Vn1SRl08ju
j9u7+5fX5z+a2C6qiCxZsgDvAtjVREgVMXOnAFowKkaqozb8/zG025J91TLIe1yP8exv2z9+vRtj
2TX3yhgrlZUAtTOcJRGjIiFRBlAjMcm5iTn1swanY7VEMLUkAhOk2k1VmiiJq0aoQqwgXc4aVbIr
SgAuTQC2pYVDk0sGTOECV+cd2+cBWvyPLjxz1IqOiLRWXhIZ35vTtNaMSsXqPkoZm3EYSajFHG3r
sSi5aCI1CFaRpZJJffg+Gsk5EzCfGdTIpeqxPoZYsTnSmHRqNRrPjOvoOZwP4JJhAUMh1sIqBZd8
jiJqEXR330zGamhwy1wM+FLPIcRPMU5FT4xe8gwAXkisqJdSEuzVhQdWgTlGk5MXKQUYtv/A4EJL
phY9MufZsD89v7285t9WD291+fzd9vF11AeqNqXQzHOwz6MVoF89FhKDrCRG6BRy5Ir6i/JeehOd
4KRzZ8ua6YA4dFYuU3nQLYWgurooua7ZRYAKTKbJEpWVx6hOIEHAdueasmiCM++mg+wHPiPy4eqU
ZKaW+YeOWXfbiaNVw3s4oxVOUM5lUV4TLTSQaySQK3UkTGQKEMeBkD9/Ov/nbfX8+ufpozbjrM5/
mrV6ueHNLb1c8KWQs8Dl7ePLy2jmKKPR5MID6nJUHmwrkmhCT0XCOEPQJAmDbjyrVbTngpeTcVuy
hOqQpQafz6cvQ8OU7XN5eFq9TuyuHJhQzhpCgwOp7mC/OwbGSfTBFF1yCIz/ZbvrqCNnBBwCJLOv
W4Y07TCEXT3We7P88+PrtmYFvIyq0w1QgXkNpkvWAEIz2LVUSTC5iiNZezDKTQ7e0A/LXD6zg9oS
0gXBLb9G9/jdLc4MVgX4t9evbYGEA2UsM7JMKQbFA6jnLLGaUUkRQgClXS4De4fxTx2Kw/WWettb
LXs771zxfbvdfEXP691jbSw5aGiOXvzKyuDNV4oJzkF9xJolJIwlGPYhRWjurMoii4sQeXe6E6kZ
vVtnLHaEmlvNa7t/Xt//71stMmUVdghWu1QUpQF2GxIj2m0Ba/O0p8SwQg3j2H3mIo4Oo/eZOFxt
6V65Jd1r5WZ0H+XmmJAtNHxwNbqCQ3hPUhTYIMegSwC2GeWSgmyLbsja+utC+Xj9qqVy1SH9VoxB
LviHTVN6w4U45NopY8Cyg2cskwNN4pMkINM40cwCgNacpROSdj5qS9Kt7JEkO7bZMSlb4+bWQ/4i
ADHrDQlKYEgcE0VQ6LLIDM086qT+2UDO9I6W9G1Hc1Ug0ZD+dfvwvW7eATVX75wH2MaKJDEXrE4H
08sWVsCw1CqhJUnph1Sn/ydMfao06+F7y8yuI3DWu9WyU8cgK1UVMGpIuAghGQmbwmYQKoCILHyS
IGPAQJUmMkCvFxU97QfvU7y/2BC9oR0Zv9muxmKyYdfRa3dtR+zAD2UiiXFRIoYCOLbXyhQoViwQ
HQUz2QNgDbPkzeV4DTk7s/QzwJebxV5Gkf/D6nE75InzGpt0uDEK6NdofSHJxQouKfElSKIYE5iX
a51XH7ExpiSc00vDHTMmbztM2m0Vf5Mkejg1rw8vx+Ksw1PHEiGPaVAcXVtCcPSieEGScUbC8wdh
yM5m508Hbimzuw5lzs6q5R+fXu93E28IdteqjkvGJC4gaEUs3UsgnsFejCT4VISwShXuzrZTmIzb
0uWWCoODFV6lbivi/M9g9vGKJisUGT4NdqhUoKwJoHaQGBYrTzAyT530VWnYmC/1PcEkpyUdXLxq
6HS6Q/yazx7qr7XX+7F856A0Ekhnx20APY0J0hwTpJPFipnsqbM8WEfPPdTpuA1derc8a9wsUh2+
JP/DJOEEMzY4Nnpgbp+6AcfLaacQ5hXQHxkWHbAFPFcHX3MXuT5vzeEEJ8AqXGlIrs0pFiQL20uT
ufnxh0Mfnro3baEgqUBUYV2LkKB2g0H3VRYUVLQ2SaaLneow9hmfOlydUe16VM+13EvFe9fPR8A3
dXJjfo/b5/kgAAqBJ4UFmtRTrOt3oLZ58OiAVzKnGMDm/gg5t0ChF4LV9gnI3rrZsZZ+9XbES8yi
GPccrCLrAoFlwQxEsLyddJRwJY02wXpVWKtZjmO0U9uls46v13Ov/G/3tbFVAVNoAJxin4sqDuFA
ESzHhAnYz/i8kyBB+kiicjE7Fi2XF7muDzOcePD7qw0L611n/2yk7aTRbh72J7SaLkP2CiBlRWXB
6i20703EUiTAe9QVVahwxRn2l3OrhmtXLWU9cvVY6lkjUm2yRCwyuiLR0mcCWzNSYr2Dw6nBRgZL
0ct3mpxcnixxnL0lWu86RC+qgfZn9OWPx9ev2yYzAU8o7JUhFU8MYZxUoinJYjA7gD5kBkBqbVnA
uTI0BluC+3C/7nASb5YULo/reFP7KMy29yi2cwxW5QcsoZK1hAXX0YFRzzS2adPY67EkrO6E4wIY
0XmOeS/F/mWhNFxrSbU9UptuFuPr7mCvVRgQnBK0JOJQusCagA2G3QYCWA3KKcoMo4tmFtess2W2
drnPhd5uOi7FQ0pFjVXSIRZ/zNqQHnaJB1nipQHRwkC0WAMalCuXLahQaZX7J7M2pndctfQusaiw
TM2Ty+D/3+6rWwRl4j4H0GWaXQTRDMpVYUosAyMcNrnTnOskKbtQp9aay89n6jE/X7Xk6R7NbrZB
f/++uR7frvAI8uHX6lo/hgS8U56pCKAqcMxrwrSCUixhyaQsEoiddzyNi9FP1djMbptxs+pwI8XB
Gvj95eF1sonFUF3AHOh/xxR2yXDo/3DEGaXBBsgB5D0rucyi7tNxWgKWuaH45Qj6P30uM3FtlFec
gZAOEcsyMFPHY7JxokE7E4LIunyQuB4nn5HseiTPpXUun7HL+JjdVbuUBjBLDfZwkrhnMQHGxQKw
UFJ4lJbC07ioke5h7BO5L/urM6o3Hard+lif+PwAOvsQPRNo79Wui9mZnBjKUotdFwtox2wtSQnO
HhwzF2KeVygeR2pJcD0SNq7jK/r7/e32CY9LBftSDaanTYGaDCsPyAobk2NtO/bPExpsO5uYY+Zd
UVVHPn3a6+WW6k3viNyOta3rP9FNe2wfUXsxpWIFFgCqSAFAOgwT44rDGmuFVZ5BzQ5IM0o7/+3S
UhJO6TMetuv/vpk422AhUUnW3yg3EzMgdxwJtVOughNsuXZEazDsYHsqy/PH5U4fKTkB4W56vjmx
7j309W6u3sYhX/bxvu2vQ/dZMbQGrh5G2DSeGlIs+s7h+IHgQPcFV0VqmsHAvTzro47fYyRMrreM
7DoqbudUJ1rZTTUAiVtr/GAfObC2QbthHFsy7H1qMC4lvJEJAI5/P7fyvZTQ9p6rlmLdY8Mc9MQw
8XU4yurq5pc1jTFkIhUmTCsFhpQXoDekACOK6cTkDO+0A81oWB4ESRc9o8PD2/b16WkICIlqRtXf
OySIgYqgKcDmp1gvj5G+YBRgfTDUOGOAKBR9pxhrHP9USdZ4w1VL6DLVRzLsT7Uogvhp+ztABbCk
B0Q/fEDNlxXn2AfSYuREBA3AUXiseggGHiuVLL8fusbBTy8/Xr1qKVQdsrFJ//qdlpzX/qcbFIc1
cmJUlT3W2pJpYATEDAYi8RP1iSiqNb5Xgop3GtR+aM4SXGh5XRZQO8nlov1ohvNpWc36w9+mutCL
cFIpwiJ29nccjC0uYbc7w6MOrARlPk6o+nyCoXzVkt7ZcsqMtvCv281q0uZKa115AZlofVaZGK/A
SJFeY+1QJiB+FM8gMlnTfXQ+0FU7265DwkqOXdAf7+bwziTKMsC7wgUWDOO7BgSoTi0KL4E7Zn34
IHg3Tt6SvOrseIW9i4dA+zMM8fDbtTsmM+D66yBsBmMTcAi6wYSH9QeLRASV4ZukMp81smiHaSnY
9tZtx2YpFa/Pq2Phh+GHlghW0gJGJiMBxa3AZt+OgsRDUJ405rezs+Xgk2FbqnbLrD10uB+oCl/8
zaxjmnQAdfAxeGczADZMvMoJ4K6LIHSV4kWzf1HHtCN1Vy39rMeUWnR6GCl5wtcPKH3NzNA7Az5g
4McaOBtRk8wk5o1QMEoy5odLbBcGKJle1mypmeiUgpnc0jKz6TGzox2scRA1NQXjEbtLco4VN9V1
N3xCN68T2PkNpJp0cd/1UmAlcwSBbeCaUvFS7DSf8f1g7eHOlsddl0d5TIP55ac/vm979SnBxwiG
OiMUSzxAXWIvMuOJ0Tk7VrSSFwDff6g+pSFlxkZHyFh+POL7Doas0x1Ra3Tmod6nGEzAHq9BU2xo
ZDKA+EK9m1lks9EaSqzsUaLnjSfuH3ejk1wqd4gG8sx0lEEQL9AkcwprfiSDDSMcY3D8PcvnhM1x
2JYove0RtT3ZNO96OP7Vc47/t/9TDF2wwF4E5AE6JSeBUSIBNmwBEa2z0iUBB6r8S+TQcG3GaUdB
3qpdr8X14T2wy8Y9RumcAFkRnRwIWthJmO2Ef4LCxn7h/B0Gp+Of6XO9v6Ph4LaTmCZrk5BZmWt9
TzPM2zTnq/JmeHuBBgEqMgtEYRdjwRWHHV4KGM3ZwU/knvuPw1BLek6Vxs7vm3KvxG65fkrsxn64
GKIY3tN1/3j386R8heHioZsei3jBEiIAfzl2+ZbwCTZo0YlSy11RcpbFcGLIhiyll4EnpW7FzH7+
29/izZiYxc1QxhedA+wKqixhz3chE3HZSTDhRBEqF9DdF5Xw49gnthJcaam9XVr7mqn1MrI6vLFs
MI5hmw/KN0urkoJHKLDFiZABGz6E2rQoZ56oCeXdDPYTFcVxf+2qpWzTIVfPC7sjvm7y8Oanm7Gc
jA4SStd+CVFKDsZ7JPhGO6C/9nWAP6WNQXEKR9dd5sTuzHVCw3bubLnTSzNbc7U+RtD4PICWfKYY
NsvADqYnUhKSkrUwhQICBLgXPiyAtmx9htR1FqS2nxtAwep58/X+t+2x/Zqgh8beEV9IA7YFURIL
SwS2FxcoSBULMignwBqahXrbwVpCbO/ZLbLhMKDx8LTZ+3oYKIE9nIStBRK9GspcAR2cZIrVJZli
+qpgxDghQbVq2NX6XVn4ZT/Faah1uKNhQtwu/dta7hHBkYn7x29NHdyQITD4fWymHEsQCFOYIGkE
vkEQRAoTAqQIzcbHD8mD+jyloQHJj9+uWvK3HZ4s60Djif/oGK2xyQTvgic5YJ4iBdiI+IbQIJIz
gkcQ+u+uxzueo+aWlnq361C/oSfbEdVMEKx/ZWO5D6Ow6c0+nQCkjQGAhi82QAs/gF2Gneps0lL6
oEzK9OJ0lDrNmYSUer1hx/JlcQrYFquZT+n0a7fn3a5A21lQW6ijsEii4Fv+vPOE0RzA+tLcOfN+
t6uz8Gd6x1VL97rDjNscxOWfRwyvhvcZRBPhAROKPT0E04XYYOB8xOSKSJl5P8st+bOH2/Wq4yTQ
az6K6U9fhkT8eWV50ilFyiThEd8RhdjdGeoJ1wXWqRSwhspHdUeaUNDQvlZLI05vzNwp/mX19rj5
Oo1kyGulaygDP9Q+Cd7XALrDMn2RAat4yjHfMtCUVInpnd4o/xBkbOk51Rdiek/D9S3vyKBbNbby
P/E6QFpiQQxDXMA0V2yFYXnRpCgbE8tgwsoPfR3g/F2AR0pNh3w91ma/rF6mLVbZvvYEBL4BHauJ
AeyIVreHJTKw6RQYjhQ7RCk1t1Zfuj1WYbbNkgRDMYC4boucn6Y2RpXh1JhrOsRSeAjFBkAqqXbn
lIITG60EY0l7T6mMXIjL6pufzu+FyQ1XLcWrDhvb0Sm6HV91OAqO4R2XIVCGicXMYQa/xqQNMB7A
2A5gCjJhF6bCbKSGCkaX3m7Dxfw1x9Xuw85tz08PN7U6aQxoA1ipD9RawwGDaeINA+sTu3947J3v
g+fUOsWi4xe/aKmZ6owp2tx31fLQ2SVc0ZntgxlrLwczaqjjr7lEe7sMXyLG/6+4K2tuI0fS7/wV
fJkId8SWAvfREX4oHKXRWLLdluyefVJQJGUzrMNLUe7x/PrNRPEoFFEUe9sxy+ho0ywYSKCARJ5f
4rHzWqFSAeqFaRCMBdhn9B5Uosh+hgiTaXPDYW7bJvlUC4xUc2U2CSHfw+X7vEpQaCLomZRUwgbM
9iW8QqC/yisanKqF9Dz8p6oEbYnL5lTKsNX2xuxdDg+fn+F6uXicze96mf61xyQSkOJrEkF65jyi
9Ixloh3cvBLTpo5K/uqPMQwF1G2Vz+bGlmbTrxI4zcBTNg4ZazdRGFI1VsDGqwJmSHLQE2A3EoQe
UUwTkByMi4ej7vf675JpWMEKaNQOYv68fl/7Nz3zfgMHhNZRV46AaoIZwYiebUCeAJXPitho/58y
73fpG+Vz4KWJ2X5SQVtLcY/zUoQta8sSuBqh1oirDNfofSUINQLbSzRGgIgbbBDxiHKNB1gy0DUp
EKv6LBn5QVgsE9rej51FgZrkiWJNIzSjFUFcdW6oqzCqo2KO6KAs8Vq/XPxn2/swQ9o2yWegCjNI
1YrymlZnW0kew14S7Kg0yfvoKDUmxFDJiPGItROVRcx+pWGdPaUq+vhTcqvODsr728fZ9Eq558ZO
+lfL6eVlLxtVNwwEU1MJ4TFmzRhEqOFVIyIolNa78AKcE/Q4IGNcXuYUTvZvBDMhfe65UxVROvx9
0SzQdJ5c9aQNE6KWKetpAI0XY/yw7JnhDa8QHAjZqA310eGV2P+wzotPszlMChFPZrKTj07ff1wb
ri7my+nzch8CVrCAIXVwCDzzWMuogasAVEOK6RBRSsbtURWbdyMdo++UycqndrsvdJkbPSu56H7c
3zxugh2SY6Mt0bqGFW5C3RgDeoBGqB6O5bEcnKEKtEouG8ytdfXRvrnuUAccc91mo3wG88K0bvrQ
8wkHp+0FJXMq2xgntP03oAqACFJpdJ1zb0hl8FIBZdjTOoDGTI4KjOyOMGDP77TI51C4qc3NVOzX
7Lxs3WkF6GoXmzol1Tpq4NBYilobC1XTNDxG5rR26kjDynqQQcPK+nk+hdvSa9g5I+5AUll0wOZa
TEtRC9B7KhbR0qiA6VrSSAxG1pR6El3fm9jtJRt+WoBXgx9lH8N+NVk97S7YlGuGi6dqG5tgXEWV
AxnHYFIRxzRU7q2hUmKe9UEc+12/PbJUiaxtlum3yX2nMghJVTmI5NaEytYW68+BTAMcSWJlTWDd
DmhUvTXp9NEb+6YwttjbVIvl+7vJj62ToKdg1TrlnsFLQWhlTiLQQ6WrNANpWQctvLFHbatsmIGt
lbXJJ1MSEqeinx+7qUuN72OBANRPOV4a2yTFUccpBSatG4pZ1KnCdBDouwFp1hK0iB2ZdoxfLgvD
9RKQ82a9uc0Kc9MliJb6k/97wIwbnULApEb0yNbWESVIxtpX0WoECESEH4yVBjYNKjJwfqPV0Vme
OMqBPE98nM+gxIOn89leSSF0YLTVkk/EGmq1RWY0xBju4IV4tHRzbUUFCnyshE7aRzBwHH6eNW1L
yFDewvpxPsl5aZK3vGS0QO3i6WnRIrNv1EOVqnySmkfi4O5EXxs3OlaOoc+8Do0LUoMMrV52l2f9
H7BUZO2y2cz4fkiVQSdtvuneLx9Xj9PHO/d8e4vmF5qc5uZkXZpMMBsdQZhBgjVO0Phta1c1Grai
pcA67FH+2nyUIVyubpt8LoUsSzPbr2iVSzU02VykIkIm27SQmjoKYrLhbcVuF5Suaks51oK0wPCO
wjl5WZ4ZlmVm0wLLvtWTNXJQTODtHVkTKzixoOGUSyxQ7CwIYqgcYg13pRhX9QtgIMdCBrUj77CC
2r93abeE7Zu+LNGmWEIksRH81gZKk3WgdOIEUYFqy3BPIewXNfgibKwaxG2hjNJ4RKhU6vsAB8PH
OfUFZBb48aanq6P39GnDZdbXNiYlC+q0l/AiZI2SDPWIYKGwiCwcdlDcieXmJWSCvN8eddMCddN+
QcaL57vVYvX4PP2yd81i3TGRAtLTnwlMgdsGC5yottQh6FfWS1YRhlDoDZwCeZSSdWDQjB31m+UT
3C8aaxH8atDLmJS38/rtJtMdpIMT3pqqCVdWU2HX8dAMqzxLJRDXJWJx3yj9y/5S7PuA2ghPRzmp
kwL96/Dt3Wv+tvqynE92UjDZQlvUPmJIna6ix7rJTKLTPbpKKBq5V4KK5mDhyaznnLRClhv8uM0h
gn8x20X6cRAlRTLliIZLLysVucTgELiPLabxEiusj0KIWKZn112PClOgYsI3VFydNf1kO2E5MwaF
GYQE5iDEVEZgimjUHvaospGbnxTasRs9I5rxfQOeTdb87K1+nS8f5nclUO/AFGa1msqHiFDaRsJl
L5qKCU84ix7YGTv0Vrs955RJVqBM7YDSPzSXz4vVPCssDFecEQz0G+1A1OWB+MoirikNjLAGFrWW
Pfdv3k1OQSGqwcJNuavL+/jwvVN0sK2uRFSAodDrDNeVgUNpEJQC06OlE8R55fsVeTu9jPKhaGF8
04c38F+eH74uHj6vt8cmkRdVv+TEtUF4Z2UlGHoIBdyipr1xnGq0czTqo/SA3jADnCNvlE1HkMJy
Cs76oG1fJsvkcICj0cbttF+Qg2CgP9aJdgiJwYN2qDg6EKO9tTX1TWyOSjZbDzEgurQPc9KVLJCu
SurLVkBvLuN3LMeUsrVSuar0VjbfUyoByFyB42aViK5t4eALDXxAgm5Q84Yy+RNTBTf0DDRcP82n
XQCot5JtQRHrT00rhWxNHm3uOBOCBswYDwYhrgNWdQtYJ4oKEBUEBdWN/cX6Chlvy+kY5dTeFqbA
t7Fr08dvP24Xd/PuFFpUQOKVCRyzc9IdG1F4sLSuvDfMc1Y7w9UAoFu3y5waXrgipNiacP41We7i
WVgKaNE+KOucrKxGrRFR8U1tXMUajjvERpXdUnkn+eBCFQZXcgDnu+vxAym7tk2QFVPA3zkVoXJc
IQpELZQxwSgX/gy292E874xqJQtik1Jb19nzwx+Lh87t3jqToo6S1qRyWI6S11KA4Odr2IVo0zXw
VkP53XV7y8koIP7ij3uLN32cYAitSQamVJHHk1ij496joxsUYZAyBK1kMMB6iZHNS7AZ2OXQgsGj
HpkFSUjtG8Cbg06uhhoia9JUQXpQ4GVtKstB2iSCBWlAHzOO/FUnV3eGzRHte42yWeubws7WN33l
OCyevtbLm8Vqua0Lk7SFxLNIaBoRLBys2nMsPgQ3JAqHnDRwdbvAwgt4Lr3eBytBdRtlszCTgnZp
Jn2Atpu7x+nXrWaWanBjzHSgoBQ3vkbfaRRo2Qcd2VErA8jdtD4IGtftskdSQWU0sz7sIdot4LXM
Z6k+1LbwQac2QNCqwQJpnmH+XnAejQ5NFY3GzBGhXEOONaLsDTRsS9lrmk/utrDedtq/1PGVJTH7
qcnCceE/mYrCoQkZRHdLlaKV8ynNAMQthxG5MsrgaKBR6KNidHaDDe+f9vkop7ogWk3UdC/NZTWZ
taDdZF0HylJ9kjAVCPEgJspQRc3QUUEZCCPwxgSWkDGYchvCzxNGNpQM2fXap6N8OrPSHGe7i2C6
A2Zuo1ZBvgX27ykWBmUgMTpCVBXg9iaMOR00GbgDCoh6MFJhiW/2LNiz+dPX1eO3p06AnF3DJdh0
NTUxUspBJZHOo00CDqyhylahFsZFqp319jhXXBpos+LYYMgjt9dwlM+hOLFtGvNdCrncxcptk9NE
YygCJOCKwvVGOKlqYwPoGQ2IfBjRbZriAnd77JFSENZubvoQBL8FTDFowYraLI/A6kB4BSIZSs/A
CGss7OVETQyG7oQXYjL+L2nvvw14D37L3AZ2SgscdMr6ycbf7iar28fl/Zat41YBnZELAgpB0HAa
eVAKpJjIKkGNYqKWnoiD6JB5pzlZrCAnzJTekvU/d6AT850b0bQOWO9oo3UE7R4xwJLJhIJYSGt0
KAGtNeO9aNNuRxkJM1MiYV0FHsXoyfTLfBerhRtORluzmOrNwujKpeIsvALOBWdKUVGH8jXX6Soj
YU4K+21O+2kLm5LuXxab+pGI2tAaGAM3lmLZcwsXb0TVFGuywYtjmjrPvP4p0TSbSu5/Pztc6f3v
Z/n8CvE0dm761/eb+fJmvnx82sSoJDAMrUgknoFuzRBYkCCgDShDTlkWYEv76A4Hn206LRO8eZqT
OymRO9ma8YDib6BXLa+Xq528n2JJTeMp5xWw1gRNC+fEWVJZRriNzGD6woCm1uuwR07B4DnfxRZO
779t2WLihyp6DnJnFZI6b+pYOfhUNQEJWsLm5L6PPrftIR/4pmAKn0/7hpJ/vvdrbrXxaCcraw2c
gVte0UZi3SIlq1pQDbI7FQ6kQU/kUZLIrvfyG9w9z2mf8hLtfRb+dr5qLjd1dVv3qGeKe2DXVcOQ
t1DMyfLoNbS6NlRTRdRhm3bqc9A53VzmdBY8nRMu6O00W+Pv64Ihpq0gmQjlIGBrh9lioBNUHPVg
h7UMPWcM87SFeSH76ieVe/i+Vy0EJsAKs1LbWAyEzdu/yCUsM5wVhth+EYugiMo4SSqCFUK8NyYa
UTw/2+5yItRNgQi7FdSuls9zzNy/nE5gFbK6WyS5CRzwHVjZmipUZiRwHmF0JRvdcCmwwEz4fyq8
VaI8n7ot7apZH0zsw/welJNPi/kfu0SK9gRbvOe8rRVDICpH0CuACbdOU4SQhNcCSqqX8qgMiv1h
hubYb5dParavJ03kXqFl36xDQBAtBXSjEzTdrr/haxUgcIcAcq/FiiEWYWADg9da68gCpTaYw9hE
2/6H7APrx6OcTFOgfQ+3f1tJLiGMbdzwWYmpaJvaOXSxIVttLIaeYdVo7yXxPMrI/1x1u2ykF+rb
ZW3z+d0Wzpoy2/S4pJSt1eSNm0LTDfy4DRauClCMaI2WDiabynCuKxUpr4O1UYhe2fu9/kb5wPsq
2sTe9v3jCQRwGG3BRRciiPJYOgMUN5DfYfuDmiQjscoJZsILJaS6/ZdXtttilBO7L65PJnTrw7v7
9/0ENvQmiwxFQFA8otFwy2oPwgdGIRsqfMU904128KPuQRN1+8gGv+X7Ziz4sV8MfJGqgZ80i4fZ
xY8wbwWAjq3FRwzmlhVzWCeYWN6ajlOePqgMtQxHRUl1+x/gn50W+UQK/tjJre4Xrbrf5YtjijYu
ZqSsdkIi0IbClAeEoGQKRAIRbIPscMBum/eYE6NliRi1A5y6f/w+7/oAklDJhZHIbSvlo2mNt7Dx
QmU0VzGoaORAIYZ+fz1i9nnpDZn0XXofz7pohbt3K5RysPsN1s9qMHqfINRxqBqrtRUMbnF1VFRy
t/+B2j5nZajCG15Q2+DHbZql/3Rx+f7u+fPiYRMr0Y8ebwwDiR00OMoCJt/XoapjiJXkvPYExGbQ
239OiuwALb35FN5IQhjRLxRhTmnSos1qgy+4Z0LTBDj1lQtoQ2uADdQMNCcvati6tlFSHxZhS6We
B+Kr9hpmsxKFWGH4catcX0xW0y8dV5NIYgfFiFe43ThWtTdo9XchVMCFuWMiqrYodoeTZb2MRvFf
a7Sri8fZ4nYThHb5fH8P0/wV6POTu7un8f1kNh/f/Bg/rr7Ml+Nvy0eM3wMRaDVZfp6nbMHVl8XT
5sGvaV6rydPX69vH5fW3xezXMWt/S+Eg11P4/2r+65h0f3yar1LA8vr3fOCXuid/rXv4S2dWsAJp
PKx4uXiYF6eDMa5/bszRp4sxloDtru8HaPXu4e7HGHc6Pnm8HW+Pw6/jq8fV5O610OSEXIyX8ye4
Ah9Wr7niJ/LildZ/+2X89Afs9fns+vF5dQ20PT+k6iIw4uw1JQqbMf63X0a/Lxeryc3dHDpBArZd
0xN9Ov4DHq7mD6+ZVSfi4hXFfneDMX6i4UebD/aavHlF4KdswBNx+spQGG48+hBPz969HV/99/s4
Hvh8Ovtw9bE+H73efYaarh+P/OkYy03jfntaYWxaqTE1Wr3BpoukBx76UGNEavqU6r23/+JpoG3q
FaP0HqBZelnDH9M2/Xi2JiJZ8Isfzd6MwuLpGx5L4F0PcJjaMp99MgRoshejzh1z8APTOnuHIc0v
fECIBwJajfns3QtNKTT9x+X4H2dX489tgWpYs+njrL/IlCVay01ftSGF89kvaaFgz8HeXn82j8Zw
VCazGfz1aQxLg8JSZ6P9MnqTApDGNf4yfvcwnQ+/hov6/PydP7wIHHGgLzZNX01m94uHX4Zbs02v
1+f1h9PYm1F3HaDpn53aBYgiyx/jq8nnMRN28F1I2IzdppIOvzdo2l6/49Pzy/MD68Cw18ur2r8Z
n36sP4ThlgjyeDG6XMFhfGmHMXZiLoD3Xaclq6/igR2mT/jF6Pf5DW7ci7QoQ50qgU2vr0N9Vb9E
AMXNeH2Nk3cfz86vzt5eDi6AgS1zfX12UZ/GF7qVLDU9P3v7JgbY5gcWQLa0XsV/Xr1AqhDAbKHp
x7dn/l04TIKUsBHvE0ceo+h6oFeG23vN4+7bXTP4UTCtP8GSr95d1efjFzfBiTxtm/7XGA7X81N2
HtpzsNkEJ+oULpDR/wJQSwMEFAACAAgAGogdSQf5sKLnAwAARgsAACkAHABqcy9kb20vUHJvbWlz
ZS1vblJlamVjdGVkLWRlZXAtc3RkZXJyLnR4dFVUCQADtMzEV7TMxFd1eAsAAQT1AQAABBQAAAC9
VttO6zgUfc9X5GGEWjQ6zbVJI4TEKWWmnPbQIRF9RI69AxnSOOM4BV7m24+dOEnptMBoLi8Vsfde
e+3bMhdhOLuN5jff9auL+WJ2GehpOYUsGwy10R3Nqg2Uo0vE0Wi2DkdriL+lfBTSimEYXaMtCjFL
Cz6lDEasynm6Ecfh9Dq8Q1kF8zxLcyi/PA5cwxjqgS6ugkD8CHz9VH3UlkGAVFQd07zkmqnruvFi
GoQYk8Qz9HV0NWWofNQsdYGx79vJRH8XxW5RXNf1DL8xjh4ZfQ4xLYQ9l3/PXjAUPKX5oL6fvQAO
OeJw+vMb9KHmtLETAgST5vZTEH3Mk31Qt+U4MUxCXD0TNeP3ZUaf7wvEH+9rfG3cWyVjJ1FWkHP2
qnn9HWDLfnPn93debIO+3czkeUT75mmT1mZMYsdDit88mlIiSgQil4pDk9jdss1oxSinU5RlVwxt
4HSomUaL4oLvKpR5zoEVDMRvhySdjlb6Jv4dMG+/pWn0WsDOp5zFprt7lVRfF+xhkZZcmQhapuoZ
AHEm0Bjh9yjsov0bBKyewNiKG6OC0STNgLxTi1VtkuYPt4BKmv9n9GzVNo+4Fm6bH17TeJli0WNU
PgWBWO19lsLTqT1NG/zEjz1diIPUAem9RGkuRh4Q6RxqkEigHUm3iyY5uQo58V0LYBf58ma5TnNC
nzt7mXSM8JPqqvAet97jxIzJQe+vqBQHf1RQgeQU0dlW7MuC0mKgCvBLRmOUNePYFEswFSoUBLeQ
nL2lfH5yMgyCn+6NIBAbzhCnbDCUTLwdJgZu3K+qHEulONvSlOiD4XnTNxRnsGaoEP5n/yPj875s
fkPWIhMCYiqOkd3NsBXrSe+Kvbiv+IVw3oLIoW3S3kwNNatRDdPxEsdGdu/aWf4mUxYbAyyhbNO3
/RHwU0GF0kkUU6GYfuyA+eEokpQsAG2hfb2ESr3UOJZqGPHBstwPcf48eC6B7B7ImPwTILVkDhi+
h5MPgVphmW3FzqNWtj8pLs27LmX/iILUM/EdPQFZcXamoNXLdy4W13I7tmPX93u2faEZzbL6MVAE
5/masowM9kwPUOks5E40m1K77l51bC6BozQrhUxZ457TGJHPcPo7ZA5F9NqIppsQbz/iLIONWN3u
PWxOP4wpcP0O18ETfBRXvLcFYh2u7Fkk5ntFy1QS/WsOe/4LeED4Vb4rYVUUlHERWm24jUzPQjuh
f42Wi8b9tspzWUSx1/sZKeRWjg6QGWq20UcwYvRehPY/khpshcpS6Jucx/145+/GU5JhTxzbcN23
8S4priTCCrHyTU7lFWUrVJVAIgbwtUozAkIJtR9QSwMECgAAAAAAHIgdSQAAAAAAAAAAAAAAAAcA
HABqcy9rZGUvVVQJAAO3zMRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACAB1iB1Jy1XMibZO
AAD15AEAHwAcAGpzL2tkZS9leGNlcHRpb25zLWNyYXNoLWxvZy50eHRVVAkAA13NxFe3zMRXdXgL
AAEE9QEAAAQUAAAA7J1tc5vIssdfXz7FvLiVI2cjh2F4VPlmS5alXe/66Vh2srVbKWqAweZEElpA
jv3tbw8gCWEpFo6c7NltVcqRBfT856mnfw3yXCSxL9K0Q1ZfR7Px9FJMApFcJUKQPyi8zI/KBc9u
66fC6+37eDQbi/Tt+/OT69P+29dvV69XjgMxyaIwEklncynKe5GkUTypF/Djjz8qvTgQ5OphKlYP
/mabbVMnrTOeRXdiD/QlUBC5qFXq4iG7jSdFLYyPyqVIp/EkjbzRirn0lvyhmc5H5ToVCTk+qusw
VKooRzwTb6+icU2IplKzrdptzSHU7BhORzf3LYORtmqpqnI+JOvqdsp9Aod+I1Tdh38GaVF9QB3V
2QOJ0zjJHl1FqdKdxJOHcTxLyfV1ReOhZh0Zdr/f7jl00O4fsm5bH3SttnOkqQZTTZVZh4qiSOWk
+5l/EmQYTXxBDuM46xDDVFWVpMKPJ0GqKL2Ep7ciIFe3ieDBogwVeixKpzzzb8mfMzGDNvDj8T6f
Tkdif8yjSTvLL1CU/r0vphkoX+2z/m8997B75HZ7vf5wSFrD45+G/Z/e71XOlx296Lhf+5dn7vHZ
++7JMVx0dHQpr+IZUe/V8uV5PPCECBXl/Sm5FDdgIiVngidwzvxYR2m33xFFGnTdq/5vV4/Gb2mM
qiFjFN60Kx+ETDbNH4RYlvnrR5K0798mn+/J8PT/eucf1gx9aOO8EaC1ymbsdLZsNmjfypFf+B0f
+kk0zXpxIgqh/7OoOaWqY/DQssiHq0FeEPmBMEehTWyooR04LHTIL8Nep/PL8D0fgboOT3tiNGrt
gaFJmoFdiylaM22Um5ZqF3ahPeLPQz+GgdDJ5PtFb7fy4/174Q8zmFev36wI2YOSdVVhzWrka2Hg
B4WhrUpbynu1pnxD0ZvV3DC0IDDIaBRNMjcdxZ9d6PlbN5cCBjWwaDS0aKqmHpYWwb0lD7KrVcei
itlUGzQPq1nSbGZaitXUku0xQe7GfWnlKl5eILUxXbGb2WOar1u8bP7jK+kFOh0BXTXLRNFv70/n
HQbePYt7fDQaJHwsXstu0qitOM1K1HiomWFh8XiSiWSaCPhZKxXKuoFS+vlnHBaMuYg1g/bc+4/w
s1yPbhqGQtVmAxd62VALY+IOBiCfi3hU1jCeJb7I18R8itYG7hvpEzqdM/DywUWWHJRGymnw7lWu
0FYVSpsKNGxRlDRN4jAaiaD/ZaEX+WnR5OZS8DSe7E6+oytUq6r/ILylbPK4vy1uOJbnkfI8Wdgp
uN7CVy90f/+KWRAFrJW2f9ux1T2Fsoa1tgzbXtZ63sEwa+PRKB/uZUWPJx/iZBS0aqeuqdLijKPz
0w8JCBFJfmn10KJWRyLj0SjNZwWDLmvVFez702mHmgyqpjetmgnL7BZVa1KntcJNukm3BbEaNZrp
Ns0wsOq6+yMxBo+8cD/Fp08qz4eMzubySiu5NqZJbWYTbaZpWgKC0kWpP1+dnhSWL2eTScU7XkDU
DqO/ONadBPMAp38HxS9Vr5yWi2UyXK+bLdpSN0Cv1VRvoOnb6OUQSE9uDkex/2khqJULsrRNgjQK
guyGgmzdZ88VlOaKHGeTIEe2kNNUkKk6WwgqFXzgUQZ6BnFyEvOKN+hxH0JZIKd8BJbTmW0Qqqnm
nqKpjYQaEM465qrQo9ifyfEsG0tKncQAkQ+DaBLJuPqL4jSnHGerNnJ5BrNBHm0sLwwJwFf7Lkqy
GR+R7HY2+USyeGeadWuzZE0HyY1WPMML9NDTyIYSOx34zf90lsvLxx1lKmmtnlQ4Eh2cs8Yalm2o
Pt1cdpi3hxxiMNgqXu4WAD44nIWhSIomcdZLMmFqanozSaEVAvDWJBVjd3tBVDPniopLi5lJ5Yhq
tg4Ehm2ZamUdmHlJWUcpQ46dIAoGK7qCeAYxaO70TRucfv2SXIxuy8Zp5PgtJ2C6aizFXD6l5NGZ
P/NJkIfHS40G+IfLx/rAaYO+Ro7eVrnu+Zy0/yjPXC21mx6JkbiBpV4uixOIwuUCXpPc+Si7z4bu
e8LG/njc0XSItbQV398bnInsc5x8eqzRCsPQ4brDbRoQ1zWN9h9nw+vLk95CTE4YE3Aa7ucou11+
LpfOsthOPBk9dH2ZyOp8dD25MLjR5C7+JGQE4iia01SNaVPy1UqkL2WawtSmpcPwfqr0ooz1Gj7m
kKIw2rBcz9B16AP39zPNWim6N4rAp7q9EU/TyNdMNyiLcuuDu39NWdH+0ziSggd3d/16j1BVV5jW
SJyhhzpnW4ijdt4887bopg8Tv3/xq/9Y1wU13d5gxdTFr4zVPiqs92aJzI6670/5/Wp1XK1AKsYa
1YeJQAifwMI/iuNpHsrI+Fjcgz+dW86Lad3FUVBErOAg5C+5L7VgWK34cDkrB/FsEvA8F/ioRObr
jgkBZG/QTRL+0IWLHgazSV5HOUlguBhNaxAAQ6ytAWBNGCfjcmlkCjObmvYcm5zORlkEF9yLZFiu
fVXDmg1tYDU17Hh8nWF3bnmlhe1mLWwFXKUwRnuDy+uzk/PzC/d46Pa6JyfHZz+559dX7tW523WH
59eXvb7qXvQvB+eXp+7g+qx3dXx+5rqytSyFOc1KNUPPDopSZ5MT6IujuKhVqspWAvenq00tUi+s
WoT/5CjXLEWnDU0JL7BJ1dBwKvwojPw80DQVXcvvUpDNr5VECjMgOvWJmucXDVVmcikYYQ2NUFUL
KkaYahsK+L5mRlQDQsSlEVVXNUU3GhphGq8oodSBEaCbzYx4XDhLJQYzbUNVICImo8gLHkbBPvyI
vE1G8p5yqG4ZvkPSjCcyD0kXuXj6xRy8LKE82B7zCb8RSZ6Lh8/ThzQTY/cTLFpitCphpWRN57BK
kk9C8i94KLk+5Ln4iu01NajYsH0bGsAUxJ2f745vEre4NSCDKW1RG63TXJ6j2xxmQyrGn4Hw3DS6
katwVab/ww/7dH0rV21pfqAHEBmlWQAex6Uyyx6lpc5OJx0JMXXBC7WWJ/i3STyJIYicJfkcOxjF
kxsif7ypmMmPHdDRG0Lnd3fU0TvyrprpMJreh3CEAY2aLzlPKt5GlhT0lTWr1YlacgloWivNBHfh
jfkIlqyyChVZs0kEg9yVy9nB4iSZRYz8U0D9+3evqvKeW4lcvdP4BgmI18BxLXTJ8Xg9yaLRgI9S
8c1r8YZ4cTx6VaT5mt6agbrogVjW5WfBp9AdPgc3cCNOeHIjirsC6XfpHWaaTW8RQY2o722q0fcZ
YxprenvKETSA4KtWC5h0fhEDD+f12SsjebupfUujdGk/j9CveFppCllkEeuSVk3H673W3rv87iQ4
oDKoaJXJBaPpfSxHmBqQ+y6k5PfyLiRatL7GXHlHrtn9L1kRGxxDQQeVMeGWjtqdJvH9w0HFic/A
7EEhA8r9OsVvvqoBX8tVYRF069TOb60t1+dpUYWVxXU1cGFCNWB9Lk90vTh4yLGD5re5GlkK5N2F
haVFLGSZ+b2jRqY8YA1SN8QWcQjrVKOoGukXCZ/mgYouHeqYy/AnvXGzhE9XopTtDTF503xuSAZQ
9eBhG4YQnl5liKFI7iJfnILVizhvDo3WV+9tzDLLe4wmlFm0tpjugE1WV7Qt6FLVNYjC64mbVtGf
e8StZhxlkUWmhum1laYuu16SqhtMRvyuezYsxpPryodhCoJkupH7/N3MIZvsbA45ZLdzSIc59Mvx
FfkAfTKK0ix/I5Ly0atnxPmUmdCmU+nEbl3/TkZXzwvzHUApo7qEx5Mgkv3p3vEkks9CFLHbhphg
+em4CAeKOxyNA3jHN6lX3Di/4Im8V3YSy+wMvO/NFYFHfjgeT0ereab8mvzBnuCEj72AH8hIj4C/
Xt72fXRK4eQrpzyOYbJoLIoM3MHjg9BPPHhwfdkGXxsAVRioCIQoNZo+DhUyahjicfvJ95cinY2y
Ldq2aLj8vMXnhzwVleD9ID96ArV+11q8/Qs1X6fzr1Hew/9q7RUh/9+kPipU6N2agZ/rffW3q+qr
v9iU1Mxm/JvPSN0Rf4N+yR8BsJshc159putFML2p+utrnre3rTYlWt32uFg+WjhfaKFqs/IZq4K9
DL0pZeq2Hzr2GsuVX1owfP/XVTsdWGOgLeOktVd5sFZrTJ6yTDMg7u9nw4xBD2m2O7/VIpsUorNs
lkzcz8VzWcd3fdN1ffDhx79c/n7GQCqlFXU92r/rM9DX7/fvjqbnV27xzKvTXJTqr0BbWN6Wmb8/
2KaVqgMvpyzZYFtd+W6OZ5JmV5oa6qM3fRQz5A73eEXMvDYHGwpZ9KfZ7KFKiG98T7fL9fkRhS+Q
khp27XnHLQz7MNUKw5+z8Gqjbc12mpPhZlzVd4erxm5DbQNCbWgOAqEODC4xIj+L0RRDbQy1MdTG
UBtDbQy1MdT+ylDbcRzBwoWXy1fZYpG9gC4oChzESfE40ocou5Vp9mWxIlmqkQpXbpNqjb+jBGp8
T92s5jZ/X6z+hxDB5MGi2fxekOOphr25mCAKTvknIQPW7h2PRnI536LOT2CD01ykFtTvg38JHfLl
+Z08R+LDwYtU71U55nZu99Wr8st7Te9BOTz0nwCZF1G8nnxepKinUIl+O1TSXgqV2Auikr4zVDJ2
h0rmblHJRFRCVEJUQlRCVEJUQlRCVEJUQlRCVEJUQlSqo5KFqISohKiEqISohKiEqISohKiEqISo
hKiEqFRHJRtRCVEJUQlRCVEJUQlRCVEJUQlRCVEJUQlRqY5KDqISohKiEqISohKiEqISohKiEqIS
ohKiEqJSHZWoiqyErISshKyErISshKyErISshKyErISshKz0iJXyjXAGP+Gfm0ZWQlZCVkJWQlZC
VtopK6m26YWi+KPQsNJ2Ouv+4PTyaPHBEc94EeU4alMcUm3ds/S1BRaBwHyHzGW8w8zGMOT7tucU
LeiD0UyUNVnsv1MYL3f3fEP8W56UHuLLyNN8wyOQYn818jyvEnOweebVz8YXqLK2Db48T9cXIOV5
BhFFEEWeRBFtZfeo3mAoCTfbnybRHQy5Z6AIC4sdLkfCz9btGfU1DantbgchtuMdhOjqNlw+DEA+
C6J4v/vvIiGHe3D9tfbgKnong4DMi+/3u/K3q+KXqlnTZkagcfKTmIgk8kvbV+WmpbnrqHgkp779
1vaFeJ5Fet2LVcuLDwrzqvPP2I2L6s/ZWtfRpeORu6r9mZ9fRB/PdEEeC4JiB2P385+L3X+rGvN9
DIQnx2WHQKjKR0NY+fiNwPQNpm++mL6BUfNrlJ2IG+4/rNmFmwpTQMCF6RtM32D65oXSN6S1nDv7
tx2L7dXCjW3mqKr/fRI6pLXQL9tD36tFS0+3R+BR9jUZnlUFlIIEs2mXBAYLvtwlgzgZCrkqpnLt
2dQ3QTyDpTIXptNVYZoGY8VqKsznZrDFWPkAjrsne7jU+LQ+y6q1GzP3almlbeRRAIRHIcE0K9MP
gzrpV4dWIEIOK5IbAPFlYsMFcqQVVT8VaQpB0r9nYrb55EVflWcPolEmEhHkDzXALIln5Vh6lrVW
dWHZcFF5S7ds9moxH8BWsQjPY5GXFvFqpceZ45BWtUjZ6wbMFqdprzseDb+qBnL8rRHDQMxqam0L
Mbav+Yt4ulOG0nMaepQEKty4TlorJ+7702nH0vZqqa1tSveYsXXpPZilHvc/VdJFdJ0SE6Zi8+3i
XizB2zxX9t+f4NX/0Qle49sleM2XSvBaL5jgtXeW4HV2lkvR1B3nUkzMU2CeAvMUmKfAPAXmKTBP
gXkKzFNgngLzFJinwDwF5ikwT4F5ir9InsJ69PzUWAQR3+cy2xDFu85WrD5ZdCqLWp+tsMHlW7oF
nQXXn08WQUzOzGueo3rKlGYJMohuhmLMp7dwfrFOjyDwvRP5YDJrGJ4bLJ8aWldV3XZC8MZEvS9/
NUM4lD+O5NjUWfMc1VMSRWiQMLopeuaUR7KuOrXyUHs3A9Hc3cNH1q4fPrL/Cx4+cv76GjX5B0EG
Vyf4JTfMPuKX3DD7iNlH/JIbfskNv+SGX3LDL7nhl9zwS27f8EtuGkUUQRRBFEEUQRRBFEEUQRRB
FEEUQRRBFPn2KKIhiiCKIIogiiCKIIogiiCKIIogiiCKIIp8exRhiCKIIogiiCKIIogiiCKIIogi
iCKIIogi3x5FdEQRRBFEEUQRRBFEEUQRRBFEEUQRRBFEkW+PIgaiCKIIogiiCKIIogiiCKIIogii
CKIIosi3RxETUQRRBFEEUQRRBFEEUQRRBFEEUQRRBFHk26OI/Ovcx5NA3Ivc/XngjslQJHciQQxB
DHlqG7Flw63Z1sLgtu3hNmKIIYgh33MbsSfnKP9nbSP2ZHvYzktvI/akBMv4PtuIPSXM8vn33Ebs
i/JMyxTUL5ebXhKnaRHjVDaVqnx6xdNP63eUYkwHLbXr5WDS1mxx9ZQiz1Ar+zodHx0WsdXK26CM
uy5nk5M4nhZ7S5kGaS3OyXdz0uXsfrSt1VMC7NDXtxVQiYeXobCtPxJisr1m9PDC+0pp/zxyZf9o
ctW/HbkaL0Wu5guSq7UzcrV3R67ObslVJX7C01s453OU3ZLfbLO8fUaGGQw50jL1thdlex2FkITf
d8iiOVXP44EnRAgHvMUBWayh2r6vq+BjE3/TFcHKFZbn6QYNbVlIEFUvmb/gQDo/4FtW/ln+vyx9
Wi+da15+xdoDUAhJ7PoRR1iS1BNnRVfg8IDlhVB1gyxKHx3QdFPWhGprLqHyAKscoMzRdWb6tjyg
ywNQcFgvxFhzQJOFRNOqLRjiBg8hDCBJOKqVTlVNldMl0db1CdhSTuKbCHwz6V1cd/KxRFWlnyRx
QnpxIIqPlpeayhU4dnI2G3uw/BXn64qiHEYTnjyQ4zGEAqkcN7WXStplXaov8sPRbDy9FJNAJFeJ
gJH3448/7pED7UjvGUzvtY3uIWszjQ3ado8a7cO+3WP9gUYNtfuOvH0fj2Zjkb59f35yfdp/+/rt
qrW5CvUePJmh+rJV26T2IfQ3+QEmUrnOX4k0G95G43J2tVRQM1B7zmDAeiDEPGyzrm617a7Ra/es
Xvfo8NDQKbXXqdlkdVWXTIDXdZnaWl2z6TROsqo0NlDVLu0dtU2qq212CD8O1b7VNv6ftytZbiPX
snt9hZeOqACNeVhidLnD1VbYr6prSyaTLvaTKDcl1av6+z5IDsqJMuO1ozemnACBc4E7nHuBlIxP
WnjBWS5XQOsPPEBnQMJG6BhthanoLvvgt5qKn/AlfCzYQv4EoJFlGQvnxKqMNeQq46eUCRcqUO1j
YE7MAR2OvNjsl/dt/Wtd735r4RsQbN75UZ8efsbX9U89j/CLpqlmPv0ro3O4WebGGC5JdBQLXIok
XipHnHKS62SEsnwO92HEebyHtj5O5Yyd4LQbNoPz0gIb6UsuNhKbiyHCMkNcVJIwr4OVRkue7AWg
l1f22NiH2qrOHQ2htm6zHqnE4A+3zi5sMj7zjDVNiQilGAnSSFIS5V67UER+ZWEP4762vIcefeQb
tl5NkOPhZrTIy+f19mHh688/J/+z/3h79/z1w+7NW274gtmFwAinHyFIkjQWahlUIsJXBWohSHVY
3sqgjGNOBQjypQve7z5uV3s4ynf5r6d2d0R8nGnxz/avp3fI5NDy9PjuMOtL8xnIYvW8W9+1Lz1/
WTafvkz79WTnbt3FkIHs3cOpgmHOb20DPvfrhzdvGcWW4VvdZ906CByyFqYoCtuVEFgbCGyxkdEk
zY0W0nhzYed6Y1/cu16fvgRLZqYS4KEa6d3nf8TPbfVm291X6N2Cdd/pPoHdailtCp5YIwsRkWkS
FE9EOpcFfKhSUU8363a//RO8qJwQP77rz9KTpP94AF40agpetAfwcLq3qXz+cLvwJ99uLJRroYA4
pwSPbgtJHKxM6BiJ40UQKZTOIVoZqZoi7kGtBvweMfuPbfM4v+if28eH532DvZog6Qux3phJqKoP
x8Hgy9/3354e7g8L0e6hRIv6JVbDFXMsC6eI5hbCRFVISJ6TgBjAYEU0KHbN8h+n6MszbT0B6HUa
tfSla9V6PZGu1Y6OpPvP9qkOdbbfvniBRa+9kES5DMdmECxCDIFkk6yX1Jpgy6t7NR68B33cNMC+
EmKKfQ2CN+fZGtA6qEJ8uP/2sKsO5M1b1YmAf6s/C0ZRIQLRYDbwzkKAUsDGuYjBUQnaLOhUiJfR
3vk6SzxM0pweT7zVS6eBJK2dBGy+ocvVZiOmkjzvtk9DQdiC8boZ+IAoPjLpUwQdsgbWnmmB7YAd
uWQjNUaJyPmrolTb8cdFuyDIuUtfjA3XU2XaCG1HG9L57Pe/+bMKvHlrF3Kh8MXuEzI4zmWWhhNG
GYfJgHwGCQuSCJZFpErx1DUmc5qqp1KnRz3kgiISj5HjoR4zkX+1q+awEJvt3cDIqjaxTpuqSTij
YjQecSJZSwQFiXdeI3YYU5yzKgYhroHfMZFuPr9b3v39uO3b/rSxL9Kx3D0UiUmxHG/GL+nzct0+
7H5HGkvff0wAcXBfgi+46tRKLKpeQQyuJBRJ8qpXRXACum2JhY3okBTlOr8e8menuhTYZzvfHCSp
+6Jb0afp54ftynFICEe+fvNWKGDv4rehNgvQcKJo1KDi2Bxnkd1Inp0JOUshawx8ftzXePCufr03
mV2Z5WY8GR6u6CmWPaw36/YUyHhdL0RY6gOylCK7GMbBUnX2xEdfT4pFUao/43CM/twNd81k7oYv
DzQGnas1/vZLvNti/c6x1HWayClyIZ0KxDY19gRDPEI+Ec7G4pAwIb6+6pw/fWt37z/Oh9BD9+0h
hE5BDGVY0RkZGj4KNF0qHZffnp4r4Xedh3adhzYlaJUSwgxcNKhzlFhOrClESDk5xxJ7PczE5X41
CC49SXrd+gjmO/d7DGVsxIyMm9Vpn46lrN0hqJ12SjIYGu1YtWZURYZQqg2vbo9CW2SEzmbGNZKy
zGLsqcxhvHcXRh5C28yokDJ85A0e2+Z5v31C7mIOwdFQAf5LF7ZWBAIXtpRCvBe1IhAEsbQgRiZv
E/fJM+Vf3YEvx9Hnl/XUejOEKOZwi5mQsm26c8B67rAFrcPCWnxPVuQqFKQkNJAoOPxxAOjgQYVj
VhzZCpaYsleRz4w/L8RMx5E8ckYeuzy5keNGLh/vzr5Em7r2TAkfVSBUSWgGWDCxNmLtqYcReENl
lzhe1IzzgEM0djWDxumTwsLwjygYyMVC1yhggyjFeZghApqgloJYBEtAAjMYe0xGuB/jUE6TDxE7
M4O4GUe17u/ad8UNptHZKNOFMO4YzypyQq2qISzXyoxgYHlBZ+tkoIVeE5dPw89LcWodAm/mlrrV
c9zot9s+N2JHbsSO3ChwZpgsCfhrIUEnS5yDPuRopDa6OCHK1dwIU11W5No6FKKdWX1NxzTpQzMw
Q9Mxo/pRMzsrUsmVaCuJMGSEJk4jW+A6RZUoaEu5Khnqz3HBTTcXbFAv7YwUlW0PQtEvy93X/cOf
bT/X0YJrymUiKtq6AbUmJsGBakyHDwnR0HiVAh3HvqBAx9YBarOZ8YR2pU+e489fto/NyVwVq7bK
mXQIj6BoKcJhZ5gpEk+k0iJCSSwP1L/usH3TtHf1nKv9btj8s20wwHy3IbqboQAzGmVbfvJAzU8/
LVfbsxfi1QCs9Zx7pDXWVCpHKVLpEiqxooVbaoMNbkis+qMMp29nFtXR9WlR19vHb8un5o9zrJZ8
oWinyB4BGdERBMRKDzN0WFzFBDEgKYx7UOM0H6uHY94MZ25n4JhmlAf+3G7v18s7wOkUk3f8yCam
tYmFJFkz2EzB9JSFW2BKORaUdypfo5rHwed38tg4BN3MhDTXbM5b+HB//7CL+7+/PT2c1lFTqpFX
HFYyG+uMhD0hrBiwHjCMIGoll6YipA0sOzW7ktORh8DWM5RzqeTIW922+83D/n65a9pTItU3eYp1
04FFkiJHwIMpEesQM5imkgUqrYvmmnWdmWZ+jWc63gwlUDNi9YP2r5OoLUPUyrhEvE4QwjMH+kCh
HNwVnz2UN5sfFbV/ndmK5VzYXjo3YsaPy9169fDXCb5QtjJj1R35KORpApTNwNwFq17MhAg6VMCY
ndLI5V7jP4ORR9CWM9BW7OQCPm537XLv7762kPJlYbk9aG6MwcP1OOfAK7UiNkdHqE6BQW1MFOb/
ycHOwByK2aynYjYNKMNhBx5W/928VGK1rKTTKFe9RyIhVtKZJEindgjdRZkkjWHGxFEG2xvlZjiT
nZsejnbVTf/HwbGQ5eOOnbff2Zp6VCM0iYcsUiaa1nMeD7rjHdhP8jQXl4RkJg+RTAcc4ZnxtM26
Pe366vF+Qc9AagHBCw/uqCPhdZuFibUkJbD1rDiuM/M0hCGE3hjDudebubnHJzIvutFV+OoXeo/q
ky4vCE4jFBGTJUI8CzBxgTQheJMLK0znIv9PGvjSPpShnfGtbXMu7W+b56YesJ01CjQbkbOeiXpv
PBIuIrvSnkfItBqMComYDmDghpc0XMfRWDfDKfUUx4aNT3h+/vDCR9mC12qp4jXjds7XaqIiSiCb
EhoB06uCeF4cEzFxLr+T016dGfZD7IfXu7603wzFYjOyqmbEW+Pdw/M6PTTnKCb4UVm85ZxxR4nn
vqqwhgoHrkmMClvCbJLpKvZ6nmEe/rm5j35NZ3LNNWNm0w5CwJnCMiplNf+6SxyuVCSnSRYC3Abe
gFgB28vKCCtC8MKY17z/DPPE1HYGTw1Jw9WE5v36tL07lNkrJ2AHlyTANGOIirBUkMhYzoj1PhMF
p0+TLIrJcNVinia4sJin5j74lqmp+2q54ifzKw+7p9vl/rHdn5dTyIMS6FikkJ4Th5SdCLhxJAVI
hBmvpxwZHlWlH67x/h9frjiFG6MeiMyNmRHZ2NF+fdtvd728fHFb/1+16UCVdUcmEM9KNgXU3YMN
QYuILfXeDacZbjMJXfyPKCXeDrEMSF5tGsnn5uRbjTzZl7apB0j/dbhoek4BRMeUao0j6si4LpTo
UGoewB1CZTDEBJ+QI5ic5VXlgeFEF0t2vT4jcZoZcaw5aWjz2KuXS3NOBrzmHpHegpp6JHcMuRXk
AK+iyDJEyNTHcXL3OFs1b4WaOpxWyjPl+Ov+ji/4S5ltwbr5nVS8IBYkWDGpvxYB7AermbNCipK0
51EN5++PMwBg2hkjteJc62uevz2+AJDUdvuXrU/MFkeQX1Zf5xgJVlKi4A+1jVxNjg364wwAWDfN
zFrHxypVXUxXszqnPUpDItlF6+iLVci1A8+2HvoE4lJ2iNZBagwvcirfPYjvBr/s3rrmmyHGGeVx
YrVZi0mxrHypR5f79vFwLq1tp0ldvawjSNHUQ2hJbAoF+5lSjX4S2UMxzHkvCxdXV8sGc71SNxv0
G0omZiVrT4nQ/zwv98vdE8j8+SBHV8vuSLAvcBGSEW409gLOiziuPElWMM2sFlrO14DHgw4Qrew0
ncTD8aHth09fnvebZVNPZcxC1mMZ0x2s+cxYLEjFZJK1GlMECTnjv9HWU0jjhHu9tn4e+UIZ79Q8
RN3OqHajbGfc0/OMzcPzbt2FrHo7pjvZUPCSNRZICSJaVKWjgO8zuHNBjh+zzUpJnYQrVx1qlPMU
rx9vvPS7GWKfcf9N207oyN3D/svfu6Z6/sPxWPdZqSxTNHJ4erClTISijrh63mgCyKxyhUqXf3hg
P+O5ZN7H5oGs6zkjWIv1uBrQNtvd9nyiybqTHMuST/BHOmhRb6Vagh/glBisw4DNh66kebkO0B9z
BGrGW6/t+A7G2WF9+FTLWAeHKY2uOwB1CYhRhXhtkaUiKSTeI5lQYNaBeSN4ktc5yw+fvuMuP3wa
gl/yGfCr8TWeh2/t7uvdqS7UkdljgSgFV8BALCmCwU0KlYmjHhrkeBTI2HL09t8uEB3ahoBXbA4w
m727c7jx0t03+XXXHeoMLrxkBbzSceTABYrPoPMhG06kdzFnbZOy31H808gXXPqpeSBBS2eWvGXj
e2EwqnqzYQnnO8fWuPccKToWugj4dFY0sfUypY3RRF4LLeXa8HSe5mJgOvcYCjKTCLWtHR+pvVDq
D5+6kzW+gAjdLUlFT+JQF6liNna1W9CFKOCDEvyqTEIVw6PN5TvB4OKxWtc0RD6TUiL3H6dwn5f/
ihhvvzxeNelCgOw4AjS+BlZXjxRUIfUOLjaBQfm5yyQYmpiWBiFAzt2Y2rcnP/luPMf4Osu5/WaI
dVp73PCXsuj7j7f7h69YjPvlantXT87HhV3llc4S9Eb5rgKZDEw20lqaSgbcJiLL+1GF3VksN0Po
6zl5zuwmbZdfdw+PT9vm+P7k4/DSyuG6Ks+IvVJooiICsZDIsR0CGFHBcwZrpqaMKm2vjzuAKPUM
RLlqp2Z71w6uqCmouzhc8ao/1MvcyPSVgtnCUkM9ylTEsyBIttIizUpUa3v9Qeyr57B+KMNqMyND
YzbtMbG4WzffnuHqezSSH0+PY2SRmgQSyTJyX2S6xJrkwRdYMN4GZsr3z+/jNQozRTEUYqYivKkV
jCGDq6+artun7m70Y3N4DeBQ1XLI2A4Zk/JMGp+J7m4GJYGwyyFcEsUjdULKy67KeOuvM0mnqS6/
HjDpNhBLySkx3diac63GNOJMsg7lhMM7DowhDzyE5vpDPdhzSqh6WGOsAqsQgYNVaGQwljttkaWK
74TmwVzfJXRnLBcYyLn9ZihhMyN2O46GafvYfG6xjevuovrxfhe+Ce2sWym1UkEGSxQXqbJxDU/s
KYFFIfPmygYRXpV1MMGF/et3GQrRzqikM2Pf0NT65j8RprpC5yEWWrHQh7To9GNVTA/fHHgkHhQK
tgaXFhxCYtEsiVxKsPx1aU4TvFJnHcXE+mt1pjIsm/HhQneHrc8y37wVC3HI/nl3+BNUxvKDisB6
OCKLBa2NmZNklPaRpqDd62o3mWJyh25IYjfLmfNaPDzfBfi8BPHdNe3LbYAOqNA8245r61iB0kSc
BAlPLFotMzJjb/59oIMC5RDBAPzKzKz7yo4J7cfl7mv/lPlwza77rCycZcVNliSqekdT8QJRYPTZ
RkW5AEEX8YencH1IF9x6r8dA6EbMBKL1cnz6svyzn3/zTmRr3YJ3BWlOmeD1uoL2hR7KGsFA0ZTW
4I71XMa8HpH8b9/Lvfs9BgK06+nxER6e73/E9/GXL3MvqBTFsBd1p+B9icimvngWHOFF1ReErMC4
P/IFlQGQkQjtjAitO4nwz7/u1mcSYGx3f6U6J0pLBEVUpLDKsoTJcFPMYe1dKo6zALo+m0m/DDjE
0c5w2Q3TF9OIw9r49T0S8sen/VE7jhXIQ0WjGKOciSQgjte79PCf3atAUAuZrMva5+tenJnOdKFI
M9NzIOWGz5j5hp+v+L4vv3/5Y7lv1xOmHgOXQYFpRXAshDYaYNvwWmDwNvkURQnpBzH1IYYefkfZ
eoIfD2t0EMO3mSoK5DCb7dfj79dZZH9rKWe/QyaksYdtkt0+aS1d4s4Tzev7uI66eq3SkZr0ieQS
ddft02mGeRlPrQN5OKVTeTgd32u+ewALfTy88Nu/3JO8Twb+B8TdgW9YZUkoxZCUWfIFckl61W3E
bvzveto+igsXOXo9hnIyMyPnSrd8mrb8x21+P7i0+L/EXVlzGzmSftd/gRb38YjT61g71jtyz+4r
SZG2omXJq6Njun/9ZqLIYqEKpDg9it5+saSqBjILQN75QXOTUnLEW4yPgNFIAhcgZcGkct4Lx5y/
2E/Bwc94Kvi4JXzdJXwUT68vd2Ops0BnXBrmk1bgfVsMY0YJDooPCX/VyvMQcy1vnXh/xyFmM6+W
Mwuzmllz69Xm19efU0MIzuu+4FZXWW81fDOK4RmRwYyjEozSYiihTniRtAR3Sl7y/cJspunHG55d
taSuO/S7ebHth+3Ddjihq/sbcEnAljnoWE7dkNRypdiUGDh9qgTkAGsDAxoXTAnhgsj5osR/Z64+
O50XW96c7fG26mSm0uv2JW3Xr98+PX77Vr2G4852YGArwyjJNfqhYcOEAiII/q5yZEFqzy7Nwc/n
OR2Anb/ZcrburJqkbJqZ/9v2G2qX35vcPKqILFmyYMSGnEEaSRWx8qqATYT9ZFRHbfj/Y2q+Jfuq
ZZD3uB7rEX7d/v7j21iLUGvnjLFSWQkORYazJGJUJCTKwKBKTHJuYk79qs/pWC0RTC2JwAK3dlOV
Jhfkqqut0CKSLmeNKtkVJcD6TuBSSAuHJpcMlpMLXJ0P3583Q+O/dY1QIFF1DoPBqt+2N+fndrv5
Dh4ExhVvtj8wo7f5DM9gC07iVByOfA0gDD/UGGGQuSjs1HMZK1XAQcoSjkpMnFoVpYnnvYrulKdc
hc6rDbdWdBSCtfKSOo59iIRWNAKpWD01KSOUrJGEWuwosB4xFYomUoMaEVmCqaje/dSM5Jwp75gF
SZBL1WN9LAj4sdp8H0ukrcaACOM6eg7SALhk2G5TiLWwJ4NLPkcRtQi6e0omYzU0uGXlEPxRzw2m
rzFOBW2MXvIMTpmQCAgipQTdgeZ4hM+bNU1OXqQCYdj+B4MHLZla9Mic125/fXp9fsm/re5f6/L5
b9uHl1H7qYqpo5nnUZBoBex9jxAVoBmIETqFHLmi/qIqrd5EJzjpvNmyZjomKwagl4VnGGpEF6KG
nbmutXBgA5lMkyUqK4+ZukCCgO3ONWXRBGfeLF7aD3xGwcHThuT1rkfybr4aCKr08MvH4ZSKmhwa
WoclM05hHJ9po7B624IPJxg22+uMJmh2F2W59hOcjIgtXz19RCcvTHllalkZ7Jh1t508cA0cDfKo
GoqUc1mU10QLDUtjJCyN1JEwkSkYrw7U93lJ9F+vq6eXP07TPFvFOv/pZayPG946dTXwRyFniffb
h+fn0YFVRmPIAJfR5ah8caCyacJIW8I8WdAkCYNhaKtVtOeS75NxW7KE6pClhpjlh08DttX2qdw/
rl4mHnUOTChnDaHBgb52cLYdA7cz+mCKLjkExv+0R320fmYEHBJ8sz+3DGnaYQhRW9b7sNLHh5dt
rWp5Ho0iNxiBzGtwSrMG9yJHkPhKgjNdHMnaC01NDt7Qd+spOLOD2ubuBcEtv0b3+N0tzgz26/jX
l+9t65IDM0tmZJlSLOoIYHhliX3GSooQAphj5TIz/jD+qUNxeN5Sb3urZefYTjfV/sLMwbeHijo7
yDmOWajB3KqHRCkmOAdVGWv9njCWYNqSFKG5syqLLC7ytbrTnYha9V6dsdgRam5lZwv0y/ruf19r
+zerJpZgFeupKA0OlSExokcesGtWe0oMK9QwjkBhF3F0GL3PxOFpS/fKLeleKzej+yg3x1YJoeEH
V7ODOIT3JEWBWGYGgz2wzSiXFGRbdEM95Z8XysfnVy2Vqw7pt2JM0sL/sGma4rgQhypYZQz47PCN
ZXKgSXySBGQaJ5pZcI00Z+mEpJ2P2pJ0K3skyY7XfWyX0Li59VBZDEan9YYEJbCkAwudUOiyyAzN
POqk/tVE5PSNlvRtR3NVo6kh/fv2/mfdvIOHUOOuHkxUViSJ4AMh5FoktrBCMmzphDECSt8FN+Lf
YepTTZP3P1tmOuYU/HG1BF0aZKWqAkYNBUMhJCNhU9gMQgWsP3DrsgQZ46gAR46BpX5RO+J+8D7F
+4cN0RvakfGb7Wps8xx2Hb1213a0HfihgSsxLkrEVBZHJMRMgWLFAtFRMJM9GOdhVla9HK8hZ2eW
TjP8cbPYyyjyv6wetkMHB6+uscONUUC/RusLSS5WQ5oSX4IkijGBFfPWefUeG2NKwjm9NLwxY/K2
w6TdVvE3aW+BU/Ny/3xsmzx8dWze81jGxzFoKQTH+JgXJBlnJHx/EIbsbN/MdOCWMrvrUObsDMfi
4fHlbjeJcyGaXg1JMyZxAUErYlNtAvEMvjEmelIRwipVuDsLdDIZt6XLLRUGF4ZWqduKOP8LuLi8
WpPVFBl+GnxuqUBZE7DaQWJY7AnDyhLqpK9Kw8Z8aVQRJjkt6eDhVUOn0x3i13z2UX9UyOxjY91B
aSSQzo7bAHoaWxc4ti4ki71s2VNnebCOnvuo03EbuvRueda4WZTqfEr+SxOIktccIViY25cewfFy
2ik08wrojwyLDrYFfFcHf+Yucn3ec8UJThir8KQhucLGLEgWtlfmdfO3LwcwuLo3baEgqUBUYceZ
kKB2g8HAZBYUVLQ2SaaL0yUw9plsCTydUe16VO/6kcCno8HXApHRGtWs/2IhR+BJYes09RQRNxyo
bR48plaUzCkGxth7yLmFFXqhsdp+AdlbNzuiXKxej/YSsyjGPQevyLpAYFmwghY8bycdJVxJo02w
XhXWapbjGO3UdhmY5Ov1PN/y211t/ijgCh0CHUO8VRwSvSJYjgU/sJ/xeydBgvSRROVidixaLi9K
ShxmOPHh908bFta7zv7ZSNspA9/c709odV2G6iuwlBWVBfsq0b83EZsEwd6jrqhChSvOsD9dGzg8
u2op65Grxybsmmtsi31ikdEViZ4+E4iiS4n1Dg6nBh8ZPEUv34AfurzY5zh7S7TedYhe9Ontz+jz
7w8v37dNZQ2eUNgrQympGBJ0qURTksVijAD6kBkwUiuYCOfK0BhsCe7dY9jDSbxZUrg8ruNL7acw
296nmANwDvIDllDJ2lyG6+jAqWcaAR41YqKWhH3XcFzARnSeY91WsX9aKA3PWlJtj9QGZ2a8aA72
WjUDglOClkQcShdYE/DBEAckgNegnKLMMLqAmblmnS2ztct9LvR20wkpHkqCahaaDlUWx6oj6WGX
eJAlXhqGzWyCWAMalCuXLahQaZX7F6uOpm9ctfQubVFh2RyJGE3G17saFkGZuK9hdZlmF0E0g3JV
WNLNwAk3WMnDuU6Ssgt1au2G/nimU/rjVUue7tHsZhv0Hz831/tT83n1APLhR00jHNMf3inPVASj
KnCsy8OCkVIsYcmkLBKInTcijYvRT/WIzV6bcbPqcCPFwRv4x/P9y2QTi6E7hjnQ/44pxK9xGP9w
xBmlwQfIAeQ9K7nM6imm47QELGub8Y+j0f/hY5mJa6O84gyEdIisdl/C1sVi+USDdiYEkXV5J3E9
Tj4j2fVInkvrXD7WfMCYO6pd4uCWGkRXk7hnsbTJxQJmoaTwKS2Fr3ERavZh7BNVTfunM6o3Hard
+tg5/HQPOvuQKRTo71Xo3+xMTgxlqUXo3wLaMVtLUoKzB8fMhZjnvcPHkVoSXI+EjevEiv5+d7t9
xONSjX05QOAymwI1GVYeLCu8QwJRJxDZUmjw7Wxijpk3RVUd+fRpr49bqje9I3I7dp2v/8Aw7RHY
paKkpWIFNrCqSMGAdFgAgCsOa6wV9l8HNTsgzSjt/LdLT0k4pc9E2K7/82YSbIOFRCVZ/0W5mZgB
ueNIqJi7Ck6w5doRrcGxg+2pLM/vV/t/pOSECXfTi82Jde+jr3dz9TYO+bzPbW5/DAWfYgAZrhFG
2DSeGlIsxs7h+IHgwPAFV0VqmsHBvbyep47fYyRMnreM7DoqbudUJzPbLSIBiVt7VGEfOfC2Qbth
zl4yBOA2mJcS3sgEBo5/uzb4rZLm9p2rlmLdY8Mc9MQw8XU4yuoa5pe1QDVkIhUW/CsFjpQXoDek
ACeK6cTkzN5pB5rRsDwIki7Qp8P96/bl8XFICInqRtV/d0gQAxVBU4DNTxHJAjN9wSiw9cFR44yB
RaHoG82E4/inWgrHF65aQpdFXJIhctyiiefr9h9gKoAnPVj0ww+o+bLiHBFaLWZORNBgOArEHbDB
wGelkuW30/Q4+Onlx6dXLYWqQzY4LC3ZPV/Bf71BcVgzJ0ZV2WOtLZkGRkDMYCISf6I+EUW1xiuA
qHgDOvpdq9HgQcvrEgDASS4XwMAZISFYrefEf00NoRfhpFKERbyExSEwN5ew253hUQdWgjLvJ1R9
PsFQvmpJ72w5ZUZf+Md2s5oA0GmtKy8gE63PKhPjFTgp0mvsfcsExI/iGUQma3CB5wNdtbPtOiSs
5Hhdx8O3uXlnEmUZzLvCBTa848UiAlSnFoWXwB2zPryTeTdO3pK86ux4hajiQ6L9CYa4/+3aHYsZ
cP11EDaDswl2CIbBhIf1B49EBJXhL0llPoOYaYdpKdj21m3HZiUVL0+rY+OS4QdIDytpASeTkYDi
VuCNE46CxEOjPGnsz2Bn4Qwmw7ZU7Zb1mBhwP1AVPvmbGZahdGDq4GfwzmYw2LDILCcwd10EoasU
L5r9RViGR+quWvpZjym1QCoZKXnEiwyUvmZmQLWBHzDxYw2cjahJZniVj6PglGSs/JcI5AdWMr0M
Bq2Z6JSCmbzSMrPpMbOjHVvjIGpqCcYD4r5yjh1jNXQ3/IRhXicQkxGkmnRxj0crsBM/gsA28Eyp
eKntNJ/x7WTt4c2Wx12XR3ksg/mfr7//3Pb6q4KPERx1Rii2KIG6RJRA44nROTtWtJIXGL7/VH9V
Q8qMjY6Qsfx4xPfYoqyDW6o1BvNQ71NMJiD6ctAUocZMBiO+UO9mHtlstIYSK3uU6Dlwyt3DbgyS
S+UO2UCemY4yCOIFumROYc+aZLBhhGMMjr9n+ZywOQ7bEqW3PaK2J+Esr4fjXyPn+P/tfxUDPh34
i2B5gE7JSWCWSIAPW0BE66x0ScCBKn+JHBqezTjtKMhbteuBz399fLyHZexAahmlcwLLiuiE5diw
k7DaCX8FhY1I/vwNBqfjn0Gg37/RcHDbKUyTFeRm1qZdr7uFeRvYzCpvhntFNAhQkVkgCvHFBVcc
dngp4DRnB/9F7rl/PxtqSc+p1u75e1Puldgt10+J3YhUjSmK4UrFu4dvv0wakxguHobpsQkdPCEC
5i9H/H0JP8EGLTpRarkrSs6qGE4M2ZCl9DLxpNStmPnPnz/Hm7Ewi5uhDTU6B7YrqLKEtzEIiaX9
ToILJ4pQuYDuvgiCAsc+sZXgSUvt7dLb10ytl5nV4XLJwTmGbT4o3yytSgo+oUCIHiEDApaECrqV
M0/UhPJmtf6J+t+4f3bVUrbpkKvnwAQRrwY+3JB2MzYK0kFC6Yr3EaXk4LxHgpePAv0VlwR+lTYG
xSkcXXdZELsz1wkN23mz5U4v3WzN1fqYQePzBFrymWLaLAM7WJ5ISUhK1pYjChYgmHvh3RJoS1BC
pK6zIBUYcjAKVk+b73e/bY/AiIIeIPcjk9SAb0GUxJYhgcD/AgWpYkEG5QR4Q7NUbztYS4jtfbtF
NRwmNOoN5UN7MiiBvTkJWwskenWUuQI6OMkU+4YyxfJVwYhxQoJq1bCr9Zuy8NN+itOm1uGNhglx
u4xva7m3CI5M3D382nQ4DhUCQ9zHZsqx3YIwhQWSRuBlryBSmBAgRWg2Pr5LHdTHKQ2Nkfzw61VL
/rbDk2Ud03gSPzpma2wywbvgSQ5Yp0jBbET7htAgkjOCRxD6b67HG5Gj5pWWerfrUL+hJ/vgayUI
djazsbWJUdj0Zl9OANLGgIGGV46ghx/AL0OkRZu0lD4okzK9uBylTnOmIKU+b9ixfNmIA77FahZT
GoDaXvZGSUVMm1hAU7Q20HYW1BbqKGySKHgbpneeMJoDeF+aO2feRms7a/5M37hq6V53mHGbg7j8
42jDq+GmkWgifGBCEZNGMF2IDQbOR0yuiJSZ97Pakj96drtedYIEes1HMf3h01CIP8cMSDqlSJkk
POLtbWi7O0M94brAOpUC3lB5L3SvCQUN7Wu1dOL0ZnED7afV68Pm+zSTIa+VrqkM/KHifHhfE+gO
YSZEBlvFU471loGmpEpMb2D7/FMmY0vPqWbF6TsN17e8I4Nu1XjJxol7a2mJBW0Y4gKWuSKUi+VF
k6JsTCyDCyvf9d7a+aW1R0pNh3w9dt0/r56n4Mds33sCAt+AjtXEgO2IXreHJTKw6RQ4jhQRzpSa
e6vPXfRjmG2zJMFQTCCu2/b1x6mPUWU4NeaaDrkUHkKxASyVVNFlpeDERivBWdLeUyojv+wmzck0
pzrWH3sbASheddjYjkHR7Xhr7Sg4htsyQ6AMC4uZwwp+jUUb4DyAsx3AFWTCLlyF2UgNFYwuo92G
Cz2/sgr9PkQefHq8v6ndSWNCG4yV+kGtNRxsME28YeB9InqNx1stfPCcWqdYdPziK9Caqc64os17
Vy0PnV3CFZ35Plix9nxwowaEhlpLtPfL8Ho/jscuGo1OBbgXtiCYEIjPHCO4RJm/hwnTeHOny9zG
V1pWO4LU4O24+4aQ39LNl/b+rlQy+JmMEukSdjZTQRCokkTNUtBeqijSX3V/10hcw1Ovm9i4tV0o
h4dvr6BePj/ebu9nGA4+YhMJWPGeZrCehchoPUdicwDNq7Bt6qLmr/kcp6Gspm+13Kxdj5v5/Z2b
BhbnkJBx7lCFoXRxEjYeSdghKcBPgN1IEVRGc0PBcrAhn6+6X4w/JdPyThTQ6uPlD5/8Fx//Yxbe
L3BAmM+GBAquCXY/I669BXsCXD4nczHxrwrvT+m7ankQPcbcvKlguOV0IXkZwu4NF4YEj1CBNBAr
DGZfKYLIwPaSxUowcZNLMl9wkeoZkQx0rTrE6rlIRnmQ7p4qWuTvx4gCszUTxUuRhjNC8cYDYVkg
WNVBeKAmaUejMW9fyzWOflogja+0HOgOB/Uesfa2uY+jJY9lLxU2V9mafQyMWZtyIipjPaIPkji8
TUMb+M6RMZ1jfpfeqo9n7f3xccNer8/eutVctXy4uZl1o5rCwTC1RMqINWvWIvaQIEVmcChdDOkN
oC4Y8YSNcXPTUrhaagS7onPpeXQV0Tr877tyh6HzmqqnQ5kQc1y7yBJ4vFjjhxcSWlEEQdgnFKMu
+YvLK3H80z4vPm14WHUqnuzqaB99+PLLPnD1efu0eX1aQhhLnrCkDg5B5BFvGSugCsA1ZNgOkZXi
wl101/txpkv8nT5ZLWu7pdFl1+a2l6L7/cf68VDs8H/FXVlvG0mSfuev4MsANrAl5H0Y8EPlUR6N
JdttyZ7ZJ4GX2oQlUUtS7vH8+o2o4lFZzCLZ2waWaLQlVioz8qjIOL+oHRtN8eQNLHYVysoY0AM0
gjBxLFzn4B0qQKvkssLcWlee7ZtrD3XEMdduNkhnMMtMa9wtnVAjHDW9oGROZRPjhLb/ClQBEEEK
ja5z7g0pDF4qoAx7WgbQmMlZgZHtEXrs+a0W6RwyN7UZT8RhNd2bxp2WgV53sSrrpFpHDbw0lqLW
xkJRVRWPkTmtnTrTsLIZpNewsnmeTuE+tw17Z8QDSCrzFoxgg8kqSgF6T8EiWhoVMF1LKonByJpS
T6LrehPbvSTDTzLAefCl7NZgWI/Wq/0FW+ea4eKp0sYqGFdQ5RBTCJOKOKahcm8NlRLzrI/WYdj3
2yFL5cjaZZk+jx5bNXtIXS+HSG5NKGxpsTIkyDTAkSTWvAXW7YBG1VmTVh+dsceZscXBoZovPz2M
fu6cBB0Fq9R17hlsCkKDcxKBHipdoRlIyzpo4Y0961glw/QcraRNOpmckDgR3fzYbcV43I85Aqiv
UiQ8tk2Ko45TCkxaVxSzqOva70Gg7wakWUvQInZm2jH+cJMZrpOAnDbrzG2amZvOQbSUX/3fA2bc
6DoETGpEP21sHVGCZKx9Ea1G6EdEM8JYaWDToCID5zdanZ3liaMcyfPEx+kMcjx4MpseFPtCB0ZT
x/xCbJBRG8xNQ4zhDjbEo6WbaysKUOBjIXStfQQDr8Ovs6btCOnLW9g8Tic5y03ynueMFqhdrFbz
prLAVj1Udf1dUvJIHNyd6GvjRsfCMfSZl6FyQWqQodVpd3nS/xFLRdIunU1OGphy2jl048VjA5Ba
J77yWsLhHsQYywMohOgsd5hTJEDPVUyBAKiqkp1nc3EwSh49cvE4SMliOVq7kv2n5WK9mCwe3Mv9
PZqKaO3gNxebAoeC2egIgl0SrCeEhnpbuqLS8NpYCmzOnuVbTkfpw0trt0nnkskINdPDunipBEZr
+5BURMjaji6kpo6CSG8wazDCpR+ULkpLOVaUtcCczwMSPil79ctd00nmernXow3KUawLJbTkYqwD
x4IGjiSxzLmzIDSiIkslL5ViXJUngEvOhTdqRt7jGjW/t2m3hB2a6SzRJluup2Z5+FMT1E02Qd01
10LIZs7wTCEcGzW4ETYWFWLMUEZpPCOsq+77CLfFxyn1GRQZ+HLcsSugp3e15YgbEcPW6GVOewkb
IUuUuqhHtA2FpaiBMXHiiOXmFIpC2m+HukmGukm3rOv1y8N6vl68TL4diARYvVA0mI/4bw38wG2F
xYRUUzAVdEHrJSsIw7IDFbwF8iyF8MigCevsNksneFh62iJQV69HtFY0r8oP26x8kGQueGNWJ1xZ
TYXdxG4zrBUvlUAMmoglwqP0p3272PcRFReeDlJSRxn6N6Hm+21+Xn9bzkZ7iZ3sYDhKHzH8TxfR
Y/V1JjFAILpCKBq5V4KK6mj52qTnlLRMRh58uct3gr+Y7qMSOYi9ojY7iYpLLwsVucRAFpAdEGbd
ECusj0KImKdn312HCpOhYsS3VNxeVt3EQGE5MwYFLwSm5iBwFUZgOmvUHs6ospGbXxSGsh89IZrx
Q2OjrT0Pya5+ny2fZg85AP3AFGbgmsKHiIDuRoJgIqqCCU84ix7YGTu2q+2eU8oky1Cm9kUJPlc3
L/P1LClPDlecEQx0Me1ALOeB+MIiui4NjLAKFrWUHVd12k1KQSYCw8JNua/uvXj60Spd2lQyIyrA
UOghh+vKKCy5aYEDIfasE8R55bt1vVu9DNKhaGZ804Vi8N9enr7Pn37fHI9t0jGqqbXD2QbhnZWF
YOjNFHCLmubGcarSztGoz9JZOsP0cI60UTIdQTLLKTjrAsx9Gy1r5wi8Gk2MUfMDchBMSsBq8w7h
O3jQDpVcByK/t7akvorVWYlxmyF6RJfmYUq6khnSVU7V2ikT1U38gaXP6syyujRcvSvbn+u0B5C5
AsfDKhHj3cKLLzTwAQl6TMkryuQvTGvc0tPTcPM0nXamTIKVbAfgWH6tGilkZ55p8tyZEDRgdnsw
CLQesIJiwJpsVICoICiomewv1jJJeFtKxyCl9j4zBb6Ls5ssnn/ezx9m7Sk0CIbEKxM4ZhLVd2xE
4cHSsvDeMM9Z6QxXPeBz7S5TanjmipBiZ27692i5j71hdfCN9kFZ52RhNWq4WJvBlMYVrOJ4QmxU
yS2VdpIOLlRmcCV70Obb3kmQsktbBVkwZRC5VoTCcYWIFaVQxgSjXPgzCPPHUeUTqpXMiE1K7dx8
L09/zJ9at3vj+Io6SlqSwmHpV15KAYKfL+EUov3ZwK6G/N61e0vJyCAx45cHizdZjDDc19TGsLr6
lSexxCADj055VH1LK2ghgwHWS4ysTkF8YJd9CwaPOmRmJCF1aKyvjjrkKmqILElVBOk9sCMEKuYg
bRLBgjSgjxlH/qpDrj3D6oz2nUbJrPU4c7L1uKsch/nqe7kcz3dVdtgGIR55FglVJYKFF6v0HAt9
wQ2JwiEnFVzdLrBwAnum03tv1bV2o2QWZpTRLs2oCyY3flhMvu80M4U8AuO7AwWluPIl+nmjQC8E
6MiOWhlA7qblUYC7dpcdkjIqo5l2IRrRbgHbMpvWtdh25TdaFSqCVhUWI/QMcw2D82h0qIpoNGa5
COUqcq4R5WCgflvKQdN0cveZ9baT7qWOW1aL2asqCR2G/2RdgBHN3SC6W6oULZyvUyJA3HIYPSyj
DI4GGoU+y7a1H6z//DTPBynVGdFqpCYHKTnr0bQBUyebmmuW6osa/4EQD2KiDEXUDJ0qlIEwAjsm
sJCRwfTgEH6dMLKlpM8G2TwdpNOZ5uY43V8Ekz2IdBNhC/ItsH9PsQgvA4nREaKKALc3YczpoEnP
HZBB/4ORMks8PrC2T2er7+vF86oVzGc30A62vpqqGCnloJJI59EmAS+socoWoRTGRaqd9fY8t2E9
0HbFsUGf9/Cg4SCdQ3Ziu5Trhzo8dB/Xt0ukE5WhCOaAKwrXG+GkKI0NoGdUIPJh9Lmpsgvc7rFD
SkZYG4+7cAm/BUyHaICVmoyUwMpAeAEiGUrPwAhLLKLnREkMhhmFE/Ej/5cU/d96PB2/JS4OO6EZ
Djph3cTo54fR+n6xfNyxdTwqoDNyQUAhCBreRh6UAikmskJQo5gopSfiKJJl2mlKFsvICVOld2T9
zwPoxHzv8jSNs9g7WmkdQbtHvLLaZEJBLKQlOr+A1pLxTmRsu6OEhKnJkWDMDotsNPk228eV4YGT
0ZYs1rWdYXTl6hJBvADOBe+UoqIM+Wuu1VVCwoxkztuMdlMsVrPJy3K+/vltvq3ViggTjYExcGOp
RYwTuHgjqqZY/xA2jmnqPPP6l0T+3Gwo+Ptln+dp+zydXyb2x85M9/p+P1uOZ8vFahtPUwN3aEUi
8Qx0a4YgiATBd0qsPGhZgCPtozseKLftNE/w9mlK7ihH7mhnxgOKn0GvWt4t13t5v457NZWnnBfA
WmsYXXhPnCWFZYTbyAymWvRoap0OO+RkDJ6zfRzk5PF5xxZrfqii5yB3FqFW500ZCwefoiQgQUs4
nNx3kfJ2PaQDjzOm8Nmkayj51ye/4VZb73ttZS2BM3DLC1pJrJ6lZFEKqkF2p8KBNOiJPEsS2fee
38H985T2Cc/R3mXhH2br6mZbw7px5XqmuAd2XVQMeQvF/DGPHk6rS0M1VUQdt2nXffY60qublM6M
V3bEBb2fJGv8Y1PcxDTVWmtCOQjY2mFmG+gEBUc92GHdUM8Zw5xyYU5kiv2i0hQ/DiqbwARYZlZq
FzeCEH+HF7mEZYZ3hSEOYcSCLaIwTpKCYDUT742JRmTfn113KRFqnCHC7gS12+XLDFEGbiYjWIWk
+hup3QQO+A6sbEkVKjMSOI8wupCVrrgUWPgn/D+Vf8tRnk7d5k7VtAt89nn2CMrJ1/nsj33SR/MG
W7znvC0VQ9AsR9ArgMnBTlOEu4RtASXVS3lWtsfhMH1z7LZLJzU91JNG8qCoua824SqI7AK60QWa
bjc/4bYKELhDALnXYnUTi5C1gcG2ljqyQKkN5jiO0q7/PvvA5vEgJdNkaD+oMbCrZ1ijoW3d8Enp
r2ir0jl0sSFbrSyGyWGFdu8l8TzKyP9cjcVkpBNVFpO26fzuM++aMrtUvlop26jJWzeFpluodBss
XBWgGNESLR1MVoXhXBcqUl4Ga6MQruMt6fY3SAc+VNFG9r7rH68BC/uRIVx0IYIoj2U+QHED+R2O
P6hJMhKrnGAmnCjt1e4/v7LtFoOU2ENxfTSiOx/ew38eR3CgtxlvKAKC4hGNhltWexA+MGLaUOEL
7pmutIMvdQdGqd3HIB1H5Aa/P4Cl2NjAtvdz1y6xt+NJx0kJypnUyEgoQs2zCqRVU1EtHdM60BM2
rc5QPUaJtFUyqXt+aJuDL2edSc0naKa5qOZP0+ufYdZINS0Dko8YTS8L5rDQOLG8sYfXQAmgB5Uy
nBWm1u6/51JotUgnknEyj+51t2rY4z5hH3Pk8YREykonJCKdKMw5QQxQpkDOEcFWyON7jNFpjykx
WuaIUXvEr8fFj1nbsVFLylwYiVdIoXw0jUUa3qZQGM1VDCoa2VMJo9tfh5jDC2JMRl0/5ZfLNlzk
fm+FUg5eaYMFzCpMnyCINR2KymptBQPRRJ0VFt7uv6e40mUeK3LMM7oofLnLc/Vfr28+Pbz8Pn/a
BoB0w/crw0ANAbWUsoDoB2UoyhjgzeO89AR0ASfKX5Oj3ENLZz6ZHakhXvSJ+uZ1nrpo0grhBzwz
oaoCsLLCBTQMVsDbSgbqoBclHF1bKamPy+W5KupHys4nDZNZiUywNny5sxhcj9aTby3/mahlKYoh
x3BlA0NGpczAvR1CAVcLd0xE1dSbb7HnpJfBIP57Azd2vZjO77eRdTcvj48wzTdAnx89PKyGj6Pp
bDj+OVysv82Ww+flAgMoQa5bj5a/z+p0zfW3+Wr74E09r/Vo9f3ufrG8e55P3wxZ810d43I3gf+v
Z2+GpP3larauI8Y336cDn+qe/LXu4ZfWrGAF6vGwvOr8aZadjtSS/rkxB1+vh1hdub2+n6HVx6eH
n0M86fhkcT/cvQ5vhreL9ejhrdDkwlwPl7MV3OtP67egkl2w61da/+31cPUHnPXZ9G7xsr4D2l6e
6vIuMOL0LSXqQl2/Yvxvrwf/XM7Xo/HDDDpBAnZdg1j+bvgHPFzPnt4qIvAPOIF+d4MpXg/GaTrY
W/L+FbZLBrwQ714pC8MNB5/ju8uPH4a3//0pDns+Xy8/334prwZv95++ppvHA/9uiJXc8byt1hhw
l2sMwoF6j03ntXJ77EONZXXT1bfRcjZt/mLV07buFUMPn6BZvVl9vVJCmqZfLjdE1G6JfFvoNcxX
z/haAu96gpepqSnbJUOAen49aN0xRz/i/eDyI8aUn/hQgivQmAEuPx5tKhmuwD9uhv+4vB3+3tR+
hzWbLKbdRWZSIa35pq+aOMnZ9DU21Qqntf3D7aMhvCqj6RR+XQ1haVBYah2014P3dVTVsMRvhh+f
Jn27bN4Prsurq4/++CJwOOPyetv01Wj6OH963d8aFuwaBIblz+Ht6PchE7Z3caVKm0ra3ys0bS7J
4burm6sj1DLs9ea3q/l6NnzGfavtv0ea3pb+/fDdl/JzOLK5IMxdD27W8HadOjIMFKxrYGZ39XKV
t/HI6dLY9J+zMZ7E63oD+8YHHgdN7+5CeVueJoBiU1wn9+Xy6vbyw03vWhk4A3d3l9flu3iiW8nq
pleXH97HAOe2f3wmLwQScBv/dXuCVCHxZN3dfflw6T+G4yRICSfrsWaxQ5RF+88KZbgCG6b12Byw
3o+Caf0JHnv78ba8Gp48BBfmXdP0v4bwtryskne3eWd3Tek7uBEG/wtQSwMEFAACAAgAHIgdSUST
++u0AwAAsAoAABwAHABqcy9rZGUvZXhjZXB0aW9ucy1zdGRlcnIudHh0VVQJAAO3zMRXt8zEV3V4
CwABBPUBAAAEFAAAAMWV227bOBCG7/UUvCqSoFnrfMJiAdeWUbc5wXLjiyIwKJGMtZZJg6Kc5O2X
1NF208TdLbA3gk3OfP+v4Yw4jONoNp/e3oDJcHoVjUOQFSOc52fn2uCe5eUGF4MxFHAQLeLBAidf
MzGIWclTPPgCdzBOebYVI8bxgJdUZBu5HI++xPcwL/GU5hnFxR+rM0fXz0EI5FYYyofkg4vmTxUZ
hrBRBSmjhdAMAID+bBh64EDi6WAxn4w4LFaaWW/oxEeBRQLwJsVqKQZ0Pd2vg+crzp7ilG1lvFC/
o+cUb0XG6Fm1Hz3jNBZQ4IuPB/RzzW61U5OgFNW7JyF6zQ/HUKf16DgmQg7IZc3EssjZ03ILxWpZ
8TW3i3J11yZNFKaCv2heT5DOrIM9v9/zEwuD3SZS63PWH54WtDGWmdoebPxN5yOGZImwfJdS4PrF
7q/bN7rjTLARzPMJhxt8ca4ZekMxITFdUkdNqcB8y7F8HpFk/qPMjKo1mORdqV4p/23yN06F0jDa
A5BFcPR6H+9kIWHL/SG9blb1LnVTHB3AR9VaYXgD1xjdCf5nA2mO868PUtTsRR0f19lbzkiWYxS9
LX5XhWX0cYZhwehvs2TVtfagE3hJAuRcqhFUhGuYUdltGKLOzP/u1u7ceo7v927bj4fsSJbnVYs0
Bqd0wXiOzo5CX7HSRYxvrxccbreYV6n7W52bMRYwywvVSU7vyYXoFE+/YuY1RbdVdF2CvGPFKMcb
ObLdlNSr72pKrldzXdf1MEx77uf59VWdNSsp3RvAO0yRPOR6b0jROCvklyZdRTtpoFc8CFNCfi+E
TPsUIcgLSfiUs3TdkeTFYgQdybdT69+SCoky9R7l6sEJqCZ3ATMhSRPGrxjca7QRTFcYzXBRVVqe
m2k0Co68igL3UGHM0lIdm/KnNCgTGXmZZDQrJOUtqrlHJQRQRi93GRclzIFYlXQNBPtdUs3HwkmQ
TRIT/CQyDOW/dH1TYVVl7S7N0VPj52mksqCqKOu517AryDH6VBKCuXLhtDjikRQf4+pTORnWzhJy
fM/V92apTHhjTDFUnVCGJgdQxEp53UhIMzhegCxbd3rI7D3CD5GfIUXVDdaxm1nxdWgnKQSX35uc
w4xhMcY5fpQfFzXOVF5y6pNxJBc+aGY1MB4hJIB2AH0DgeXSdS6/38TfZlejLrW6bqlsoeVTJlb9
uhryRihkNH8ZytUdDh+WiRqoZUZ3bI01Sz9QcX0D/GcFzTIOoPK83oPWqa+jH7R/AFBLAwQKAAAA
AABYiB1JAAAAAAAAAAAAAAAABgAcAG1lZGlhL1VUCQADKM3EV1/NxFd1eAsAAQT1AQAABBQAAABQ
SwMEFAACAAgAfYcdSeAi4cDaAAAAUgIAAB8AHABtZWRpYS9hdWRpby1kYXRhLXVybC1zdGRlcnIu
dHh0VVQJAAN9zMRXfczEV3V4CwABBPUBAAAEFAAAAM2RQUsDMRCFz+6vmGO9iNHW0lCEdnuooCCI
KJQeZpNpGhpnSjKr+O/Nijdv9uJx4L3vMe8t+gBXMzA3djKzkynQRzFmepHEYYKsLtNRskYOG2PM
9XgL8xV1fbi1UEgfqBQMdC8hVMWymg4WqjGRbxZ/BytmbYV3MfQZNQq/RN238nZMNFxrZJ8oW2jR
7cnDJRBjVzOhQ3cg9uWUcNLnQvmOd7KKTu0vtoVRc3Z+UgL7n+K+/0KlIPmzcrlP6X+SI0cdkE+V
XhcY2rHw+tiCE2ZywypV844p+uYLUEsDBAoAAAAAAAeIHUkAAAAAAAAAAAAAAAATABwAbWVkaWEv
bWVkaWEtc291cmNlL1VUCQADjszEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAB4gdSagS
+D2LAAAAmwAAAEgAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0YWxsZWQtaG9s
ZHMtc2xlZXAtYXNzZXJ0aW9uLXN0ZGVyci50eHRVVAkAA47MxFeOzMRXdXgLAAEE9QEAAAQUAAAA
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
HABzcHV0bmlrL0NvbmZvcm1hbmNlL1VUCQADIM3EV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAA
AAAAOYgdSQAAAAAAAAAAAAAAACMAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25z
L1VUCQAD7szEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAOYgdSQAAAAAAAAAAAAAAADsA
HABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjlfRXF1YWxpdHlfT3BlcmF0
b3JzL1VUCQAD7szEV1/NxFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAOYgdSQAAAAAAAAAAAAAA
AF0AHABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjlfRXF1YWxpdHlfT3Bl
cmF0b3JzLzExLjkuNF9UaGVfU3RyaWN0X0VxdWFsc19PcGVyYXRvci9VVAkAA+7MxFdfzcRXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAHWIHUkaBnptVlYAANv/AQB4ABwAc3B1dG5pay9Db25mb3Jt
YW5jZS8xMV9FeHByZXNzaW9ucy8xMS45X0VxdWFsaXR5X09wZXJhdG9ycy8xMS45LjRfVGhlX1N0
cmljdF9FcXVhbHNfT3BlcmF0b3IvUzExLjkuNF9BOF9UNS1jcmFzaC1sb2cudHh0VVQJAANdzcRX
7szEV3V4CwABBPUBAAAEFAAAAOyda3PbxpKGPy9+BT5s+VCOJeN+YWlVJVFUokS3FWk7lZQLNQCG
Eo5BgAFAXfbXb88MSIIgKXFsyclJ2nXKoUmg5+259tMYnLkq8oiWZVdd/nM8HU+uaRbTYlhQqv6u
wx/rs3JFqtv2pfDn/cc8nY5p+f7j5dmH8/77t++X71dOY5pVySihRXdzKcpHWpRJnrUL0JReHlN1
+Dihyz/96jm7jqV2LkiV3NEdUFdAMepVy6Wrx+o2z4QP5mflmpaTPCuTMF0yV96qvxuO/1n5UNJC
PT1uq7A1XVGOSUXfD5NxS4ih6c6u5u0avqq7XU3r2u6eb/nqruZqmnI5UNd5dk4iFX76VdW1Pfif
rXZ060T3NX8HJE7yolq5S9eVwyzPHsf5tFQ/fGhoPDLcY9vr93d7vn6y2z8yD3etk0N31z82NNvU
HM10jxRFYcrVw3vyhaqDJIuoepTnVVe1HU3T1JJGeRaXitIrSHlLY3V4W1ASz8vQoL2SckKq6Fb9
Y0qnUAdRPt4jk0lK98YkyXYrfoOi9B8iOqlA+XKb9X/tBUeHx8Fhr9cfDNTO4PTHQf/HjzuN61lD
zxvul/71RXB68fHw7BRuOj6+ZneRStUetPpPGJI4pHSkKB/P1Wt6AyZK9YKSAq6Z/dZVdncPVIUZ
DIJh/9fhSu+tjemaMdJG8GG38UWss6r5XVVd1/nls1rsPrwv7h/Uwfn/9C4/ren4inII9ZFEhLsz
mNAIen2knmajvBjzL7tK7/pw8NPpxY/qsD8YdtVyMq2y5Mv7Xi4ugnZ5r+tB/2FSQC9mLsE/9/yg
/8eUpEn1GFxOaEGqvBDf71nB8JYGg6pIokpcVM4veT+oLzn0gqG9d1uNU+gFvJmgPeuG7na3bFjo
AY1ffiZ3ZBAVyaTq5QUVVflf87bRNcs2vZHrqp+GJ7wg9QfV9BVdyoZpha458tWfB71u9+fBR5KC
ui4pezRNOztgKCsrsOuaiiFnN/YsV/OEXaiP/H4Q5dBVuxX7PO+PHf57/4FGgwpG/tt3S0J2oGRL
U0y5kj0tjqNYGNqqtIW8N2vKtxVLrlV0EwTYapomWRWUaX4fQMvfBlwKGDTAoi1rkTrWqLYIE3Dx
yJpa811dcWQtOaFJ1btxn1kZ5osbmEXTUly5uh5pxHJJXWmnQza7dLsUKnhaUVHbH89n1QyrRpX3
SJqeFGRM37LKNXRP8eRKpF5sOCNh8TSraAGDGP5ulQpl3UApff4dgYVoJmJNV7sM/02jiuuxHNtW
fDlBLrUsWxPG6B10GzITsVLWIJ8WEeVrLR9Yre72jo3kbvcCVo/4qir2ayN15z14wxV6mqJrsgJt
j4qSJkU+SlIa958WesUvS7Kba0rKPHs5+b6l6HpT/ScaLmSrq+pDx3TdMFTr61hh5zBhihl2rvvP
d8yF6GKttL3brqftKLoh6bVte97C61kDw6jN05R399rR0+xTXqRxp3XpGpfmVxxfnn8qQAgt+K3N
n+ZeHdOKJGnJR4UJ4jttBXvRZNLVHRNcM2Vdc2Bx3MI1GZ/WCnf0TbpdiAF1S063ZY1it627n9Ix
zMjz6Ud8+6xy3mUscyavtsK1mQbTZktqMyM/2qgNpsgJRO4zbawzD+lDdZWXCY+iVmqzdf8ZvSHR
Iws1B9MJC5yZfN11jXX6DdsA/Y6MfmJYjkEa+n8anp8Jy9fTLGN9ophm7aqtC31bD881HvHOy/il
bU9UtGaDUFdWqBaSp4TOliGu6YqU5TUdsUmjLfvgadm66W2QrbseyPakZOsuUIq9LPs4j6ZMCDBd
uVTD5UleXJFpSWPGjEfTJAV87HBRjm0KVcs3i3bX2Vzgy+rSY+dpXRNA2GH+hWbJ/9HiLM8nnScv
HzxmEURaGRDcOYy3d2qY52mja1+BuYEI+9+IEMTa7JJp7SiGJumSDj5JuCTlDg8BLHuzYg8Gn6FL
KtaoTiUUn46gw3K8l9auu5trW3dg4jMMSe2wOJlPa2crXRaLATkbjOwzA7rs5nQ8SQ/e8K7geZt7
t+k7IE5qpfPD2HeNxqg7Bv6PaXxMKrJe49FjRctFnc4u+lQkEOHC/BzdAnjzOQImvWlWJjcZjdU0
z27q0al2NpbBvbAhEjGklj0/hu7crOFlUaA85oV1ntHmM21Lt4r+armgSGqx86MoDl26qugsJzFT
BKbGSbWNKAt6W2f5dq7KN5iq9hL2S1KJhXCNKqgiw3atWN39Ha7kgMPakQNKRtIdNVio6n5m044G
FTK7dG887uqaziYbV65QCKZgfuKFso57TVlKA5wR2ZGCRjS5E72he59Ut+yDiEW4CN3wuIjVW7ki
TwdBnpwgzdBGRAhaFNaqiiVZTIevcRmLG1jxwMlQvC9XvGkTEaPxehVN2ksTHsWIFqhozL7ubOg+
b1ujDIibdxXNXDRX06xoOhZJmJpcL45ZNuy5XsylrhNkaN7aruuxWjN1WSmuSzZLiaFdrus2W9Rb
j0S3NL6mJW+xDfXmaBtGmA3TqSk11/suoRZ41hZA7mcaut0sr5LRo2iZknWnT6ScK18/GcwamLHC
ikWxLukwG5imrFZjZD2ptZ44j6ajUTMIGIBKGotvRSToO5uUsQXTlKMY33RtMmpE+tOwqE3OmzuJ
6zpj+i6LWmG7eev4tR3eNvXDuvqOz7b8ryaBguEr8phCiYwqeFTj+kATbTVi7bVgIjJtWT8damzp
56wNan++3RnP2OiLAQGaKUVHoR3qZtigo+tnHWlf+RPJYp4D28LFekC40OuuV/U7DtMvBU1h5Bme
PxKLArtyWdVheUxTmNIrzsYZjXgOf7kTHhYFeeRLhVlPxE/Z4XMyI3xzafHqnVzQ6j4vvqzqdEej
kU8sn3gQugeBY+/+fjH4cH3WmwuaLV9qwNbRxfeHWTwrtptn6eNhxJ6UdT8HYZpHX4Iku4OomU2E
vmL6smocT1e/WQlbLExDsTTZ0m3Pfa50UcZ6DZ95tlKxdKlybY9SGqpBq9jj1e7QCXonS9dA9w7g
O/7jfKK6y5O4/ocYmIplyFYEJSZYDn67MNylAsU6E/RSoPwkMvwgrn0P1vTe/l27S+js0YIpVzvW
yNpKjO7x9pk1xmEJKNa/+iX6ADMJVzHJE9aSJ3dXutOuyKtfTLP1lbDemxbs+W/w8Zw89JfcCQyR
3LUsKX9MGlMaqdfTLAWwP2IGWaaOPkC4NrPMi+k02lE0Km9OF5pzaV1g08JJPs1iEQCvlGhGlu84
llp3E/Yo8fFkmnEf2SiF/urIehCTeL0HE1qw540idWKaiuXKmg59Tz2fplUCNzzQog7dlwwbrEt7
sob9kKwzHMwsL9WwL1fDbkw0nQ/F6w8XZ5eXV8HpIOgdnp2dXvwYXH4YBsPL4DAYXH647vW14Kp/
fXJ5fR6cfLjoDU8vL4KApwkUW5Mr1RmFXixKnWYsTXScC69KjdUSzL+2LmtRD0dNi/Af1ssNEGdI
mqJh7KlNQ/MH16DNdxTbXNkR0vrTXFGNkan5VqQW02xIy6pTVjG0XaB3uyGBwR+UPLOxzyK2d+ri
R/bvoCpIUpX8t4PmjySFvsueaIuf1INGMtIxbEOxLTmJQDdGPJMIcga0uKsTeDwvCwPCtiVNUjs0
1Hjpjg4PRRvBqXiQZ2uK7UjWqW7ASF6+gz3QWV+CbtiK7cqV4HvUN1T2wJ9VgKXYMG7TJIwf03gP
/kpCdcP9vBv5uuXakQ9tRgr2uFafbzTQn9xgwEqof9wdk4zc0IJvNIDvy8eyouPgCyzpNF2WsFSy
YRGIIdQv9A6mf5g+GRDzjQYN22s8aNjwIua7Q9Vgdn0wvikCse8B7EEHm3ljdOXl+ZZHYKiWdHwP
3TtgbAcxSlNm9MMPe/r6Wm7aMqLYig2vMTCq26SsdXa7ZUrpJIApstMcVizHCWH4tOATwH4DEhZX
8d/29fSdqs8212jp8jBzbclNFpYdmVCpIsh5TvE2spigb/Ss5ZPuwvpkynqlORAYhWM+J9UuNGRN
swQ6ecDW2v35RexhaxKdT2HpPXizPOt9nRN12lJ29weIN2Dem+ti/fFDViXpCUlL+t29EM8/xCyu
y+47AV+smC58+YmSCTRHRGAauKFnpLihYvNE+ae0juk4svtfwCM9Cjd59Of0McOU3HVj2eEohsiw
5QUMukgE6IOZPyJ1aUnusYFasg1dX9jn+DAkZaMqWJE1XXVaOt7udHYO+NYrmIDqiEcoMRzZ3TUg
xWKp8peQwrc8XTHu6XyLuXrjkuQuHHDEMQxDoEujTwT1RB1Mivzhcb8xiU/B7L6QAeV+m+J331SB
b9mqMCcCS/f4Hp7F+jwRLiwtrsuBi0k1G9bn+sIgzONHzkQ63xcjZSlmmzDmluaxkOvwfShSpkIA
IbVtyJzHIWa3GUW1EhIiJSYfqFhsQh0TFv6UNywYnyxFKdsbMtmOwJkhFkC1g4dtAIeGVhNwWIie
RBD0RrdXOa8OQ2+v3tuYNd1wlZt009Vbi+lLgJMqib4azCfqD+20Vke0J384tch5siJFHguC9eWV
pi27XRLbnMuC/SC4GIj+FAQs8Bd4a1o2n/NfZgx56ouNIV992TFkwRj6+XSofoI2SZOy4h9oUe98
/4o4XzcdqNMJm8Rug+iORVdfF+b7gFJ2cwnPs5hvwgnuSJGwLaMidtsQEyy+HYtwQDzDkA7gXeLo
oVpvFiq+ACef5Sx1BJ97M0UwIz+ybQrLSTCxh4HtWo7PyDiMyT6L9FSYrxf7uVYuEZN845LVGKZK
xlSkB/dXf4R2IvFjELE6+NYAqMFAIhDSdVt2r3eojWybrtYf+3xNy2labVG3ouL4dfPvj0hJG8G7
2DFyBl4fdOYf/0LV1+3+K+Ut/K/Ojgj5/yb+aODQwZqOz/W++du5+uYvNiQNR5J/2Yi0fPo3aBe+
8dmTRGbmvmlZIpje5P56z3l9e5os0WoOe0A1fwNjttDy/ZxilRXsZcu+2wGWycj31lhu/KMD3fe/
A63bzev3oTo7jbeGDGnyZGU6sRr8djGoTGghwwtmz4FYlUJ0Vk2LLLgX29dP7/pOEEQwh5/+fP3b
hQlSdb2hrqf37/om6Ov3+3fHk8thIF7o8eVFadEStI3qZ0azz/vb1NL6dPs2dx7M8IzR7FJVs+2g
si+EhJ5LQtIQM/Nmf0Mh8/Z0Wm9vPB/fEN/y6vV5hcLnSKnbXusFiS0MkxHbDMQM31ej4UbbhufL
k+FmXLVeDlftlw21bQi1oTpUCHWgc9FU/YmmEwy1MdTGUBtDbQy1MdTGUPsbQ23bdak5ms9yfJUV
i+wVNIEo8CSvN4Z/SqpblmZfFEuLhRqmcOkxqeFKPwRy3SjUNqu55Z/F6n8EEQwPFh35Z0Gur9ne
5mLiJD4nXygLWA/vSJIS/lrQsz4/gw2+vEgjbj8Hfwod+PJ8wK5h+LD/Ku69Oei8jl3xuhKAjOwz
KNcbRc+AzKsoXk8+r1LUc6ikfz9UMl4LlcxXRCXrxVDJfjlUcl4WlRxEJUQlRCVEJUQlRCVEJUQl
RCVEJUQlRCVEpTYquYhKiEqISohKiEqISohKiEqISohKiEqISohKbVTyEJUQlRCVEJUQlRCVEJUQ
lRCVEJUQlRCVEJXaqOQjKiEqISohKiEqISohKiEqISohKiEqISohKrVRSdeQlZCVkJWQlZCVkJWQ
lZCVkJWQlZCVkJWQlVZYiR2EMzvZUIV+RNIBNCC5oYhJiElPYtKzRwsbYaxriEmISYhJr4RJamcx
dvZuu6650wKnbcaoZv19wEntzPWz+rB2WiS1RX14uvktJLWsQGcn1DuSEiJim/HTTQJsNaBsVSzZ
2rOpbeJ8CkslF2bpy8IMA/qKKyvMJ068RV/5BBN3j7VwrfF5fa7bqjfT2Wnh2TbydGukroQEk6qO
kk/aAWuza8V0RGBF4gfSVnTDDaynCdfPaVlCkPS/7OTAjRfP26q++iRJK1rQmAMxjJJ8Wvelr7LW
aS4sG26qcaCu9mYxn8CWWIRnschri3iz1OKm76udZpGs1W0YLb5sqzuhPvomD1j/WyPGBDHLVLmF
GDsyGseO16H0sD5YcIVlxDRuqZ2lC/mp4a6x0yK0bUoPTXvr0nswSkNSHxRcH9G1TokDQ1H+/2rc
C33RKBEYqmp7nfnhXKLM+lzipaNCn86H2F+BfJ73zfmQr3NilvX4yrsXuQ1L2mVjm9zG1+l6IoPx
dQafy1PY3y9P4bxWnsJ9xTyF92J5Cv/F8hSG9sJ5CgPzFJinwDwF5ikwT4F5CsxTYJ4C8xSYp8A8
BeYpME+BeQrMU2Ce4i+SpzC73UYNRlBvYxonZK+Mbmk8TWk8SlKa5C+dtVg+If6cFbk+a+FRL3It
FxoN7r/M5sEMZ+dW5mEbU4ZL1ZPkZkDHZHIL14v1OoUA+I7yTuW0cPx5o2EUWR43OqszCEjo6WVd
xTxKbPHDNkrpyFZHyY2wck4S5rKluzzyfpl+6bzcqfLuC58qr7Nj5Y9PfsRj5TGJhu9EYBINk2j4
TgS+E/GS70SYkWOFIyoOf4eVtttdd7D84lfxxTGpiIi+fU3ytQco0Ahda22BIhCYZRUWcbjpSL/0
8IqI7Kv/PETW/tGIjK8c4CsHug0ocjI8QxRBFEEUQRRBFEEUQRRBFEEUQRRBFEEU+Z4o4iCKIIog
iiCKIIogiiCKIIogiiCKIIoginx/FHERRRBFEEUQRRBFEEUQRRBFEEUQRRBFEEW+P4p4iCKIIogi
iCKIIogiiCKIIogiiCKIIogi3x9FfEQRRBFEEUQRRBFEEUQRRBFEEUQRRBFEke+OIoaGKIIogiiC
KIIogiiCKIIogiiCKIIogijy/VFERxRBFEEUQRRBFEEUQRRBFEEUQRRBFEEU+f4ows7lPc1i+kD5
9BfCdKwOaHFHC8QQxJDnDuZdVNzqQXGa7zhOiAfzIoYghvyZB/M+O0bJP+tg3mfrw/Nf+2DeZyW4
9p9zMO9zwuyI/JkH8z4pj5hWpEf1ctMr8rIUMU7jmNbGt0NSfll/RqtpWqCldT/rTMaaQ2OfU+Tb
WuOk1NPjIxFbLX2M67jrepqd5flEnNbq2Gpnfg0/H9Vio3vloNjnBDijyNpWQCMeXoTCnrUixDF3
JOnhdU9qNf555Gr+o8nV+n7kar8WuTqvSK7ui5Gr93Lk6r8wuZrdryBU3wJHg/u8+PIHv14M9CVI
lVEYsykEpAX3f1Tz000bGq3/AI32f4BG5z9Ao9udf9bUqCDlLfTf+6S6VX/1nPrRrjqoYDpUO461
GybVTldR1YI8dNX5UNfCkMQhpSP4IZz/wETYUUT/n7dra27jaK7v+BV8VKIacO6XVCquudqsUBEj
WUreUovdBY2YBBiA9Gfn16dncdtdDEBUooofRAizO3O6py+ne4ZyyxSoYV2fe6MZDOQxRhjOizSL
3gghtJa0xXmuzbmB2ct49RmtujeKA7DIzVqPls//5f+l79ocX6kNU1U3At8TfPqG7gZI6Y0sCaGF
RUgeYANJZoJqgnUe4HkAsM77r+QBURigeZHFS38uCL9Mz4Gi3qznT6PVCaY4h/I1Le0JzDW5Xz0u
gDfc+Idv/9BZFp3E9Xq1vvGrpt1+c3xTTn4FznHzL2/PM2Bm3Rjhk8nELZbV+q+bu2dgqZtsNrvX
YPk5zvBv0M3gywbP5+rmY3h7fvnSLpt2/eu6BcPDf3fzjzRwLxj3SFjHEKMsIe2JQC5qz2KiRGD7
Tze331dPb8/t5vb75/tvn+Lt398O5+pjYLiVJxjylx0G8KkdAf213bx+/W3xvHO0Dk3C3qTEPACR
DjHLFdJWeOSVt8E5wQnRJTTnZh3hqk5xUSxKuN5eXlbr1z40ljC2xAckCceIOfjD4aiQUDZIZhkl
MV0BrT/xAB0z7AQdr0iH7jw5+CAx+wgvwY8pmfKPANSTyH2iFGkRQYdURPgUIqJMOCytd8SwEtDh
zNP5unpuc7y8/d5CYAAWdGtHz/TxS8NnJ/iVrjg41KhK+efFawk3iVQpRTnyBoOCU+LIcmGQEYZT
GRQTmpZwb2cs492O9XEaIU6ts67m4hTnOQUrblNM2iMdk0JME4WMFxwRK53mSnIa9Bmg5zW7G+xB
JZQ09RgqoaKpRiaxFfK+fazqv8qKDcpGGkGnISAmBEGOK45SwNRK4xKLFxS7nfeSerdPDJA39ewU
OXw5n7c3H+unXcbe3Hz46aefsm8BWiUdbLjXFnFKNNJUA8LISRIe48jBt47v9deatfjErbsvTzf0
brl5aWsg9t/ubj6AyWIGb3U/s6oAh4uSqSQw+AqHYCiVRk6D4rwKkirJuLLqjKZ6c5/VVe+ZoQS6
KUigmznk8YK2wIJFNJghQhJFnCuMjGMOlEcxcB0BErnz2prxwlozPdJW9dYsVlObP/8S7C/2/uHp
7fFuefOBKjolepo1t/8IkALHPmFNwFk9KM5hUBzPqcRq7oQyxAiAdPu1Y1i394vZGhLYbfzztV3u
9LNbafp7++frrV8tYeR1c7td9Th8ADKdvS2bp/b45Keq/vz19Lm+7C0ryN6yhnf+BPH4IaQvdw9T
uw/7SoN0UwHyxRAg2OuEAgW2xqT3yNDEEGdCRuc191icypf2drC5zb79MyTz3xb1pmwfX9rN6m1d
g1mdIOkLMafNqWvNGa5HG3i/Wv3+9nJAAPY+JdnaZZdmVbJaQ4bVNECulUnCxuGAeIT4SwVTyptT
cR7Wiz+AsPak2i7Sk2f7RQ8vFV0kGOKlElLxCK/9FL5UTbta/nveo5/vAyzWrjNsRqdUZOiwFzQH
CwyzAlKIEypBTGMUQQbOEYN56YLAVMbLtlZc6pxFFR/uScjYjsD2JYQvge9kGv62XK2f9X/MHtfV
3qzolHdGZYzGDFwZJRtSNiqHjALLgg3AzinsrLYXjerzS7v092Vz2j6+AHPqaGICFBUIdQJnskWc
2TvEt5k+SnL4sm0NBUng8ebmAxOwC12wVFhHBhwDCewl8AzLkNFA3TiNRrkYOeMS4L9t1tmib/Pr
vcV0TU09Xgy+rHBnGPBGdpnvn/zTAnbj4JFmSjJpxUC2JChNYMhjzDuFLJMEMaN9MsDIwEvf1dzP
72quCGIoQ9+4D1/WdJShuy3w1QuUnMAozDS/AX9mJSYnRQgcCekE5GbPkZbUIxAhxAC1ZiDpcmCp
1rPVsixJ77E+gvLD/SeGMtasION8tt+nXdm8bF/zlPud4gTcFnfJQRIsPGEcSQWslHlsgdh5sJsI
kQBYXyTe9wxlO9/tmZmH0OYFExKKjmLLpq3f1otXIEeqU71QmEHCx1OdY6GjTKeUkLUslxxQBWmc
NKLB6kBtsERc9sKvu9nLat2PToYQWQk3G8dE+BOqxdydzB33BSQHUKyG93hGLlyCzIod8oxqSLoA
2lmekI+CQtIFFWNyEXlh/rIQhQdH8vCCPLraJ9bdRlabp0MMlCrrnghmvXAICw6WAbkUae1B99iC
E1iFecdMz1rGYcIhGj0roDFyb7Dg+DsUBJLiVOacoh0UHMaCG0qoPbAGShWcRsTbCHnfQ/VhfkxA
2S8+RGxUAXE9zpGf2mZRddUTkfCwEqpLiNQQGoWnCGuRE2LMpR8jQGKdjNpwhxO+Jpvvpy9LsR8d
Aq9Lqm5lwZDb7w92QEcgCXZZfZsMHSWK8AT1ScqVigwaGQP2EL3iUslkGEvXCLFf6rwh59GhEG1B
+7JraA2CeD1wQ9Xxqfwj80PNQooQP6TgkIYUA0IlnUNQt3oRMME4kWvQ99c4E6brMz4oK12QopqN
UtGnavm4Xv3R5h3IT2f0kgEjozwg4XXegFx0c2BU1lsCMcR5hf1VBrSb+4wB7UYHqNW8EAn1TO4j
xx+fFpt6766CZF+lhBtIj0D4AjAmFsFNXbBAyJkHI9HUYXs5YNu6bp/yCU/7btr8o61hgvJjQ3ST
oQAFi9It3Ueg+uPHarY4RCGaHUBrS6nFUDOpTKcwpsglB6nS40Q11k4704uFo1mGy7cFpRrc7JXa
LDYv1Wv92yFXczoVuDNkCwkZsiMQEM0tuKEB5QrCkAKSQqgFoh3KuXo452S4cluAo6BiGRxc/tIu
npvqCeB0hkk7fqQDkVJ5KLy4AKYXMTA9oSEsECEMccIaEa8xzd3k5Z3cDQ5B14WUZnKVtdvC1fPz
aunXf728rvZ6lBhLqFK2moxKG8XBnyCtKGA9wDAcy60iHBLj2pFoRFGTpzMPgTUFylmJcZ/toV3P
M+df1q1dVk9/bRabvstj0Jt0xKPgKSQ8cCWkDeQMqA85cZhr49U1ei0sU9Zx4cHJUAJREKuftL+d
ZG3uvBTKBGRlACEsMUAfMBgHNclGC8Yb1Y/K2t8KW1GV0nZlzIgZb6plM1v9uYfPhM7MWHQ9ZQG1
EgPKpsDdGclRTDkPdCgBYzZCQj11if8MZh5BqwrQZmQfAu4Xy7Za26fHdnYsTAmhemu53jsLoccY
A7xSCqSjNwjL4AiYjfJM/T8F2ALMoZh1cypmXQNl2O7Aavaf9bGfI3kmnUqYHD0Ccj6TzsCBdEoD
qTsJFbhSRCk/DLT9WSbDlXRpeQi0s27537aBBVWbJTlsv9G59MhOqAJ1kYWIJM6NZAt0xxpgP8Hi
mExgnKg4RHI64QhPIdLWTbvf9dnmeYoPQHIRb5kF7ig9onmbmfIqN+5g60kyVEZisXNDCL05hms3
89La8zEVPNhG15LKL/S+yt90dYEzElIRUpFDiicOXJxBmeCsiokkImPi/ycLPI4PZWgLsbWtxV5/
i/qtzh38g0UBzYbMmQ9drFUWCi7EMaE5FEEVKYFRQSEmHTBwRVMY6nE012S4pDzFMSd4pMtf7o58
lEwpzaUtZV1nCepWRgUSDKopJiFhWpEgnydDmA+U8ndq2qsrw36Kvbv86HF8MhSLFGQV9Yi3+qfV
WxNW9SGLMbozFqspJdRgZKnNJizBhB2VyHsBW0J04OEq9npYoQz/MNxH3+BCrdkQorre3zFQHygs
wZxn98+7RCGUsmAkiowBt4FogDQD34tCMc2cs0ypS9G/wDxhaV3Ak1PSUJtged9eF0+bQ1+YbEMS
A6bpnReIhASFjKYEaWsjEhD0ceBJEO6uUuZ+gTPK3A/3wbdEnIavlgq6d7+0Wr4+VOtNuz6ok/Gt
EUifOOOWIgMlO2IQxqEogEKYgKljHSGiivDDLd7++vWKXv4Y9WQoHSuIrORovxbNZr56WzYdvmxF
WyIHr+Y0YoIF9wY7wpkje0jVHdOUAowNCDKEoKu43F34mg6LnKk++48MBVGqJIgeCfKyXix7DYbp
Q/77QSAqO1YEiTlFlaAGsUDrwB2QTvmGAsUR4n9gMtkf0RN9GGIZsNU8NJLPlOSbjULy17bONzn+
bXtX9FDLsI7y5WaNl55QmTCSLuWChhrI+U4h5WyAYkfF7qjz/c0aLnS299h7ZiROXRBHq72r1Zt5
0x7qQ3WoaqykFiiLBo5toUolUCSCHEAQMZRLzEVs/bhKPc40QMDEaeRsOT9wpz+fn+iUHvuFU9Kt
b7igCZJagHAE6wsBNA60GaOAWitIS70Yrt+fZwCAi4LFypqMXS/3xbumG53KLlbqLuNLQikmKSKV
0yvbnqZFqJQlx0y7zAPwRSv917dq/frf13Xuz3bl9qMDyVRbiKOaHdqx9dvL5qhajnVnmVHbQHQy
SJKY05EhyGmOUY4iUnsqhJCjre3NMwCgzWnx3Bo6dpacBbq24qEyFRL2ineEytsEioaimUadT/kc
MiEaIFSOS5iexZDePXHtJj+fgbrhyRBjwS0Mm80bdtLPTF/96vll3W42XUyWuvORrqXZcVivLKiW
Ix1cAksNIRMUDgVeUsRYyxNlVzc0B2tdaG0OnhtKxoqStfta9b/AGqvlK9Rbh7M2mWNWV6fYBMGP
EwSJCfYCwjIyVFgUNCOSaMkkL7fpx5OOEJ0WDO1M85H/2abJ8rjV6vej4PtDNALlf1fF5GIZWIvN
xJtBjYqcEAxibEgMbEcQzC5n/9IiA+0eH5gM8YqSEOPrFHefv76t51WdT//UlOfjP9UdotpIiE9Q
8vPAc9cvMeRihL96TRjByjBz+QznMPOZ+LAfHqJuC/5ZC93F3tNzsz71kNsTNAFJLKdqziHQJZHL
HoBvI9RoKXjko45CcBmYSVcdnr1HPE6fmwyxF7Jz3bYntPdptf7617LOiXlrQd3PXDIRgT2FRAys
HMK5wAYZGS3kZSiahEmYm/jDCeQBz7kYtRseyNqUPLlhzbjr1NaL5eJwck66E0NNgg0QVKWTLF+v
1Ag+QGQl4OIKqkbXtc7P95v6c45AFVJOo2ejHu8h6t59zu3SbdTnqruUAubigEIkZKVWULRGAu4M
RauACs4RqxgN/LqIf/f5nZh/93kIvqIF8DM8sp7VS7t8fNr3H7uiadeIDM4kIIgaJUYg1kMAQgZb
sCBDPbNWRW/1/7oRuR0bAp6REmBSvMT1Bju2mdr8+duyOzycEtqlKdKlfQF4uaEIqDUYPgGbd1FR
BJWDj1HqIPQ7hr+f+Uzk3A8PJGhxQeUtUePg//KS7+NUkEFKZJpaS2PioOjEIDERqIF0vnumvVee
5oZeujbHHpY5m10PTwwFKRTcbavHR7fHiufu845MgghdDSfwXhxsPBZE++6MADiPZxCDAsRVHphI
inod0zvJ4DxR/DxmiW2hdTEneNwq+FL9zcN862p3QapLAbwjOmDxXfmZj65EQvkyKWwCAeOnJiKn
cCCSK0gBBb/NvriPk7fjNcaXsA7jkyHW0x73nB7b7z/fP6xXj6CM52q2eMo3NMYHCMIKGTlwNGG7
TndQ4LIe5xZoUEDQvCH+Rx0gFLFMhtCL8oxv9j1X63o17gEAVxaESYGEzJ6Qm5BOe8jGWlmNpRHR
XnmEC5OfO7+FoRHgpgT4wCnDonpcrjavi3r3K7Wb4W0u0kGnEcgCZxIJny8jcqBxBjIuEs5SAuEH
qzRqQV+edwCRtafuOedy3F38vmj/5taL5jF3pbHY0vj8MzMDnc9oWAK6m5Mm9mDaiQoUJbBhr5hN
9Kqz/eMaZf0exydDsAUl81l7Gimf2u/9GxYCIgzLgmw/5IvgyjOgxRpBcHT5lgIQZuIYipprFWPA
Uurr71hcvGJhhzLM5gUZajVvdwXpU1O/vEF27ZUf+1uS3hOPVYDig0Sc76papFWwQNGIA9t2RCXz
A25JFlEMhSgc9sxzc3JImvPvTzfta3fPe1Nvf4Vg27A2EsLONuVawpWNSHaX/gIDpkNBuMCShZKb
qEiu6gHlf6Mn7Jc6/6sFJ48NxBL8tBaY61yrz8bM7cBrtw227e9HEIL1jg3lD/nM3ggm8jms0gKI
HHMUiJyEyldTIzXDgb3DhgZrvcuhD1jOkL7D+GQoYV0Qux0TkLDY1F9a2MZmsXw8XN2EN8E681Zy
KYTjTiNBWcgFkITkZzECj5KWUqEdcxdlHSxwZv/6jwyFKEU3o8axoc5HF78DM+jOMLb0Q7Op3Fai
+4/ZMC2kQ0c9ssBawdcgKDsDLCRJElhMyWl6WZr9AheOUEY0JP925qkMVT0+N+waXX1if/OBTdk2
BdLuXNdBjosS2F/MvxbBnIZKwkeKghLSehycNJfN7mSJk0bbsG6YV4WrGPDl4ZrPlwpqjWXdHi/6
dECZpFF35Y30GSgOyPwPcVfWXUeOm9/1X6hwXx65Os6xE6flnjOvd7V1RpYcLX26+9cHYN2lWMW7
pEdn0g9tWVVmAVUk+AH4AErwexKLVsusmfXmrwva5B5aCRrhl6bz3pd26kN8Wjx+GxNIBgZt/RMd
H5YVN1mSqJB+rXgBVWDRZxsV5QJ8IhHf3Wsei3TCrI/uaJRedWJO2/Vimlhd/DYOefCqsrXultdc
E6dMcGQiaV/oEA4LBiaa0hrgOqZczfkdyf/tUrhjfEejwGY9zwzDLw/Urvghfr7rVbAUxeBb4JcC
60tENli0FhzhRWGxkxUw7ntWsDSCTFTYdFTYuL0K//j9YX0AAcZWahoaJ0pLBFSuSGGIE4XJBON+
8O5dKo6zAB5SN3hxHLCRY8s7C2DLD7z2D+Xvd98Xz5v1zG2IgcugAINEQB9g9GmAWQ/rGdwJm3yK
ooT0Tm5DK8NIflcd6In8+Msp+f3hCfDMy1B2OmaAJe+TgZkMENDBzmWVBVhbDEmZJV+0xsDeNSCk
jn9xzY6lOMH2Gd3R6slMR8+l3vA5AP6PL/lDw2zV3KSUHPEWgxsAP0jgAtYrbM7Oe+GY81cjXhz8
DObFy63gy67gh4n+9np/4MML9KSlYT5hQVCwGIOMEqCuDwn/qpXnIebKgR55QschJk9ezJ8szLRw
dLlYNeVb+Ob0jpWtq9UAj8dpih6lyAAIqAR4Uwwl1AkvkpYAzOU17y9MnjR+ecO1m1bUZUd+N2Vk
f9g8boYGYYuHOwC3C3TfBmvNqRsShq4UmxID90GVgBoggTTgNsWUEC6InK9yjDvP6qvTubHVzdme
botObiy9bV7TZvn27dPTt28Vfx5ntgOopgyjJNfQhdbolUpK4PcqRxak9uxaosb0Oaejp9M7W82W
na8GVmRM3/hl8+3+5fX5j4bAgSY1S5YswKEAfigRUkWk5xXYXY2Kkeqoq3H//+JvtGLftAryntYH
0so/Nn/8+HYgrFSCpTFWKisBmmZYSyJGRUKiDLbmxCTnJubUpwaPx5oIIXpCbKeOQKUWo9G4f71H
1pjd+zPVK80UoScpARswGCTTGO2IdL74aF1J2V43o/Ahv+4fcmoyNTe1yrDOxiaZPCQ4ft4/rt9+
/DymNoaCRAfupaE5gMQYqIH/E5+4JDYomoW1looJsbMdaSKEmguBvNJ2mZYmNeaqG6xQGOly1ggK
XFGYkkwA96UFM5RLBlTjAlfnsxnnIWL8ty5ARBEXPbmnAa/1IYQG++7q6eFhs+pRi1gKFET3BFxB
dAgNLNAYkLFmlLMA91XmV0UqDo8DwxEPjzvl73ZvbtS0orO32lnyuEs32sUtaC1il4pVA5Qytgky
klCLFTzWY5OEoonUsCOLLJVM6t0N0EGcMyykSeQCtVQ91Q/sjh+L1fdDSYLVGKVgXEfPwbCClgzL
2wqB5QAauuRzFFGLoLsGZzRWI4ObM/Xgl3qKPb/GON6zYvSSZ/CUhMQOH1JK2IatRkuvwO+lycmr
0AQM239hcKEVU4uemNNaia/Pby+v+bfFw1v9fP7b5vH1ACRUbZKjmedRkGgFADOPnQ1gkyVG6BRy
5Ir6q1iRvQed0KRzZ6ua6RhJjArPiZ4Y/0PvpcaCua7cU4CTJtNkicrKY8YykCBgunNNWTQBDP8l
jt1u4DNYAa6ORWZqzk53zLp1J0dcIxzDGq04lHIui/J6Z4eMBHGljoSJTAEbg93n6gqy1emlNtGs
Pv+0avXyTatGRzdYlpOZdv/jNI0TAEEBQKoJDbhEgsO8vNYkIbOORUthD76Kxvn5Iovzc3/zAIFd
Rwu2ma6Xp8eBEXdc2lwlWoqCtWyxkkWBS+ki2NCkBC3SOphqV3FQd0OfWBTDxVbkeRwXfinkhA2x
fnx5OTjyymgMKqBldDkqXxxAMZrwpSdMXsI3SMJgoNpqFe05RsRo3FYsoTpiqSGq+eHT0Dlr81we
nhavo8hCDgzenTUwBxygBgeGxjHhSPTBFF1yCIz/5cjCEdVOBNhnXSe/bhXStKOQUXu6Zvzw8fF1
U6lGLwew6wZwz7z2PmWY2fC6YftRgMlUcSRrLzQ1OXhD362g6MzSbTs7zARu9TW6p+92ZqwQx/q3
1+9t3aIDsCczqgyLF7sKAPzLEpsMKClCCAAKy/VgGsc/h6Pxeiu97X0tu57sDnc/N5vVd8wtfHus
zZYHaMQxT1VVGfJVmFrmHIxSrMxQYSzB1CwpQnNAgVlkcZUP3X3cCb5X79aJij2Lu7CTD/Tr8v5/
3mrvB1bxnmC1XxGYKnCUDYkRIy1ocK32lBhWqGEc25BdpdF+9L4S+6ut3IuOjV0qN5H7uGEd6qSE
hh9c9dRwCO9JigI7pRkM4sE0o1xSsG3RDUzdv74bHq/ftFIuOqKvxSGNC/9g1VTEciH2zHFljCsF
3rFMDrZwnyQBm8aJBveNG81ZOmFpp6O2Iq1lTyTZiaYca6U0Tm49sPEBAaPPG5RAng2yz9DossjA
k+RRJ/XPpirHd7Sibzo7V0VwjejfNw8/6+Qd3JUaf/aAl1mRJOaCTWNUJLawQjJM6YSxH0rfpWnM
v8OjT1VMP/xsldl2DM5yO404/ufmdbCVqhoYNbC4QkhGwqSwGYwKQFELP0mwMY4KaSIDt+Eq7LAb
vC/x7mIj9Ip2bPxq15oKZ94w6+itu7UH7MD31ZuJcVEiJrs49lnMFCRWLBAdBTPZg6cQJqUI8/Ea
cbZmHhmEX65mcxlN/pfF0BIOLHTNvjucGAX212h9IcnFiuop8SVIohgTWGVinVfvMTHGIpzbl4Y7
JkquO0raTTV/o9o2WDWvDy/Hmun9W8fKXY/cSo7BaCE4xj29IMk4I+H9gzFkZ4vmxgO3ktltRzJn
J01sHp9e77ej+CX2DqypBsYkfkDYFbGiPoF5Bkc9kuCRg26VKtyd7XI0GreVy803DC4MrVa3NXH+
V/C3eUWTFYoMPw0BAKlgsybgLoHFsFgQitwT6qSvm4aN+dpoMTzktKWDizetnKwjvJt2NUUUhieF
vBzrWRvfKHMAwNgWVDHD4OXm2p+nEB4jk4pxMHlX5XHK1wuxma89U82F0x0tlnwyNX7UfvfH2uD9
1pdgj3HcBkAbWLTEsWgpWSzHzZ46ywP4R+emxnjcVq5tb2psVz1u2PBuPj5un5A5wWqap/6J1Al4
jeBEK2IsUjglbC2OMgfvmHrJsKyqXN985/igM8my402NQrqzjcAvp6ycn9/BE3ysbZGHCtY9Ya9W
VKATXTKhymPtOIa5AvcAOxT1NgjHy1Uhyy/4jKH18qmWFqM7JlrMDTk3M6bYp+S/jPh6SHjj2NyL
uR3zDWy3006hD1Hgq2SwKABcYdE6+DV3kevzMRp8wAlPCK40IteGZDORhe3OpF++VHbhPsdqC4Vt
EPZBrGWGycOR+ssAnAgK+E+bJNP1k+eXL+dmzS9TqV1P6imEeqnOxO3z0ZsY5zyRHul2NElE1zBb
ksKmHNRT7OXkABPy4DEfq2ROMTDG3mMTnbk4V3pC7RuQve9mD/2TFm9HMM4sYgTPweW2LhD4LMiZ
15446SjhShptgvWqsBa2HMdoH23nIXi+XE6TtL/d15q1AhZ+8GbErnpC7NkUIliOfDOYz/i+kyBB
+kiicjE7Fi2XV2Uy90848eJ3VxsVlj37uZK2U/ixetit0OoXD+Q/cMMUlQUr9jF4ZCKWn4MzQV1R
hQpXnGF/mZo6XLtpJeuJqw/tPSpBoeWaxSKjKxLDSFgZVxIl1jtYnFoVFwA5yQuN7a7nmh2f3gqt
tx2hZ4XTuzX68sfj6/dNQ+zCFQpzZWAyiyGrn0o0JVnkAgUAW8yAB1TbVHGuDI3BluDePVszrMS7
uYTz5Xq4qX0VZtN7FdPw6mA/4BMqOZQ4YjwpFMUw/ca0lfgdsaMHLBdwQJznSBss9i8bpeHaRNTe
V7PraTeXUd1krY9Zvb6MU6JNlSbsYMkhaqcMecEODCtgdk54iTwBDspCX5lgnj7oFB6d3teqaHtf
o2nSdjifFJZThdHBYTw7EYcGFKadBGzBAOMnxE+KAjilsx5tt6yzKjZ2vpSF3qw6uZA96a6yc+gA
i4+8PulhIXgwl14iMmZgPa0BkMCVywDmuLTK/ZO8vvEdN628c19O2NmRBehyvd3XsCKa/R1L3GWa
XYTdB/CDwrIPRjyuY6c510lSdiVsqK1EPp5pM/LxphVP92R2k4n9+8/V7c4wfF48ggn8UXOCx4SH
d8ozFQHOB47MVyTSlWIJSyZlAb6JvxCpn41+qvB1cttEm0VHGyn23vTvLw+vo0kshpI/5gDiOKaw
+ZvD+CEgfaM0+NA5wJbGSi4Tntl4nFaAefUA/vLgNH/4WCY7klFecQb7UIis1sVHbFwPcIQG7UwI
IuvyTjvS4eETkV1P5OmGlMtHPKzlwP+trceDtwBQLCAmnLMc+VaxAPKVFF6lpfA29DVzdj92X4f9
1YnUq47Ubnns6fD8ALBkn/YXGC/h1R1yJieG24WF150LAIBsLUkJ1h4sMxdinnZ1OI7UiuB6Iqxc
J9b6t/v1BmvUbqs/I4dCKmZToAZc9wDgEU94wZZN2BZa6MKdTcwxc9FU1ZFPr/Z6uZV61Vsi60On
k+WfmOY4dkWrLUZTsQKr8lWkgJEd0njwi8M31go7YwQ1WSDNKO3z13NnUDilz0Sob//rbhSshg+J
OKD+iXYzMQN2x5FQ298rWMGWg9eudbIepqeyPL9fdc1RkhMo9a4XMAH95r6BWLhpM9r//lrTyObW
DAdKwKZYXTDnhC9agFNisFCtVtUYr7ArbZTcCtjUznu+deATuY2vkxQyyNWZ10vK5j2YpmGpYABn
KmcJ5Rn3MJaIx7iJKJz6bDIL1+1hH9PdyX5LjajL3mRebqew4TDWy44AsvlRAWV9y6wSQKKGxeip
IcViTg/MGhhkDKtyVaSmOXl7PX+0jt/TIIyut4psO9BhO4sL4r/uUuxgJ6sNDWB9Oh7AIGskNknY
UcC2YL5ceCMTYGN/uarhMo4c33PTSqx7apj9/js8+DYc98CafpS1gCBkIhWWKikFPrgXsB9LAf43
04nJCY5sB5rIMDcwkoopoTg8vG1en56GRLWoHnj9c4sCMdh6aQpgVCh2pUIGQjAK3ETw8TljgNQU
vVB5fhj/VP354YabVtA5aVgybGc7Kz/8uvkdjIVUcnAGhx8QUWTFObaNt5jRFUEDIBfYaccGA6+V
SpYvc5lw8NOfH6/etBKqjtjg67Zi99xM//UOt5ma0TWq2nRrbck0MALmGwkS+BP1iSiqNR58RsWF
8yzelf0MF1pd591inORydlpBxiZIQ2AZ/zQ1tVeEk0oRFvHoKcfBT+cSZrszPOrASlDm/TYrn08o
lG9a0TtTTplDGOXHZrUYdcXVWlddwCZan1UmsBPBpiS9xqrdTMD8KJ7BZLLmsILpQDft07YdERbH
k4gev01hs0mUZYDNhQvsjsI0EvYUgKfCS+COWR/eCTYfHt6KvOjMeIVHnQwEoGcY4uG3W3ckWeH3
10HYrBkBfIcRVOHh+4OnJ4LK8JukMp+0i2uHaSXY9L7blk2oXq/Pi2PJpeH7JlZW0gLOO8POUFjK
YmDToGDx0NlJGivL2NneN6NhW6m2c/4/JgL3UoVP/m7SYFk6gJD4GrzD1nEcUxQ5gRvhIhhdpXjR
7F/UYPko3U0rP+sppWZtrQ6SPOFZTUrfMjP0cYMfalsKA2sjapIZHqjmKDh7GSvNJHYXBu+DXteb
tXnQqQ1mdMtEGd1Rxq06WKN2B0KewNNzrbfhNd7rVGUvi2wShinAGmKJSgEzVsAzsFHbSEXMgEGu
RUztcy50Kzrc12q16n2iLe1otTeglfD2iC32OccK3hrLHn5CMOsEtr8GWy1d3LX+F9iMJsI2ZOCa
UvFa/aZPvEyN2d/Z6rjt6iiPpMO/f/3j56ZX7xp8jBY8SkKxZBRAADZkNp4YnbNjRSt5hZv0f6p3
bUSZqNExnZYfDdeujTvrtIjXGqPbiGYoZtfwoIugKTZDNRlcvkK9m/jvk9EaSazsSaKnvcPuMXm7
bw+p3J57wTMD/ysI4gU68ODkweSQDCaMcIyBUfMsnzOhx2FbofSmJ9TmZOfw28Go1VQS/rvdX8XQ
Cjg4DngKdsqcBKZNwY20BTYenZUuCTRQ5V9iXYdrE0072/5abXvn/Hx9enqAz9hpjWmUzgnwItHJ
wfYBMwm5pfhXgCF4aBK/oOB4/DOH/ezuaDRYd2jAsvZ5m7TNqCU78NymQ3m1N8MRbhq2BQEOMlF4
lIvgisMML4VEnh38F7nn/v2Q4VyeU6VH0/vG2iuxnX8/VdPNw/LBnN1wPC5Y619H5b0MPx7mrbAp
CPh3BEA9xzCBhJ9gghadKLXcFSUnnLETQzZiKT2Ptii1FpOowOfP8e5Ag+VmaAsQnQNEDht0woOv
hEzEZSfBMcW2mbkAIrkqJ4Njn5hKcKWVdj2PYWimlnOqwXBQ8ODywzQfIEWWViUFr1BglzohA/bs
CrXvZM48URPKxUKtE8GhuLt200q26oirp5SUiGe8/7LB6vXN892h3J4OFkrX/ktRSq4cWHA8SBrk
r52u4K/SxqA4haXrrkt5dJ51Yoft3Nlqp+fBA83V8phS5tOMcvKZYh45gzpIBqckJCVr4S4FXAsg
NrxbRnneXBil63yQ2rp6AAWL59X3+982xwbHgu5PN4pMUgMeE1F4aK4QeMaSQEOqWJBBOQE+3oT7
0A7WCmJ7727GPcb018PTal/zA5vADiTD1AKLXt1/rkAOjg3cBTJJsVhAMGKckLC1apjV+qIt/LR7
xGmotb+jUUKs59kQLfU00Xv/2HTfZQNlZohm2Uw5VtoRppCObgQe3A0mhQkBVoRm4+O7sE4/Pp5o
zgsXblrxNx2dLOtA41FU7Jjbs8kE74InOSArnAJsRHxDaBDJGcEjGP2L3+NCPKy5pZXebTvSr+jJ
jpKVGmUxTneoasXT7m/Njl8D1sYAQMPT3TBuEcDbxGbDNmkpfVAmZXo1P6s+5gxDq15v1VmZjjpb
feKMzvt9Uc4h1q4UVbae+1bwrHVKeMJWW8XD4qVYT2QQTPviVZZX9Ro+1P2cbzV8uK1Rx/J5SSm4
SotJ4G9ovfq6w1i1B+oI0I37r8LmbWEXxi0XSxuLKgQmnyeM5gAusubOmcv9V8+iufEdN63cy44y
O88YzN2fR5dEDWfURRNhvhCKLc8E04XYYPDY9uSKSJl5P+GO/dlzQ/SiE8nRS37YdT58Gqq4po13
kk4pUiYJj3juL7oizlBPuC4w7UoB5668V7/OkQQ3rZid7ed/ebuy5UhuY/vOfwED+/KI1Zqw5KBE
S75vN3qjpmM4JM1l7LlffzNR3dWFanSzZTOkUIToLhhIVAHIBZnnLNXc7/5nLaG5296/7nNUdzdH
9Y9aFJcVLdITSsHTFkhoHZCDMRUTgwM9JWL+CP6AoVkZBDlX7rNr0k5WHTvgemXm1zQ/Lt4eVp+n
d5byWul6aYl/VMws72uqjEPIJpEl3pRxrEwINCVVYnoHJ+8PmfutPKcwwqZtrtoJHgeM9JrNdeJN
KtVCFUNey5DqLRmNyFiiObrIDHMFinCIl29FVornd7APL/yqw9gn8pLrs6tW+I5GXPN5PSAW2O5k
mupDZsANSJqRGCws1Zhh2xWqiQSfITEBT3S8tLh39/R0ge+uQSs+74mvRnLAXz7d9GJAtMSCDgFx
ASt0EKfO8qJJUTYmlq02Un1kDGgiRit+5zZcr/UIBPWyeJlynbBd2SxYTwYMVk0MOGIYwvKwZwy8
e6WjpAjfqtQ89PPSJTuB0Tpa2FDM3Vi2iEqPU4d9uOo25poO1608hGIDmP2pshVIwYmNVhINfq2n
VEYuxGVgSo/nN+ekwVUr8aIzjc14b7L59+vmoeYbj2rrekjcCZRhTRRzWHyoMV8OPHHCwOrXYMXa
I7971lMrxeY4imbA5JrtpsWQHLnE5MhvYOOuZ/mQUUZQZ2CTgbGviHBY9wbnJAEPBZwolWDbXQSH
Ufs+EYPCR1etmMeXeYaLOeFUDQBhAuXz4/1tLQof86DAa6mLwVrDwRnTxBuWwZnyWP+m4cUGz6l1
ikXHL6adboY6E5Nq2l21c+iscI56WcxzuV/28ZQB8Kxm2e4CNEipzvHIiEZjdEEnYguiPMKXyjG6
7DL/CF+mCeucTgAfm7RT7WhlI7Td1+F+S7c3LWdyKjkFziiRLiG6DRUEQdtJ1CwF7aWKIv1ZnMmj
cM2cpOisS6fmGmpfmfz16fEF1+QA1S0EH4KK4C072MyEVqIa5RDKHc5OFhIt1gsVg/g4m2ovxfka
6qHNVTutTWeuS3tkVT38/gZG6E+P6839DP7NR6xTzhQ0AmhjIUTGUyQSmwPY5wor8y+q2JqPcRpP
ddqqnc3S9WaznN0prB4f7ra/vw3QeOPdunP7REWli5OwyUhCEA6hmYKdRxGPUnNDwb+wIZ8v7Dzq
fyqm5Z2rD6sP5II/+hsf/zq7qS1wGIChDqY5FQxZ6QPSjYFNB0eec7C0TPyzbmqn8l21cxC9ibl5
3ermFXs90pAMsZ8HQsrgEa+aBmKFwUQaiviTsLxksRL8+uSSPPsJ+kPMhF10hNVz9YNnX9o+V8jy
74cwKrM1qYCXIg1nhCIRnbAMNKi3gvBAwUp1NBrzPu3z2Pvpw3ds0s5Ad2ZQeapbNvNPo7/Pd/WJ
RtmaSBIYszblRFTGlH0fJHHVZTDwniNjOr/j+V1avv/pbFRgfNxMr4crZd1irkb/cns7AzwxhYNH
Z4mUEdO6wVEIyJdQZM5BuBjSO5i40OMJW/D2tpVwcaz97ILOT89DfAyt+H9syxY9tZp1RYdMWua4
dpElkgOmwSPhvRVFEESMxWPUJX9xBQL2fzrQh0+bOSw6ScF2cbBj/3Lz6y5a/9PmefX2fExdInnC
rHPYBJFHZLEuoAo0GLhYFImOpnDqIlN8HOmSqEhfrHZqd8eK3C7NupeX8P3r8nGft7b3o8FX2tHh
lOSLteCvGcRvFUiMHmAPERmsUAXhW4K/OCFhOtSZbIRps6t2BpvOtJZzyrQKjjr0gh4UU0O6Ktom
BVw2MLeIwSwoES0lFpWK9ywyn0w09KLagekIJy4xJy3aOXQ0tV2u5hcW/unpdsgh6FAuhVx8xW0J
zMKmcQy9a55IKUXkzIMxQV8YTd4NcjKavHveTuGu9xkON7D3YKlsJ4jdAzGA9BL8U8IzXq9oOHQd
LQrrdQxjkeYwT6GY9tIMv+pgbsOPas699rp4fTko2AoEgC9Pe5dLAo+P6YCcoVhaLBDpRERnmVII
5XOWf+3Q70ws3RNrBDJ5WnydUKlWQAVLlXA2EecdR+Ys8D0pBZMrRTi6A8ioZ+9k0sds7GVnbHm0
qLbPN/eL7+PN6MyZ9KZWoMNHUZW/KIM8TAViOFjLJhl5IfhdO8yJpdW0aSfTMxJXcg7BsjN0rvF7
bBGo9KUF0eb70ngWBGNwSJvCEKgngNtFk8QLa7BmHcW4+YXINvjHbWe4GcZN22w2t3VnbqYHv+h/
iz8kdK5MzeZVBiH4h5hUVmAZm0iyM4gaj+idWE4Ex7Q1HE5+a/TFQCI4yhkoEXzczqB3Bq826yMO
Zry13QEUyl3UXVYrxVJrRYAPEvF6D2+OiOc0E2mq95EsbIePC0OPgpy6aNo9bie56U3yTvQCNOhd
vLxsB0axvXuoWSVL8CLTALoTEwyENZkEjolCPpWQlAEbWr+fI9T0fyYq07RrZ9OzBtaCzRbd8vEr
Xo0P38qJauGICGaMEwkcQswQClh2K8HP1VyDAaiL55fFlwKM0geef/x61YrFe7LOLfub58fXx9Xj
fXi7u8MQBKtZTfZ6SDEQkrscKOLkU+QRxes85wMpBraNY3DMuYsSatpRTuEDT9u0c+ngQtj1MV15
a4GxGgtTmkpVb9ukMiwwMOktYgdkUPpJG+IdE5oW4+Bwvgj2733b67TdtT4mKocfV3NgsXpbFxdP
r2/PO5gJXS/CB7Rbo4KiUkTwszCWFxMn1qgExrJlolBvRBLv56xMuj/DETRp1U5k1dGTd2axQwTN
lXZsYuAjGzdPBo5WFTXCwYL1ix45U8JrzYX274D8XQoFOox8wAAd/vdUdkf5sX2BP85W0+7Oc6oJ
BzKJiqGswcbhXmC5P64mRUlQWGwUFYYfg4/sP+dLH57NZDYdmY3tcqRWfYN/DcVRdFccVVVG1j4L
jhsasZ+ZxV3gMimIIck4Y/mCROLa9xlVh49b6TsokfDjchbUwdyiPWbW3r7DqwXJgokKFo/yaPKy
iGh6upBoQCsIGqgT9j2UtLbfmXSrjnSreUb9T2/3r9vXx7fV5yN7DAxALWsRWv1vBXYTriCDqxYC
6efBEXdRcSytLCUUOILURd74mUEbvTVv1k5wdWwrIRDvyRyc6uX/6P+2B0YCM/JaDHdPVGhnmHS7
GiheQCMoLRFjMheVwVmP72cTYd9n4gvw9KoVddGRf1eydfjMT6+fnzeLg7tER5g9HzMmnBuSY6KY
nospaUitoFkWUUsmizm3gJqeW9E6iAHw41iPDf+P9SEPXlwP3A6I/y1UVETXu7IcwXBziPpCnXQx
SylzX55DdzMpbEeKhdhL8fdPZQ5cIJ3g1qLVi4RCwiCzhES4jWwirFHtsrAflPh4GL0VetF5dVzw
Tin5TSp7530IdRUZAxUEnHasOAIX2BbjiTeJpiDga8uLa1eg69MrER5etdKJjsiKzhbil83zw+a+
x/qVuEZQE0tiysi1ZRWmyRTCZaSC5wgnMD+3EKc9t5Ip3pFMH5jUfim3b9vXMQlJyMEkspKD724C
uHEiUTApkMiFJU55gXXg1SwBqu2mlaCTpujAstpLsF09Pnw7+O1yYLymOsFQmHcFVoGFc8Qi7BoC
AKkgaYh6xnHS9HLVDsU649s5gFf8/PbwZfvw+5gYMuC4YFijZva4BEvLKSI5ZilIMFbsoCSDLiYE
ls1lS6sd5sQSaxu10+mk4zqxmrsaDT/r/rjmmJSLlmKBJUUNOOvMJyxYQwpuDG8lqYTQoD5DiX+Y
mvUCWtZmJpJ2FoYUfI7e/XkxVKnBuTSkFA9/4PGNlZUSic4Qvk4kEzC8E8DZjc55FksuF1X374Y4
YbQPD1vRe/td6hGO/3W7/n5I1cHoD9qGoO2jkzIROJg8rmqshwdlWbxAoGhbnJ7lZU/7aQXQqidA
L8ox+vHlNn9DtvFan1/Z2OsC3/9di0fB3UkC971CZjYHx740oAWUcdKLwrj6QNCNvTwnGu6ettNe
d04zxUd4fv9bGWzQMTI6oDBxKVktakwW6dGSR9BPpEFnEgxFyWBT8f+Sy7LRbK0cV620d50piDGv
f/X49P1ue7+ZTmHAp6dR2ySwHrtaWBlNRwcLKUbLo+A+WKFPQItPu2ylEZ3TBDyV/UL+9+L5kBzL
a3asiUm7EBRxBoNLyKhovQ3g8AhcIS7rxkZpO2kHlx1/S2l1giNumhgAfqF3JSnCNahKwWBTBaER
Ms5LbW2yOqQ/wgt3nguulXrTe2U7Ys/zmHEDRU2THVUKHL4MvqexAjdawTwprQlnHowtgemU5Y+g
xZ0jqzm0aCakVccL0HpMGXh7+Nf2YWKsDpfo2WTFPHi3GikTvZLgx0Q40BLeZVlYpqm/GKe9tWJ0
WIzwx6PVsHpcYNzD1sB6pXOONHtMzoqYzIRhNO8kIypZUMvUqvIeaCB2eeqlwaOZmB3rVB9f/JWz
l/uFWao8LSSpGOGze0ucAOeJSp6UTYzbQP/by/3pDMsF7WeN2ll3YtJO2/l9+e3iDpTlsQbA6Ws6
oBfDf6/FAEHLFK5vSlyuiRiwCxC2mEiLpI9RpBgu4ps6NWqjxZs2zdzMsnMMmeU8iJi2L1/883L7
+jwSJlfHvioYmkqRycEp6DHsE9AyRD8OaYFyCYmnd5A6Z72fpEifNprNohOssAt9lFm2XX35EQ6l
Xz+VBhwYo4iI04KbmzKWcsDlWAJWaiGDWXKO4MVBQrghEePHJJiNwpwKeI0Nrtp5md5k5yD2y/vH
1ZcxYqRRe2GlY2LUkxI9rrks8WraExaYUwk8RObPAutPu5yJ1All2fU8govBbNhfm3VliR/pXCeM
p8loMM8porDBwZpCxEh0IdkarPeWOhR6aWT9aKDTAfajpu3k1svO5O7mi2vx1Oz5nWNe44twSNso
pCGqRkORcRO0ZiaBSYpMLkoUfXF51s3by76k4UyR1qRVO5m7zuJxq7ntjJutxjJeSlMRCP9WUHln
q0nPkb2MIV8kVjqDgxiwKFBllQJLLEtzIXPkfrDTO394ftVK3TmWF3p1VGkPzuBAj0d31PaOmesK
AkhpBMdWJZINx7QBxsHmh+UnhaPOIpZRSh9n8+8lOXXLNjy9aqez7s1xfTBPVgcmrqHSDDxyMEoi
S+AUcvAMA6WaJDCSKefBJENPWCYd8gEYqfOKl0f3yevNy5fXx6cJs8O12+HQuWowlZwZE5ITFSJu
ADh9LINdkLy0ITMTXHSXJcbUgfZvHBucyo85anjVzqE7sREf6r5WDh0qDEZ8DFksQ+Q5fKNgdFFB
ibcuEST2Sx6LSm3pvuBpjzNROj7RcjnHdvs5YZXzgK47FJon7hMVJAy2M5zq3hdMhvbUYiJteidD
8j/BE/v5xF3+z6mdUocl2q3Y/F5mVHCnlbGiYErTIDEVyWIwDst0kTtPUuk19S7Q92iwdmO8o2Ov
WlE76mzF5yhUT/eL17vH56+jjhU1Pz0LSQ2sbQOniUjgzriYwa5jVnPpVaTyLBFI22krFu9Y32tt
RrH+eb993YhDUpId0rliYMWYTLhEXPEaV2cJw1+YngKyei5mNUbTjhoR1rYngrUjoPZi9XlzyPzG
DaOy8zwjggNufR0q/7cgcPLCmaCZ9Klvc0y6monQ+ThrN3eVPj283t88b+42z5uHeibxnec57GMD
34NKgSlRtpLVGvChjSBwNFkHZkig8SLdNRvmVPF606idjuu9UTd+1NvV82bz8MtmgUUzezfUoSbG
YLXhRtuSAvh7FFFUmUEgHEa0VwXv7gXLMxTb4/4acTa0E1vb0M2xP/CE+VW7g6P8A9+vq3CHQ5mG
oFkzA45xssg0LvB4ypoSJUThJuRQirrQNpgOdNJAmDaaTahzvG7YHChgX5v+ebuPUSD643BpmYR1
yJSjHRjNGSOuMTgC+5wbFiKP5kNSufc16T98Ol+z/kPrDWw6ydxuY+em9183z8vN8+PLPkG67gGj
aYZ1TjznyG1BEXDYaxK04wk2WczhfOXDvtO+wPunrbiLnriL8WoQJH7a3m+e//f59RB0qUVbtkQm
BAFLolJvwbEaHHjPnAqXucUK+xPxv1mHM3E6l6ibQ2HL6uvTaAVU9a9zFOBvklSDxNaDEQ//EE+F
8grOMhHn7ABjD+3APY91s5rH///nJu5W9XiAYejfgyIRThBWFMLUaUW8ZKgVmQzgyUWqLjq8Dr33
v+DheSv7SvRkn1ssf9u8llsMVh0coci1iGCdkMJRFTFEQYmYsuaMt8wwTfX5e/La58nMyHLbytlJ
s1sIye5WzTv+tmOitlVQWwUV4BybgPgsHA5XgdFVUA+ZRME5IqNJ+w7eyQfR2X47oqGGCfDOrPSY
CIy0Bsd2q4LXDHuFI/dCRnZtSWxQlFBkQI7R2mxld/+M3bVC6GVHCDf6JX9/ftsgVt7tanF/0Fvg
Agz4bT6ifoU365nGQISCk0eCWaeKKUJJZC5Pfx4Ybnsv35G8nbrrrar1PFHql83Xx9fNb9vNvw7V
1sMOdrUw2HnNEdA6UMw0QIirYBhSfFhMmUpRqYvKrI+HOTXHebt2UuvjsMBCbY4QsMou/xhRV+m1
usYbyd1f+Fkl+JcpgZvnkBHZIRNR4vBZvck8MeaSPQ/fMvZ/Kki7e3zVimk7sh/xku7vMwak8n1e
5TT6FLMrPgRM28FjtSA7ewiWqBgVjSKrLNgfuVdpRzp/y9K2bed319lr2o4ILjUGsQtx7fMIDNsT
E7rkVOXhYR5DslwVYoUwRGcmfHIuSxlm6Qzz/q7agY8jEgt3N/ftKknDaXxDMABTBs8VqYEL6NEA
ehSjAipTp4PkNpXz0IDT/vtvdtriqhX22IFYLNiYF3T/f18XsKD3UBNoAoKfna0BLWsiGB9YAmeZ
BLM2clNMgB/NDOJ42sdVO47sDX53BK64u4jY6+d5GO5wmaICGNcxE2XwIGHIIMgLWKu2gP0duDGJ
vRN8nw11wsRuWzWTuhPHlwjw42bOrrDCEOt12T6sf/qeNoNVMwn+xozlkYrw4LE+xInhlrXC/YHb
7FW6KEo67f+EUpi0aCfSSVxb3Bk5c/y/HmDnMKkEV0hm3AepEK9TYxEx8p5wDXaOTK7gGX/iRrDt
sRXGqJ4w+oDG/fXx22Z6XV4tZWTOqFm3OmY7XAvCbkrEGqFz0tmqE+y58/5mwhwriCVdzBOJfv00
pXI4fFupdYAtbQkNmKziA0V+rUTASTVOcjBN9EV1ftP+TxCyf+rzOCxFJ3QBP44AM/G3n25v7t9+
3z7sk0rn9ZjFcnBDIugHjolD2SfwaVNGn9ZHCr5AkP5joKlOyDKbT+eLVKDSNoOoShOnlfMVqkoO
mBjwB66ZVEqCo4yEhHHwAmeb5+AORulh6bry/6VdT4+iMBS/8yneZRJNdokioGPigVGWMFLZVZzZ
PTUonZGs4gRqZufb72vRGXEtZLI9mNj+eP8fr9QWbatfPy+/wkV1CuAfYEUr88rpO+x8X2AiMV9v
znZlmHIu1RVnyLBk4w1ZPJQNsG5PJl+xtPTuDNO1v91dbC2qUNE098/xpdlkn6RPp6MSi8Nuh2oO
Ub5xvN0WsIsTBqs32PMNy+El34sTMTiv43H+zOS7RvgmLU4DQ6kXj4vf9Gmf05c0GYJR9sl9s3SN
n5wNoXPeWTAujwAe+6uMm8h3/o88fjnTCi0g+e3i9SbN2FV1rL5lfY6n9kBgzp4r9hWLUWG2fQMR
6WJk/wTv6TCEaM/j7cgcdHSbQM4KrOsZH/XsW90irX7/pg3FK8Y6S+j+wCnKdsjknykjx2TUFdlL
Wkbvpq095imPV1uGRIQA76Qxuz14xUHOspF8zwhe0EG6H8wsWzews1tlNupMWwJXYaj3vFb/FtmB
Nnc9P5xB9Ou7C4r24M+jpRNoo4+mgh6HtbEHq3gttkhCwcUm/mtgnBzYUwFN5cNtXROL3RJabOKc
JeUVhQIrqYrjDBnCpLOUzTJKqN8oAcCghC79o7zyB7urAgiqYr1PZDDe5jLMu4MU5FJiE5/kiXZW
jmqbOdX8UJwnbGq3BspaquSH9Xa1BPR+Afd+BM8sk6sBCcqcXFrDwPBCWa9DW+UxDZa0BbRvC7VO
F56GALPq+CoqQNOIedVZTLa1qdwhDY7ogTBbM7UbiBME4bjeBoY1wFw8QVtxskuzthLdQ48RnFvk
bxDFz2CYhtpkF1Crq5YBPVb+f26jy7p2CfUC8IJFUKsYQhc/gpQzeBEulj9CKERFYy0iZzwFb+nM
JzV5gFNEoi045myTpPgkPThBq36/ll6d6Wfj4IFQ6TMncmvM1ddNoj2ylUgHIq9WebZr6D2iUTpx
IqdJNUuoRqnwwN3SDyJ/tlCHF9qWUp84nttAVuYYpYE/m7oTTB41f8MUbqA0cn9GTaLaWFoQupz5
43BSL4Ilbkg7WRJAzJ3VaYBU0VjHm+yujHJls1GtT9SEKIyc5kQwdMsroV8AU/ZQVAKnDJhTEOgD
DyuY9hdQSwMEFAACAAgAOYgdSQdsrnn4AwAAbAsAAHUAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzEx
X0V4cHJlc3Npb25zLzExLjlfRXF1YWxpdHlfT3BlcmF0b3JzLzExLjkuNF9UaGVfU3RyaWN0X0Vx
dWFsc19PcGVyYXRvci9TMTEuOS40X0E4X1Q1LXN0ZGVyci50eHRVVAkAA+7MxFfuzMRXdXgLAAEE
9QEAAAQUAAAAxVbbbuM2EH3XV+gpsIO01tWSjSLAru2g3nU2RmTED8UioMRRrC5NChSVS7++Q10T
J+tsgAJ9ESRy5pwzFw71KYoW15vl1Tfz4tNytZhPzayYAWODoTG6EazcQzGaE0VGi2002kL8NVOj
SJQygdEXck+iRGa5mgkJI1lyle1xOZp9iW4IK2HJWcah+H038C1raE5N3JpO8YH45mnzUVlOp6Rh
NRPBC2XYpmlaj7bl+W6YBpa53VzMJCl2htNsuF4cuOnEPIritsY09AIrrI03OykeokTkaK/0++Ix
gVxlgg+q/cUjJJEiCk7PXqAPDa+FCy1KE1rv/hJEz3lyCOq3kdouovomw5yp24KJh9ucqN1thW+M
eysYe2ljBVzJJyPo98axC+b9fqHXN6IvkBG20lOLeAFpNCw3M0ExDYB6SwW1+JvLVvVaCiVmhLEL
SfZwOjQmLQqE1BmntdWSK5C5BHweIKH/HXouqjUSsy4db6T4Kv4bEoUcttVwBOB5vlXvwz0mi7S4
r9zrhtSx1IU/SPKZbp/p9Bv5AXSt5B8NSFOy8xMktXtSP4TaO5cizRjQxXHydWWW8btrIIXg/5kk
p5YUj90giGMTz54+ZhrhkmQcOwoI7cT872rdTq3vh2Gvth0Q2JGCsapFGoFLvhWS0cGB6RtSOov5
1eVWkjwHWbk+3+rUzEGRjBW6k7xe05jQX9H0ETFvMfoto+elNDhkXDDY45HtTkm9+i4n4o47XDeZ
JD/FxVOYE9nh6ppt4FGtRZFpoa9jOPBfwR1JnjZPOURlngupkDqoqYnjjR3yjPrPzeWqdr8uOddJ
xAvgMKIG+bRpoDfEIEPYM1gxOcbQTpcKbE2K4hpS3Y+HfOdH+SYNnx04lu+/5JuLpNQIayKLFzEV
F0KuSVkA3UiAz2XGKEi8JB2rR7Pp+DhaXu7zjfgBPPsH5EqIfHDUPHriCU5/LsriEtvhzIyFYM+q
t0a4CIoCo8O4HLtTYqOUDyj5kAokcjoiC2z4ANEyxWoUGd4EH6V0O0rXxo+j3npAcFo3Sdsg+j1S
Eufecp+z8xOdr2Y8TGI6CZxnfTCHBEmp/ut5G/rzk4Kij6A12soM70A8XsmOyLrdsPFLXmR3HKjJ
BL9D1mZETCgW6XkkL1GQilYKBkfBmrkwSRIaB/AabCUI1WCJ2O8z9T5efdhRl+MHHjV/+wsRq8tf
R1td9JywoXnb402/G07YeuGgxfNQeenCXAMOpAJlkOoASkggu68TO33I1E6/1NNOo0xaFMuxUlKj
9BYHAl5gfTdcq3V2fVIP3kp2Hf+MZdV4q1UroHp58JNknR7UD/+zhoZrt4mmlpNa7yW6wn+N8i9Q
SwMECgAAAAAAOYgdSQAAAAAAAAAAAAAAAGYAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJl
c3Npb25zLzExLjlfRXF1YWxpdHlfT3BlcmF0b3JzLzExLjkuNV9UaGVfU3RyaWN0X0RvZXNfbm90
X2VxdWFsc19PcGVyYXRvci9VVAkAA+7MxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAHWI
HUnbJkz5w00AANW6AQCBABwAc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS45
X0VxdWFsaXR5X09wZXJhdG9ycy8xMS45LjVfVGhlX1N0cmljdF9Eb2VzX25vdF9lcXVhbHNfT3Bl
cmF0b3IvUzExLjkuNV9BOF9UNS1jcmFzaC1sb2cudHh0VVQJAANdzcRX7szEV3V4CwABBPUBAAAE
FAAAAOyda3OjRrPHXx8+BS9O7SPvrmzmwk3l45SuibO+lWV7U0mlqAEGm7NIKIB8OZ/+9ACSEJJs
s+vdJ09qXCmvIqD73z23/sFYukhij6dpR13/Gcwns0s+9XlylXCu/oEwMew/lQuW3dVPhZ+Dmzia
T3h6cHN+cn06PHh/sH69cuzzaRYGIU86u70oNzxJw3had/DTTz8p/djn6tXTjK8f/M0y2gZVW2cs
C+/5HuhLwJF6UQvq4im7i6cQBUIYorjk6SyepqEbrZlL79Q/sIjyOuWJejyo69A1pCgDlvGDq3BS
E4I1ZLQ1q41tFZkdTevo1r5hGGpbMzVNOR+r22I7ZZ4Kh35TkbYP/+lqC9ERsjV7DyTO4iTbuAoh
pTuNp0+TeJ6q19cVjT1sDnRrOGz3bTRqD3uk26ajrtm2B1jTiWZoxOwpiiKUq90H9oWr43DqcbUX
x1lH1Q1N09SUe/HUTxWln7D0jvvq1V3Cmb/0oUGLhemMZd6d+teczyEHXjzZZ7NZxPcnLJy2s/wC
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
vz2104E1BuoyzdpbtadYNEP2aQNephUq3q+n/UKHFtIcb3JfglcpRGfFOEu8u3I79dFtz/K8AObw
o58vfj3VQSohNXVd0rvt6aCv1+vdHozOLr3yARNXXpQazEHboLqHMXn/aZ1aqnc8QVm8wta6cneC
Z5xm56qab0+UfUDBMhn1aU3MxJtPSwqZtqfVeJpgdXzjqIZTrc+PKHyKlMR0Ghv21zBMBnxzCjd8
Vwwul9rWHFfsmN8Qrhqbw1Vzs6G2CaE2VIcCoQ50LhYrP7F4hKE2htoYamOojaE2htoYar8s1LZU
gzF9MJ3lxCpbLrLn0ARlgYdptVH5W1Rc8zT7rFiWzdRwhXP3FDVb+iaNwQJfXa7mWrwvV/99iGBE
sGgZ0jdgTFU1neXFhFF4Qm8YD1j3bmkUU/GYykqfV2CDKy9SC5s3jZ9CB7E87/JzOD58ehX33u22
X8du+fgMgIxc4A9dZjAIVoDMqyheTD6vUtQqVCJvh0raa6GS/oqoZGwMlczNoZK1WVSyEJUQlRCV
EJUQlRCVEJUQlRCVEJUQlRCVEJWaqGQjKiEqISohKiEqISohKiEqISohKiEqISohKjVRyUFUQlRC
VEJUQlRCVEJUQlRCVEJUQlRCVEJUaqKSi6iEqISohKiEqISohKiEqISohKiEqISohKjURCWiIish
KyErISshKyErISshKyErISshKyErISs9YiXxqzGHP+LXTSMrISshKyErISshK23066Zt3fcHrPxS
aFhpO51FXzg9O1p+wH+Us4xyXFX2W6ht3fVtY2GBZSAw+TnJWbyjW9Iw5BDHd8saDMBowSpPpr+/
Uxqvfgpz7re3n0YeUxp5QIrzYuR5nhMTsHnm1c/GF3BZWwdfnqfrCUh5nkFEEUSRlSiiAYocXh4j
iiCKIIogiiCKIIogiiCKIIogiiCKIIq8JYroiCKIIogiiCKIIogiiCKIIogiiCKIIogib48iBqII
ogiiCKIIogiiCKIIogiiCKIIogiiyNujiIkogiiCKIIogiiCKIIogiiCKIIogiiCKPL2KGIhiiCK
IIogiiCKIIogiiCKIIogiiCKIIq8PYrYiCKIIogiiCKIIogiiCKIIogiiCKIIogib48iDqIIogii
CKIIogiiCKIIogiiCKIIogiiyNujCP+9+lkNdg/7/Odqip1RFt1Cl3sGiugDqAQvZzEL5hlkAxWp
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
H2KPDgYd7wh8iffNP87UN3+zJYnNpmQRViR1+D9gXuSOa7spvwTzCaVFM73P/N2WS3/belMuaJsB
4+uffiwLrdxIWlTZgnsZjVmgbYaRY++QXPmPDoTvf3t6tws1BnyZpJ2Dys+VMG1K94ROM1S938/H
OYEZwra3fAAlXOoVt+m8r8W++ZOHoel5AeTwk1+ufj8nABWhCjoXDR+GBPANh8OHwfzi2it+SeQ0
B6UHG6QtKh9WLb9/eImXqoEnWZZw2IuuPF7SM8FmN1wt9qE2/CVKRGzGfFYBs7Tmwx4lq/k0az8b
+XZ/wwJql/V5i4WvKCUy7NovM14gOIzELiQh+GseXe+VjW1H/jTilegqfT26arxuq21Dqw3uUKHV
geDiE/VnPpm3rXbbaretdttqt61222q3rfZ3ttqhxTiJVllOVtmiyF7CFBQKR0m5I/1TnN+L2+xr
tTxdoxEIN54pYqvxQxqLBb6+H829/F5U/z50MLJZNBt35KEV6Ia9X00Yh2fsCxcNa++BxRMmf4/0
TZu/QRuc5iBxWH9o/Bx1kOX5WIwR9OHDDzHvzXHnx8gtficFRKZh4x9afhR8g8j8EMS7mc8PUfUt
qoT+fVQJ/yiqRH4gVaKvRpWM16NK5utSJaelSi1VaqlSS5VaqtRSpZYqtVSppUotVWqpUkuVWqpU
p0pIb7lSy5VartRypZYrtVyp5UotV2q5UsuVWq7UcqWWK21xJdRypZYrtVyp5UotV2q5UsuVWq7U
cqWWK7VcqeVKLVfa4kq45UotV2q5UsuVWq7UcqWWK7VcqeVKLVdquVLLlVqutMWVSMuVWq7UcqWW
K7VcqeVKLVdquVLLlVqu1HKlliu1XKnOlXQ1SFl2D2PEi9fU32yzZEmqeHcDVzsm1fw4P+gqqpqy
x666cqfu+yz0OY/ghL86IdQaiPKQWLAg02DfFeHGCfiEnEEZEmfiyhmEODV1rgtZWfWEHkVCVSS1
z+vaGWbyip0nQIma2lVZUokONsMJZ32JTwn15QA4jvQaYPjY8gTaPqFLSxDecQaJE6RqIqaGb/ji
ZWgpouKEMKt6iThh7DiBhZJ4XpUFIU78yIL6mUaTmnakY128JS7Fu+YEZCmnyV0MNUB1L2+6Mpaw
MkzTJFXdJOTFkfWVpnIt/t/4zxdTn6fFSUQVRenHM5Y+qSdTdsczETa1j65qpSnVj/pusJjOr/gs
hEKdcgi8jx8/Hqgf8IC6BqGuZvT6RCOYjDTbRYbWH9ouGY4wMvTesXp0m0wWU54d3V6c3pwNj94e
bUpbotAfkc5tbgmnamrtIESU+g7WUfmazmue5eP7eFouro4OaEa664xGxAUgZl8jPWppds9wNddy
e4N+36AI2bvQ7JNawxVs42L6TlyL+TxJ8yo0MtL1HnIHmomorpE+/OnrQ0szrN7AJD2C0XD0AmhV
wRvofMeso4OAQrZAtz8Fd0ydvIOL4F+H6JC+A6AuGlJ3hLFmG0PwITaG8G0w1DAx+rrZc/vIIbuA
bko+jMQrrcWrC45uOaQGqDVHvdqYCn6EEY228BOd2TKF1N/VvQs3GmLLsjDVXEcHB49GVOtRw9Ec
w6HYHFjEsPEu3IXE3XiLc1WcNDToFk4bR2Qb5z4HW7Q3Go5sV7OHI0sjNrI0xzWohnpm36aWSfHA
3gN0v2fLk1WooRNuuzSETy0kNl5/vtOxA6s3xEPw6WCgEcNAWp9aVBsNdNwznf6IDJ9xbCH3OfcW
I5QCoSgEpsMNe418dVC8hw6cLF66p3aIQQ7xIRX+1O0hgWDVDN01IWB7RHNsyAEUDx2rPxxClTAB
3yJLxWI6EpdXlNkBdoK6MjjIdDmjcIXw6+1Z+V72ckVbziES2U+HVWsORqAaHELcvqX1iIk04tju
yIGljU0KqseyGzg6jf0UUu/RaOmL7Ohizmc/ne72TjE8BpfuBLFpg6yDdRsCXJtqmfRdNgd6AaHp
HIor4K9w4qhvGoMB1Qyzb8Aku1SzTexqYMJgOIBGZYBGz1ristRPZrstqQyrItg9uDpi08aA7LAx
8pfzVPZcs+KNKcuZoggfYv2QgI0m0g0XEaqZ1v8Td2XNbSTJ+Z2/wo8TsVGcuo/HOmflmLFkcbX2
a6PRkOihQC0PeeRf78xuAuhqFEDELMN+EoRuVmdW5fF9mdkkhDcRqYcIEcFuMuMawkdmMc4MZVrv
5xMr16JtGiakDF8Ehcehf364fQIvM+PWK0MFOBm9tpi7Ahe2lEK8F5i7IJ1aWizhydvEffJM+bMn
cPOyentbd1evahFFS+5lMMO/ZwvAA8nEy5/UeYSNtfBzEiVXoRjHaCBRcAupDYQOXhYSs+JBGdhi
ys5K3li/rUTjxoU+sqGP7UY3OBxk97jrJ/zEtcG9Z0r4qAKhSoJlKA05z0bYe+rBCbyhcgxxJy1j
v2AtjV01pHF6Z7Dg+C9SMAbBViNKsAEyl/PghhqSGCBY4lKwhEWfKUAqSGPubQLK7uG1xH1L4kE3
7GH4+we/fy5ocC2vFfzg+C8oEjgzTBbIFwUzh06WOAfbmqOR2ujihGjEkw8Pt9+B1SxMAx912h7w
aq3EHD/uvtQjxahiYV9Zs7lmaM9mjOvZilQyuKEGyEiEEZo4HQIBHBFVAqROC7tE+vkzTkS7/oQp
6842tOhWi4j+W7f9/HD/fcATwLtReg3ol3KZiIoWDwBBkNSW+OgZuGKIhsZLpN+t3ZZ8d7WS2mwa
AcWu9M4Bv/92+9jvrF4xNHlAfg6yjCU2RYh7Gaw9JB+JExGMxPJA/fm45/t+uMO6xvBq9vk+9LBA
+7ZauqtagYZF2YHvHLn/y1+61e3emTk6gLWec0+BDhlEJcAGSSgBMk6khVtqgw1uFlIWq9SPHxqb
6uh6t6mLv+P7k5T8WtHRkD3kNUgykMet9OCGDjZXMUEM5HrGPVCP1E559ZpX9ZOHhjim32yqYs9f
h9uvayCrP8nRMPkIM2xiWptYSJKAeEWmAJiUhbDAlHIsKO9UvsQ0XxZvn+TLxVrovpEZXL/ZH+H9
16/32/jw49vT/W4fgVBpdi2mnczGOiPBnyA6A2qPkKiDQOhOUxHSBpadau7k8cq1YOsGcuuUXESr
D9NfUO+2/eC33d2Px9vHuctT2DcdWCQpcsgb4ErEOsEI01SyQKV10Vyyr43HtPe4ceNVrYFqqDXP
fZ+Okp8MUSvjEvE6gRKeOcjCFIyDu+IzUA2bzVslv0+No+icacnsFgDzsduuV/d/7MQHXokAU40c
XwHlEIB8DLi7YBjFTIiAKgoAT6c00JJzMKJaeSFa1xBtxXYh4Nfb7dA9+LvPA2h52FhuJ8uNMXgI
Pc45gGdaAfOMjlCdAgOzMVGY/6MA2xCzVrNfH6vZ9wAZphO4X/1Xf+33/ikRuxnlMHokEiJityQB
uwErJbook6QxzJhYB9r5Klf1k2zr8RBoV+Pjv0yBhXSPW7Y/fmcRwaMTmsRDFikTTZHYe4A73gH6
SZ7m4pKQzORakuMFF/I0Im2/Hnanvnr8ek33giAX9sLzrHQkHI9ZmGiAqws4elYc15l5GkItwmyN
+tnz4sHsyyUU3NsGhiOGPzD7Cr8Z4XVwGlIRMVlCimcBXFwA2g7e5MIK07nIf8oCD9drHYZGbB16
tdu/2/65x4rK3qIU0DGFEkfvjQfeQiRlHEMRkDENiAr4jA4yUMNLqvdxsdZV/Uh9LMeG0cVe/vXd
AY+ya86RIXIkrs4B/RNcESWAlAgNCdOrAvm8OCZi4ly+Qg0vJljzFPvu/K2H61e1Wqyhq+oXuDXe
3T+v032/z2KCvxiLt5wz7ijx3KMJazDhwDWJUcGRMJtkugi97p/QFn9/eS79mjYo25oxsxmqFLCH
sIxKie6Pp8QhlIrkNMlCALaBaECsAN/LQKitCMELY85F/wbyhEfbhjyYkszyD89+erq9G3cTeQwc
whiSBCDNGKIiLBUgMpYzYr3PREHQp0kWxWS4aDN3DzixmbvLc+EHpo7D18AV37lfud8+fegeHoeH
/XYKORmBjkUK6TlxwHyJgDAOpCBzgs0YajNEVJXe3OL9327a93x8+Ru6I3ZYSl2pzI1pqGyWVfhv
D7fbWcn5+gP+H61pgsp6BBOQz0o2BaC7BzQEVkRswUYLpxnCZhK6+LeoyH2oZalAHl5a6Oda+q0W
kexm6LEl9R/TAMOeAogRKXGMrzoyrgslOhTkAdxBqgyGmOATcASTs7yoPFA/6GTla3ZPpY5Qx+4+
SLlP+H98vePX/FArumYjqXJS8QKROIEPQTpTCrAH6JKzAoKQtOdR1clhvk4lgBkaLmLFvmDVP397
PAggqR13L1ufmC2OALvDSOMYCVZSoiAaaRu5UkovuOVsnUoA64550eD48kDRwX8b1rfdnnQoDRrJ
MVdGX6wCpht4huxURCAuZQe5MkgNy4ucXikd7xY/HVzGy5XgTvQNwcWwA+v/eO4euu0TAM59zV6j
9Y1AzRcwY8kINxokBgcjjitPkhVMM6uFlu1y33LRSqKVPaY88OWyg/Xu/c3zw6brsQBvriVW4M3Y
x/CZsViALsgksWJQBAk5w3+jZYJR44Q7X0bdr3yi1LS7XEs9NAygV3Z0gePS9ebwd8J/0lMRW4En
Y7ySEsBSUQiZQHyfAd8V4KEx26yU1Em4clH9+vCnyM9Xsg/3XdWyN0JUPwxHKfPu/uHmx7bH6DR1
QsZ/EW4xRSOHaAQZPROhqCNOZw/BCQCXcoVKl988+ezlOeUEL5crXdctJ1iL9ZKxDv3t9nbfvGJj
0d6y5BN4rQ5aYKvcEvgArsvAOwwgzjCW3U5z1fmaC6EaMW1tV4v60N6t373HUssUVqTReAJgLoGK
UIjXFpgUEBfiPQBeBegvMG8ET/KykPLu/StB5d37WviON4Rf0YX13H8btp/vdrWLEXC9FDFScAWy
pCVFsEKEUJk46sGCHI8CWEWO3v7pIsZ0rRZ4xVoCs0XU6Z7Xt/fXz3Bij9ceP3/aYhsdpOZj1Z6N
eUWBvNJx4GkFDJ+BzYdsOJHexZy1Tcq+Yvi7lU/QtN3lSoOBNrZ8YGax5eBUEaBXB8G3hSi4B+Zb
JGx0ERDTWdHEBmqJjdFEjsWAIi5sOOwfc7LpsL+jVqQB1ocBu0/VURxg37v34ywDBwI+ngJVdKcO
dZEqZuNYX4SkGgXEoARxVSahiuHR5vJKMjg51TBeqiVv0B7gp0ua8bH77wjrPXTXKwi9d8OYAuRI
OMDiMbE6LHurQnAwAA6BgfFzl0kwNDEtDaSAht+iL+7i5M/LZ/yMez1sn7Ad0b+/OVyfK7Dh7rhw
BF/u0UC67T5v7x+fbvvfhsdHnHyq+/ngQyODg1wlhSYqQuISEniTg4BPVPAciKeipiyqJ+fXrUSU
uiGiXA3HZn43/H3eWlNgHgL3ePqAExnA3pQCMwfLDtieUsSzIEi20gJ0TlRre3lz7Wxvzdc6NApk
GyR0NViArNyth6ehf7p/eOynMZiJ5DuA0BOEVZ5JA0xUj/MGSUCE55kCpC4esCwwAHYRAUjwqLR7
1OnxmKPbKrWUPMZAG4sgeLXMWPt8PrGracYH2LZ9yQL4AfscTgmFtWtjgbcJETgkMC2Js9xpC7RB
vJIFqme9ih32spxIdvvrldqA/o/VdmZpkT1WSn6HYDKWTKaIZcW1nsDr7iOeqddZBh6Jh0QHWRsc
KTgIXEWzJHIpwfJwXumXB5yp2CwiF77+d6xD1y/LlONQyRwL/MtP4lpMTIaPZeSgss8aEgYYHici
WAAfMXOSjNI+0hS0O39iR484Gmqpocama3R+4Mt9V/FjB/Bk2w+HvuIoqNBAs0ZEpCMKChTUSYBK
iUWrZQb+4s2fF7QqddQSVMKvTGPfV3YJO37ttp/n/app7mX8F7ESy4oboLBR4dAUkGpQBfwl26go
FwCjRHxzoD0X6USraHZHpXQvjmvim3W3rON23+csiY8qW+uu+Vja4pQJjo1P7QudyGcwYGhKa8jw
WOE150c8/N9fY0jzOyoFhvVxIRq+3HeS4y/xt5tDOdxYC06CxaiiGJwFnhQELiKywZnFABy/KC6k
sALWfTWe/fLQfftye6ogW1leJchChaGhwuB2Kvz+x916X7AxduyEY3CitMRkpCKFYW4XJkOYYg72
3qXiOAsAqpp857BgJceGNxxgw/fTaL+U/7z50j0M66M2ZwxcBpU8iYFhm4gC6ZLgz8oDvfEpihLS
G7U5axlm8rsRcy/kxy+XI2t3959vt4/T1PG84Zy8TwYsGYCHS0RYBfSxFENSBlpZtMZawCX5e1z/
VZ+dS3GiuTi7o9aTmYaeKz3wY9j1rx/yL9UgjeYmpeSIt8iHIHOTwAX4q/bceS8cc/5inIWLn0Fa
eLkWfNUdCy5Mt8jOq67//fnbPLGBlb2MYunRd60GySmSIgGETlCpgSMZSqgTXiQtqWmR6WMtwuJJ
cxWma1e1qKuG/G45hvXLsB2mdzG7uxtAZ5CbdjGTUzcVXF0pNiXGCFCLgBrg1EjAZMGAsbogcr6o
JdR4Vludxo21bs62dOsaVdP0PDylYfX8+df7z2Cin+f25QAwKcMoyR4781oDUyqSEvhe5ciC1J5d
2p1ZPud02WN5Z63ZqnFq4Mvzns3H4fPt49PDj6prg4EtS5YsgJIAHATok4rYkwf2aoyKkeqoxxD7
/9W0qcW+qhXkLa33narfhx9fP++7VONUhTFWKisBIGbwJRGBK4ZEGSTIxCTnJubUngear1ULwdSx
EDj6UBtVqSqwbmQdCjOcdDlrTCSuKAFoKgFElBacJpcMmdAFrs4Xzc7DivhzE1Q4akUjwlorL+l5
vfAn4LVY/FNstKOU8Zd6GEmoxelL6/GFg6KJ1EkrkaWS49a+rR3txTnTClswKNRStVTft2++dv2X
/TiZ1Uh8GdcRmG4Cu3EMJ3wLsRZOKbjkcxRRi6CbdjNbq5LBHXdZ4Uu9TOR/i3EeemL0kmeAnULi
2zJSAjeVVqPDKiARNDl5UVKAZdsbBhdqMU0Db2D147iTjWQd8dJY8+B6bK4rD0SBJktUVh7LqoEE
ATbBNWXRBGde7Ya+LHwmLsLVuchMHY/fOGbdulHIHjnVZMhjzqWcy6K8JkCCQVwjQVypI2EiU62V
g0h43oT//bl7ePqf0/a40Gx8/mnVxsuVbo73x7o5IRedg/X28XGPYJXRiKbRil2OygNsJokmJKEJ
C31BkyQMFjesVtGe6x7M1q3FMrohFv6z2HKcqfTPT1/q8VIHAU9CFCSwCDY1AoTALPGVCiVFCAEC
Y7ksoe7WP7Wnu+u19JY2pLfLF65uvg1D/+Xj0N9/3o6/BGKKghxLY6MqU4lMKSCKHFw0jl1eYIoE
y5CkCM2dVVlkcRHqaT7uRGutdetCxYZPOHxNrzqgT6vbfzyPb7qwMbQLhk6citIAbQyJERtrAXSz
2lNiWKGGcXx77yKNdqu3ldhdreXu3LHcK+UWch/cbj/OJjR8cGPJEpfwngBFwxcMDZIfMDPKJQXX
iG7quv95nz5cv6ql7Bqir8VmeJkRgB/oq8FlLsRubFkZA+gZ9lgmB4HIJwmMt3CimQWQojmQYXti
bLletRZpLVsiyQb+PYy0aTRuPU1/QLKz3pCgBLY0sNHnRCEsAlnLPOqk/tnq6PyOWvShEfjGPFSJ
jr+SZDTeCZmMvN1DamRFkpgLviIH8NYWVgC8a5UQrVP6Jq/I4a+XODXYfvetVmbTCDirzZIj/tvw
NMVKNQYYNTXMQkhGglHYDEEFEqqFTxJiDJAAaSIDhHDRyPjL4m2JXy5WQm/MMXmCL/sj48EY+6Hb
DtNYGx8r7A5PokD6idYXklwcwQAlvgRJFGMCx4is8+otTmIuwrlEMN2xUHLdUNIOY7yZzfyBmT7B
4vtZ8t0sMU40e+wbc+TrQnCkhl6QZJyRXjGIPuzsMOF84Voyu2lI5uziHbnt/dPtZkbx8HXgsSbC
mMQDhDSEbxokiIcAgoHp+VSEsEoV7s6+RDlbt5bLHUdoDtRiDHN1TPGfAMvysaA25v7p0wSupYLs
SABlgYtaHJTF/hJ10o9R2sZ8KaGGh5wOLXDxqpLT6YbwK77Y1K/jb5Q5TBvvonSCcOi4DZAYcaKM
40RZsjjgmz11lgfr6LlNna9byTW+37mUywjbajrefPwwNht3xS9baIT0QTLOtAoJSSMYJLhZUEgw
2iSZLi5+wdpnal9wdSG1a0m9jNGPI1q5fjjAlXkZDLul7qVriuk7BJ4UvpxBPcV3+hwkHR5gj0fG
k2IAwvEWQeMIQ10IteodkK1zs/v36LrnQ7ZnFmOiByaEJJ/AseD8A9AOJx0lQPqNNsF6VVjduz6s
UT/aHtN5vlot63bfb1GT69L1wwSXxMskjNiVuUWwHBuBkWNzxyQBFMhHEpWLQH2j5fKi4tbuCSc2
/uVqpcJq07CfXtrGEE9/h8BbvgBvOQFvRxWVBSe3kdyYiGPIgFaoK6pQ4Yoz7NUCfTwzwhN/vaol
a4mr9695jJXjugkYi4yuALNxkPLwFzNQYr0D59SqOOA5Xr7ynvDlTcDD02uh9aYh9NEk8IuPPv7Y
Pn0Zqo4beijYyjTYIKZCbyrRlGSxSRMguTADEGt8XZFzZWgMtgT35pWfyRNvjiU8dtf9TfVWmKG1
FcMS0IzxA45QyXGAFs/RASVl2nDCtJV4jvhmB7hLAS/xHPu5xf7poDRdq0W1LVGrN1n3vygXbG3M
qcEpQUsiDqMLnAkwCHzTMADmVU5RZhg9epH1mjVMZrDHdi700DfqKbtW4djNoNNY/KEbKT1YiYdY
4qX5X96uZLmOW8nu+RW97A0YmIclRpth+bVsKtxv13EnWjdEk2qKUtv++peJukOhCnd4bYa9IcUq
oxJVQOLkdBJUCwPVYg1gcq5cttpxaZX7i9HI8R03rbxzYCcsU9OkCfj/v26rUY86cZcW4jLNLoJq
hsNVYYIRAxMSFrnTnOskKbvyTK31FndnajHublrxdE9mN1mgv39e3e52zY+LJ9APv22emqCfd8oz
FQGhBI7xegz/lWIJSyZlkUDtMH4hxXcy+qkM38ltk9ksOrORYg+tf//y+DpaxGLIbWQOzn/HFFbI
OrTeHXFGaQDUOYC+ZyWXMknaH43TCjBPF8I/HhD0d3dloq6N8gpMbUpCxKRQjEB7TN1KNGhnQhBZ
lzdS14eHtyLPOW7gjyvXMdh/2a43z/jVkd+DSTWYIzYFajJMAAACsmtheRYyqQgNeN8m5pi5uOPq
yKcXbb3cSr3qfem1OdQ//om+smMFZKUTSMUKzKJXkQIOchgPkbDZImhThaUSQU2+czNK+/z13FIV
Tukzbo7b/7ofeTzAmENdX3/i9k/MwPZxJHBTMN/FEcu1I1oD2PcWGary22WFHSU5gUTuew4SsXzo
KLgHpzqO+m4oCvZbzS+H1+/AcAHdhnEOCeselo4j0QtvZILjzV/OGLmU6NLec9NKrHvTMHstMTz4
Nhx3anVRypqcETKRCtPAlAIY7QVoDSkAQjOdmJycdu1AExnm60dSMQ0Th8evm9fn58GZLSqIrj8f
UCAGCoKmAGuGYqWUswbMMAVID2A6GL5wnih6IRH4MP6pdODDDTetoPNQsGTITDDLivyw+R0OCrCj
Bjw3/IJ6LyvOkUjHotdXBA2wQXhMgwwGXiuVLF+O2uDgpz8/Xr1pJVQdsQGutmL3kKL/cI9apHp9
japb1lpbMg2MwO6MRNTfqE9EUa2RU5CKCwxfbxrThgvtXOfFO05yOeNvyrA/LatZIfjTVPdfEU4q
RVhEVjfHAWpzCavdGR51YCUo83a6yOcTE8o3reidJafMwRL6bbNajAgOtNZ1LjSD/swqE+MVQFTp
NSYTZwLqR/GsaWYNfdN0oJv2aQ8dERZyL8L7p1+nh7tJlGU43AsXWKzCNIYmFZyNhZfAHbM+vNHh
fnh4K/Kis+IVkr8NVYwvMMTjt1t3jOPh99dB2AymBhzf6AQRHr4/4FERVIa/JJX5hJ+mHaaVYNP7
bg9sEk18fVkc01kN35fjWUkLmBiMBFS3gho4NChoPIRkSWPWHjtbijQatpXqYZ7Vgb7LvVThnb+f
cGVIBwgBX4N3NgPOwcB8ToYAagelqxQvmv1NXBlH6ZpJmRXrTOqBdo7n/e68e3rdvDwhFQ/nmHpb
fR3Db+gXcwJpMkARSBd3FEECC08i6DgD15SK19ok0ydejs3s72zn+NCdo9wv6PjdPz/88XnTS1QN
PkawbBihmOsJJwwSNxhPjM7ZsaKVvAJi/VuJqo0ok2l09qXlx12xo3thHSoZrdH7gUclRe8rEmIF
TbH622SAi4V6N+ESmYzWSGJlTxI9rRPcPj0cvIpSuX0sgmemowxg7AkE/05h8q9ksGCEYwx2jGf5
3P48DtsKpTc9oTYnGUZuhx1TXY34/+3+KQbKALBM4LAGNZyTAHAtBSW2gFbTWemSYAaq/C1bd7g2
mWnnTFmrqT+71iN+eH5+hM/YqbMGazUnACNEJwe6CVYSJjfgP+GMQ45CfmGC4/FPcLqN7mhmUPPG
ZzOwUza6tK2M8/Dchsmk6puBMVXzHEVmgSikfBNccVjhpYB5lh38F7nn/u1gx1yeE+VBs/vGs1fi
Yf79lHg4kIehT3egNd4+/Yo8GIdTBT8e+jW1B4WrEwHEyJESUcJvsECLTpRa7oqSE8aAE0M2Yik9
99QrtRYTf9qPP8b7Qx4GN0M+f3QO4J6GzYI8k0Im4rKTYPWIIlQucNxdVUGGY59YSnCllXY9N+Y1
U8t5KGogeB7sSVjmtwzxSpZWJQWvUGBFqpABlJALtcY8Z56oCeViUuCJ0qK4u3bTSrbqiKunVakR
2fl/3mDa+ebl/pAnTwcNpWu5XpSSg70bCRKAg/y1rBD+KW0MilPYuu46r1/nWSdO2M6d7ez03DLV
fPcxqtOfTyMOyWeKcYYM08FsJEpCUrLm+lIATYCQwptFHOZMFShd54Nwa/agYPGy+rj9tjmyZQi6
Z0GMYLQbgONESczVFcjFKFCRKhbA2ncCDIhJbKwdrBXE9t7dLPkFPcC1fUh1jzA4BGAh45KGpQUa
vdqWXIEcnGSKCbuZYraaYMQ4IeFo1bCq9UVd+G73iNNQa39HMwmxnvvitdwhguMktk+fmtKCIaQ6
uEpsphwGooQpzIcyAgnXQaUwIUCL0Gx8fJMsjLuxDI3j4unTTSv+pjMnyzrQeORyObq3bTLBu+BJ
DpiWRAE2Ir4hNIjkjOARlP7F73HB2dLc0krvHjrSr+jJ6vEaOrfoBDpkUDMKi97s4q+gbQwANGSB
RaM4gCmDxCI2aSk9WPcp06vj9/UxZyL49XozHcvFfDoOU6OXc16C1x0oqQQBIwQ0JieA087CsYVn
FKbUFlUIfC1PGM1BZ6m5c+YyOcFZ+DO+46aVe9mZjFvt1eWfRwyvBvLXaCK8YEJlqMH4QmwwsD9i
ckWkzLyfBOP/7OF2vejY1XrJD2r6u3dD4u+0xCzplCJlkvCIvPSI3Z2hnnBd4DuVAtZQeSsmzZEE
jexLNTfi9MpM/cjvFl+fVh/HPnN5q3R1muMvtWDS+xpxdFivJzJgFU85ZnsFmpIqMYnwdpCxledU
gej4nmbWa97RQWt14D39+e59z2ylJRbEMMQFbLqBNbGWF02KsjGxDCasVG9pto7EaMVfzSGloRgn
WrZFW89jgF8VKDXmlg6+fx5CsQFgQqpMRlJwYqOVYKlo7ymVkQtxXb3W8/kPMbrhppV40ZnG5uDE
2/z+unmq+SuHXVtxugiBMswpZA6zZTWGmAG5g6UbwA5jws5w+mSkRgpG595Zw4WeUnij0YUsFy/P
j/e1Jc6hAA6QQn2h1hoOAEgTbxiYfliD65Hl0wfPqXWKRcevguuzR52xA5v7bto5dFYJV3RieGB+
zZe9DTPUJdbMh51RhF0DOK75aDQiesD2tmBJNOiuHCPYI5m/BX5oTKnTSTmHW9qpdrSYEdruk6+/
pfv3LZ85mOhg5DFKpEtYvUQFQVIUEjVLQXupokh/F5/5QbhmTr2KIeOWdqaZn379Crr9x+f15nFS
uegjJmwDhPY0A3QVIiN0xZY2AY49hSUKVxVaTJ9xuiB/fFc7m6XrzWbaFmT1/PSw/XXX9vMQQHDV
yTXAi+IkLDySsJhFAEiH1UixoFlzQ+HYtiGfT7idjT8W0/KOC87qIxnmO//exx8m7ugCG4T5bEig
YBcInQIyDVo4zMHecjIXE/8ud/RYvpt2DqI3MTfNJx6ap8w0L0PykIFANXhlg6CBWGEwWgiAxcKq
IrJYCfgyuSTzFf1ZzqhkkGvREVZPVTLqg7R9qXQxfxzNeWZr5ISXIg1nhArMtLQsEAzeEx6oSdrR
aMxlmvLD6KcV0uGWdga6M4PKq96y798dYDRmN1SKJmVrtCwwZm3KiaiM2VM+SOKQXVQbeM+RMZ1j
fpM6hruzYPtwuZler0zQusX0aPnu/n5S+WUKB1RoiZQRM2ysJcFqQYrMYM25GNIFUgUY8QTGuL9v
JVzMTwS7oFPtebTTEJr997Zs0W9dQ8t0yAZhjmsXWQJzEzOSsEGDFUUQpBxANeqSvzoZDMc/bXDi
1WYOi4c5MrFLs+4Fkf74bfm8j2BX1/vQuGjHU1aSL9YCUjVYny+Q7T7AQiNg9whVsNgr+KujR+NH
nQkdjW+7aWew6UxrOeWyrMXvwygIX5kaElfQO12oMHBOE4PxUBEtJRY1L5hrkfkENl3PI9NhpRo9
4YTHeXRHO4fOcWaXKzlvwXM/BHw6XHghF1+rvAKzsLIcQ7uCJ1JKETnzYEzQV5r+u4ecNP1319sp
PPQ+w9Fd/gjH+XbEizLQL0kvwTggPKMvTINmcrQozC80jEWw8afxrvEozeNXHWYT+KOakmK+Ll6/
HE+hWouBL097l0uygTAdAAhYrBMQWBclorNMKSz8O0uMeRx3IpbuibXYi/V58duIaphWml+qhLOJ
OO+wnQQc/JZShY1yQL8FkFFP3slojMmzl51ny9mi2r68f1z8cXBjT6wQb2o5CXwU5J4TNIM8TAVi
OEBKk4yM1l21rJrHnFhazT3tZHpIaiWn9WP7bm34PbbI0PelJUnh+zoXFgRjANVNYVjWV/uuJYnR
BYB8jqLP5so6OPzlvvO4SUVce9tkbuvO3Eyv5Nz/Er9PmERval6PMkh0NJC+ZwXw0USSnUFuHizr
z3AggpoGOxI0vzX66ioofMqZOii83M6gp4NXm/WMIRxd7D8MHKRyxwomhx5B1FoR4INE9MUK4yQB
KzcTaSpETxa2w9v5ew6CnEpF3l1uJ7npTRKbgM4te4TgX75sl9vHXT10DQzVpj3Ui0wDnJ0YDRLW
ZBI4RnV9KiEpA0BTXw7oNuOfMeeb+5rZrMU8T8ZiGLFddO9fnl+fV8+P4evDA/ooWA3r2ttdpwHJ
XQ4UuYUokiaje9b5QIqBpegYqA53VUSxfcopMo7xPe1cOoVTdj0nqG9RDauOCaWpVNV7KpVhgQGW
tFhck+EgTdoQ75jA1i4OFN5VhfeX8cxJLOMon/tYHDW2y+tbtyL+NmSQ0l0Gad1NWYMNxfG7COT0
tTgZl0nBYnzGGfa9vLib6thntABebqXvlNvDH5cToxBjZF/2O3V39GGtnmTBRGUscqLBF2ARy5I1
9lWCDQMWInXCXqp+bcedSLfqSLea9ij58evj6/b1+evq4+yowmYAsmbq1p+1YFe4gqzDeuj+AUDe
RcUJ5ch8WWAlqavQ/JmHNlt6els7wXkfJew1707GkqqV8M7/Y18ACifsrRh8olRoZ5h0u0RRjo3P
lJZYrJ+x31VW8XJUDMc+Y5/A1ZtW1EVH/l1e6/Ezf379+LJZHJEkPZRP+5gxccqQHLGVGFcYWs2B
SM2yiFoyWc72YmlGbkXrFH/AHw81Cdhe+JjPte9RjHQwQkVFdBYKUwDgTHNY3UaddDFLKXNfnuNw
EylsR4qF2Evx4a5Ma1CkE9xaBATIaCewU7aVWDmVTYQ1ql0W9o0C+MenN0JzMfcUueo2br7qp83L
0+axx+GYuMZiL0tiysicaBUcmLIQLiMVPEdQZ2fbtI5HbiVTvCOZPvJi/lzuv25fN02vLTgmrORg
I5gAcFEkGolDQjCWOOUFXqpXkyBfO0wrQSd27eC0Obaqen76NuoEMlCeU53gURhb1IAfYFNarNXG
qkEVJA1Rx2mTqtEoN+2jWOf5dlr1Gz9+ffq0ffp1tzz29W1oPtVQnUsyBqew9zbm4EUNFkI9cYIu
JgSWzVVYevKYE5qjvamZjqSd1ynFtB82smNWzzZsjSE7Y/gFNQhmQGPrtICV4iKZgMZXACganfMs
lnxdC9jdI04c/8PFVnStOqLrnglwALnlPn9DjvRaxlI55OtX2f9ec6wBtySBi1UBDIgONr40oAcU
4GsvCuPqDUuP9vKcuHF3tZ32urMFFVf79B7/SxlQyMFtMJRUcilZwkLKZJEbMmGrhZQMARUJUEEy
MH/4X6TTbXRbK8dNK+1DZwrikKG0ev78x8P2cTOewkD1RKO2SWDZQj1jM4IHxzyJ0fIouA9W6BMs
PeMhW2lE54hQ8uAG+X3xcsxa4DVtwcSkXQgKu1b6gdTVehsILwJXiMu6OaXaQdqHS915uFYnCDLH
oSWhvXclKcI16HfBZCJBaCyO9lJbm6wO6d8hxTxPhNlIrVUHNml9iNF8ffq/7dPodB+iFtmAve0p
CdgjRnglAfhFD6sQ/aIWvmrqf7vxaK0YWvTEELOXt3peYKKkrU6aSsAeafYYIY4YUQVjElCGZEQl
7E9LrSqXqslxyFMvDC5NxOwgIT13Ipez0ZTCLFXYJzmpCEaw8pY4AWiTSp6UTYzbQP9qNGU8w3LF
/ZObmlmbZWdlm+XUwEzbL5/8y3L7+nKgAa/WQtVZNJUik4ON5aNArnk4IREcClrg6A6Jpws0B5PR
TyU1Nzc1s7CLjnVpF1MSoOXj8+rTwTKrbekwMzYx6kmJ2Ac5ZInecU/AXnYqAe5m/iwx0XjIiUgd
k9Gup1xWaPvDZ9msazuAA2PwiFQ3GV2wlUTkWNiUQkTDvZBsDdYHSB0KvdYRMXvQaX/E7NZmcq5D
JekWejWrAHhdrAf2S7rjynfM3NbCZkojYCuVSDYcPeSMwwmOHUoFWDoWC/hSersTfC/JKYfScPWm
nc66N8f1UXsemI+4GxL6ABSCzowMW9xwgFmBUk0SHHmU82CSoScUZ4fqCJ7UecXLmet0vfny6fX5
85dR+pIbcifxJyqknBkTgONViGjIwyq3TDuSvLQhMxNcdNfFgOqD9m8cbzgVCprdeNPOoTuxQ1Hk
Y81GO2YyHep2ZLEMy63xjcKZQAUl3roE4LwATsJkV1u6L3g84kSUDsJZLqcFzT8lzL4eiC+GBPjE
faKCAI5ByAnaw2PzgyA9tZhYkS5EzP8/RbQ/nXBb/9T4q92KddTOik9LFz8/Ll6x4flBF+JSAUNL
SAooOhnsEpy0hqM/cyKZ1Vx6Fak8S9vVDtqKxTuH61qbg1j/+wiGpDjGr4bOkCEGVozJYBIjn0z1
MzDAUsxjJANk9VxMysbGAzUirG1PhF0/Q8Sei9XHzTGTBhecys7zjJUZuHV0qFTggoDmgj2lmfSp
fzaMhmpE2NDOetuwaUb3vjnhx+1//KfbNSUETVK9cklYx7CBn4PTKqM9h30r4MNxw0Lk0bxJrsO+
J+H3d+d7Fn5/186vk+3gNnZ65v2weVluXp6/7DMIamm90TTTyMEg5UhSRZFVAiyIoB1PsKRjDudT
g/aD9gXeX23FXfTEXRx8XyDxZzBGXv7n5fUIkmumny2RCUFAtVbOQNgnwVHiOBUuc4uZ3SfMm8mA
E3E6XsLNMfNr9dvng1qs+lDnKACskVRtYOszCfAf8RRgp4LFKeKUyegwQvvgZcd/vFlNvQv/fB93
2mofSq2uSQ+aQYD9zYpClnytiJfMAOBlMgCEilRdlct5HL3/BY/XW9lXoif7VIX/Y/Na7vdtu4a4
XORaRFDXpHDULQzLVSKGq5zxlhmmqT7vCK5jnoyKlvtWzk6IbQH2/MOqecffdszbduiyUwUVgEpN
+FdrR9fbKBJ751fMy0qJdEQwMDBUygMwQ5RNaVYp7d49RaTQbnT5qArZbu/Xnw35AALJVnc8RMng
2J7BHuwZ24OJNGBIqwY6jx6e9wKeNMUUVpNfSUz5TNTchcrbP8/KbkMHaEuvrGMQAJZgOn+RMxhm
0BWKdaIkVhM3Ve4xTdWw1Lbvcy652ao/R3R1Jpy2oU2aZW1m6RrM2sdl+n6K9S7F2MHJ3ndci2Jt
F0/D9WRMyPNsHWtyAW/g3viM/VaQ9zmZrlWYJly9U8m5RxOz9CxfL9hvwGMBAm3ABrjot/+GymmC
1SkEGH8OFhB3sK6eoLbKXFtSoevg1F85ePSAv8uz3N9W6mzyFt7PyvgeD++IUyw6u98ErVX1l07g
eh5uzuDcEjgY+ONxFVxrpvmGZNL43IEiNUpXjhSpwdb6Z/FzzyB2npt7mUUBqO78Z096QoIFibWr
wV8AsxEEDqxzJjXH8kzKxZUjAKr42/tShVDqzJ5biXGsH/dbVv+sYxChQ14HWh5g74LLCZO77cM7
D0MTuW76quFTO7A9aLQb9TWqOGrEn1u2nOJnu1mrf31KfMRcQ+RB6tT1TIYZ4xaGD2PVLmrBBG4K
J0C97ViaqmOsM2OzNmasU7GR9fZnWl3mLEwAw+QMpwXV8vGQcFyfguclVG4blhSW5KyjnnETX4OZ
c6VfaHFz1+JhXK1UdVIX07I8EBquah6u8buehkUOhRo4tu2YFOZc67eCF6v4O2rSj9vLVC2MFiMb
Go/5Qv5jeP9ttXtZbg7bwc1cr4BTsK/A3tapwCxSV6iuFFJlhuH6Ghg54GX9P7leHbw0+tPyRIpU
+frGS8GNX42ZL/L9zDJDBL6gzIggEKAsqidwxSMA7XEp2Lk+uI3CcQKL2ZcNjhYqXWEYZ4C1Xpkt
IYXQeHSFwjgHf/m0mm4W70cdA+NgGjbwnEaOC5ueECpMXoZHTWmVx7xVJoAaFkWRv/ZlW8Jtsnw+
xKrc79Zr6OYN8OfHq1VG1nGSksUH2eY/0jfy+rbFMB94V+fx20taZN7kP5bZ4cZN0a88zv6eg+c5
f10mN6RM3Cx3vOdP8JmnN0SrNmZpXsQ17tvrhK+h1/4bevhR6RWMQEEPT8NZbtI2epTZFvscTeUx
JHg8VHV8ZwA13aw+CEo63tk+k6M63JBom8eroWk6AyMkb2kGb45NPjSYPqBhz+Zf+iR7B1lPk/l2
l8+Bt92mKNINFJOhwwd62KP0S1/5Dm5hvFilgAPpHzEDnhF5h5t5uhmCsmthTwekR0q6NWBlU4XO
UJv0NGiq0kJEPccBUkSZydF4ekeiv75J0nE9jmfRg3urDE9XF+j+tuKPCJ5Ch6KW5Rh50wasc9ua
IOiyMNgvXUfQrDi8sPxH1gGLoGKZvaLuwASzAYnfFZrS/IMJzkGofL0nX8cReSkPeAPkT9ukyY1O
L4D2ysiiNOkjKHfAQwoPfzzcIiBOcZLAz4wAZ+j/VZ5IX5kUcQjExRYy3Tx1DQefKKF7ezv1yeXx
0igI4QG0Fyfr5abfCW3QiXIfuf6EjB7cmehGy8CICJX7HB4tuXLBvE1DUKJ5wYIbyQugNmL9ni4w
9jMsBuUCVgCdz4UbudcYcEAbAHQcuiN5BZZRGNf5/HZ8N5ECHnDnRakxsBFrJP+MLuOklA0sBH24
G/tTcZkFxuARrAulJWjYdEPaHLHu1WANltDbxwW85uQzWhtNI/eWXH2yAz4qQf8gIFa7rCbkpXAX
l2NQlAGiKP8CUEsDBBQAAgAIAFWIHUkZkBCE+gMAAGwLAABSABwAc3B1dG5pay9Db25mb3JtYW5j
ZS8xMl9TdGF0ZW1lbnQvMTIuMTNfVGhlX3Rocm93X3N0YXRlbWVudC9TMTIuMTNfQTJfVDItc3Rk
ZXJyLnR4dFVUCQADIc3EVyHNxFd1eAsAAQT1AQAABBQAAADFVttu4zYQfddX6Cmwg7TWXbZRBNi1
HdS7ycaIjPihWASUOIrVpUmBonLp13eoa+xknQ1QoC+CRM6cc+bCoT5F0eJmvbz+Zl58Wl4u5lMz
K2bA2GBojG4FK3dQjOZEkdFiE402EH/N1CgSpUxg9IU8kCiRWa5mQsJIllxlO1yOZl+iW8JKWHKW
cSh+3w58yxqaUxO3plN8IL552nxUltMpaVjNRPBCGbZpmtaTbaXUjdPQMjfri5kkxdZwmg1IYuKm
E/Moitui+OMwtMa18XorxWOUiBztlX5fPCWQq0zwQbW/eIIkUkTB6dke+tDwWjjLtmhC691fgug5
Tw5B/RZ04rqU+ibDnKm7gonHu5yo7V2FbwSdlWcHXtpYAVfy2Qh7hEnsgvmwW+j1tegLZIxbm9Ci
XkgaDcv1TFBMA6DeUkEt/vaqVb2SQokZYexCkh2cDo1JixJMLCdIa6slVyBzCfg8QEL/e/RcVGsk
Zl063kjxdfw3JAo5bKspcAqh51v1PjxgskiL+8q9bkgdS134gySf6faZTr+RH0BXSv7RgDQlOz9B
Ursn9cdQe+dSpBkDujhOvqrMMn5/A6QQ/D+T5FSS7ABcP4xjE8+ePmYa4YpkHDsKCO3E/O9q3U6t
64/Hvdp2QGBHCsaqFmkELvlGSEYHB6ZvSOks5tdXG0nyHGTl+nKrUzMHRTJW6E7yek0Bob+i6SNi
3mL0W0bPSWl4yLhgsMMj252SevVdTsQNOlw7mSQ/xcVTmBPZ4eqareFJrUSRaaGvYzjwv4R7kjyv
n3OIyjwXUiF1WFP7xPMc8oL6z/XVZe1+U3Kuk4gXwGFEDfJp00BviEGGcc9gxeQYQztdKrAVKYob
SHU/HvKdH+WbNHyT0LJ8f59vLpJSI6yILPZiKi6EXJGyALqWAJ/LjFGQeEk6Vo9m0+A4Wl7u8rX4
ATz7B+SlEPngqHn0zBOc/lyUxRW2w5kZC8FeVG+FcBEUBUaHcTl2qyRIHZt+QMmHVCCR0xEB2PAB
omWK1SgyvAk+Sul2WbZt/DjqrQcEp3WTtA2i3yMlce4tdzk7P9H5asaD79IwdF70wRwSJKX6r+dt
6M/PCoo+gtZoIzO8A/F4JVsi63bDxi95kd1zoCYT/B5ZmxHh+7a1F8k+ClLRSsHgKFgzF3wvieMQ
XoNdCkI1WCJ2u0y9j9ccdho749Cj5m9/IWJ1+etoq4ueEzY073q86XfDGbdeQeDjeai8dGFuAAdS
gTJIdQAlJJA91ImdPmZqq1/qaadRJi2K5VspqVF6iwMBe1jfDddqnd0xqQdvJbuOf8ayarzVqhVQ
vTz4SbJOD+qH/1lDw7W7RIOTWu8lusJ/jfIvUEsDBAoAAAAAAGCIHUkAAAAAAAAAAAAAAAA5ABwA
c3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuMTRfVGhlX3RyeV9TdGF0ZW1lbnQv
VVQJAAMzzcRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABgiB1JoyK5OxsEAACCCwAAUAAc
AHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjE0X1RoZV90cnlfU3RhdGVtZW50
L1MxMi4xNF9BNS1jcmFzaC1sb2cudHh0VVQJAAMzzcRXM83EV3V4CwABBPUBAAAEFAAAAMVW227j
NhB911foKbCDdE1JlmULRYBd20G9m4thGfFDUQSUOLLVlUmBonLp13eoa+xkvRugQF8EiZw55wxn
hqNbYUaS5jszFVszFgVn+JTmrNhnK+AM5FoC+JZlDe1PhpErJgrlly8gpW98DoL5ar24uzWvPi+u
5zPfTPIppGmvbwzuRVrsIR/MqKKD+SYYbCD8lqhBIAoZweArfaRBJJNMTYWEgSy4Sva4HEy/Bvc0
LWDB04RD/mnXcwnpm76JW76PD8Q3z+uP0tL3ac1qRoLnyrBM0yTPFqEOC2OPmJv11VRHadj1xsRx
qRNPzJMoTmMc2Z5HxpXxeifFUxCJDO2Vfp8/R5CpRPBeuT9/hihQVMH5xQF63xg2cKOQsIhVu78E
0XGeHYO6DWjMHMZcM8UzUw95Kp4eMqp2DyW+MWqtwBoN49oKuJIvhtftkch2DvbGHfokdMB83M/1
+lp0yTMmjQ2jbOjRWt9iPRUMjwgwlkJBFdj9TRPRUgolpjRNryTdw3nfsEiD4hB7FFdWC65AZhLw
eYSE/lv0nJdrNEzbo3rn+O/CvyFSmsNqEjD2hi6p9uERD5I2uG/cq2LVsVRFcZSAC11avn9LvwNb
Kvl7DVKn8/IMSe2O1B1D5Z1JEScpsPlp8mVplvDtCmgu+H8mySklYU8zxwtDE/tSt6BGuKEJx2oD
ylox/7vaYavWcsfjTm1zeWBFijQtS6QWuOAbIVPWOzJ9R0prMbu72UiaZSBL19dbrZoZKJqkua4k
t9M0ouxXNH1EzHuMo4YRSMy8Y8Z5Cnts2bZLqtWfciKu10YSR5Poh7jYhRmVLa7O2Rqe1VLkiRb6
NoYj/2vY0uhl/ZJBUGSZkAqpxxU1IWDb9BX1H+ub68p9VXCuDxGHw3FENfJ5XUDviEGGScdAQnqK
obldSrAlzfMVxLoej/kuT/HZpOEjQFz3kG8mokIjLKnMD2LKr4Rc0iIHpmftlyJJcbbiALWtDs1i
o9NoGQ7stfgOPPkH5LUQWe+kefDCI5wMXBT5DZbDhRkKkb7K3hLhAshzjE7HZbdKmG2xDyj5kAok
clqiCCz4ANEixmzkCU6Cj1IOW8rYQv6T3vqC4KwqkqZA9HugJN57i32WXp7p86quBxJTz/XsV3Uw
gwhJmf4jeh/6y4uCvIugMdrIBGcgtle0o7IqNyz8gufJlgPDfze+RdZRzRpSOIjkEAWpWKmgdxLM
a8BGk9CDt2DXgjINFon9PlE/x6ubfWxFxBsy87c/EbEc/jractBzmvbNhw7P/8uwJ41XDC52V+ml
E7MCvJBylEHLBpQQQfJYHaz/lKidfqluO0RxSIMyYZiTCqWzOBJwgIXOVuPMCK0u3lJ2Ff80Tcrr
rVKtgOnl3g8O6/wof/if1TeMfwFQSwMEFAACAAgAYIgdSUjoESzuAwAAQgsAAE0AHABzcHV0bmlr
L0NvbmZvcm1hbmNlLzEyX1N0YXRlbWVudC8xMi4xNF9UaGVfdHJ5X1N0YXRlbWVudC9TMTIuMTRf
QTUtc3RkZXJyLnR4dFVUCQADM83EVzPNxFd1eAsAAQT1AQAABBQAAADFVltv4kYUfudX+CmCKC1j
G2NAVaRdICpbskEYhYeqisae4+Du4LFmxrn01/eMr4Gw7Eaq1BdkPOd833eu409BMF9vFndfrZtP
i+V8NrESNQXOu71O/17wfA+qP6Oa9ufboL+F8I9E9wORywj6X+gTDSKZZHoqJPRlnupkj6+D6Zfg
nvIcFilPUlC/7roeIT1rYuHRZII/iG9dVn8Ky8mEVqxWJFKlO7ZlWeTFJtRlYewTa7u5mUqqdh2n
Ohi7HnXjsXUWxa2NI8f3yag03uykeA4ikaG9Ns/zlwgynYi0W5zPXyAKNNVweXWA3usMarhhSFjE
ytOfgmg5L45BvRo0Zi5jnsUxZ/pBcfH8kFG9eyjwO8PGCuzhIK6sINXyteO3ZyRy3IOzUYs+Dl2w
nvZz834j2uJ1xrUNo2zg00rfYjMVDFMEGEuuoQzs/raOaCWFFlPK+Y2ke7jsdWxSo7jEGcal1SLV
IDMJ+HuEhP6P6Dkv3tGQN6k6kf678G+ItOGw6wKM/IFHynN4wkTSGvede9msJpayKY4KcGVaazL5
Sr8BW2n5WwVSlfP6AkmdltQbQemdSREnHNj8PPmqMEvSxzVQJdL/TJJbSLLtAXP9MLRwLs0IGoRb
mqTYbUBZI+Z/Vzto1NreaNSqrZcHdqTgvGiRSuAi3QrJWffI9ISUxmJ2d7uVNMtAFq5vjxo1M9A0
4cp0ktdqGlL2M5o+IuYU47BmBBIz/5hxzmGPI9tMSfn2h5yI6zeRxNE4+i4uTmFGZYNraraBF70S
KjFC38dw5L+ERxq9bl4zCPIsE1Ij9aikJgQch76h/n1zuyzd13mamiTi5XAcUYV8WTXQCTHIMG4Z
SEjPMdTbpQBbUaXWEJt+POa7PsfnkJqPAPG8Q76ZiHKDsKJSHcSkboRc0VwB20iAz3nCGUi8QB27
RbPZ8Dxalu+zjfgGafIPyKUQWfesefCaRngzpCJXt9gOV1YoBH9TvRXCBaAURmficholzLHZB5R8
SAUSuQ1RBDZ8gGgRYzVUgjfBRykHDWVsI/9Zb7MgUlY2Sd0g5jnQEvfeYp/x6wuTr3I9kJj6nu+8
6YMZREjKzBfRaejPrxpUG0FttJUJ3oE4XtGOyrLdsPHzVCWPKTCLi/QRWYcVa0jhIJJDFKRihYLu
WTC/BhuOQx/egy0FZQYsEvt9on+MVw37yI6IP2DWL38iYnH5m2iLiz6lvGc9tHiTvzrOuPaKwcPp
KrxMYdaAC0mhDFoMoIQIkqcysZPnRO/MQ7ntEMUlNcqYYU1KlNbiSMABFjrbtTMjtFy8hewy/ilP
ivVWqtbAzOvud5J1eVQ//M7qdf4FUEsDBAoAAAAAAGCIHUkAAAAAAAAAAAAAAAAsABwAc3B1dG5p
ay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuMV9CbG9jay9VVAkAAzPNxFdfzcRXdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAGCIHUk7h6s0IwQAAKwLAABCABwAc3B1dG5pay9Db25mb3JtYW5j
ZS8xMl9TdGF0ZW1lbnQvMTIuMV9CbG9jay9TMTIuMV9BNS1jcmFzaC1sb2cudHh0VVQJAAMzzcRX
M83EV3V4CwABBPUBAAAEFAAAAMVW227jNhB911foKbCD7VqSdbNQBNi1HdTbXAzLiB+KRUCJI1td
mRQoKpd+fYe6xk7W2QAF+iJI5Mw5Z4YzQ91wPRak2OkZ3+oJLxnFp9Bn5T5fAaMg1gIgME3Tsj9r
WiEpL2VQvYAQgfYlDOer9eL2Rr/8sriazwI9LaaQZYOhNrrjWbmHYjQjkozmm3C0gejPVI5CXooY
Rt/IAwljkeZyygWMRMlkusflcPotvCNZCQuWpQyKz7uBYxhDPdBxKwjwgfj6efNRWQYBaVj1mLNC
aqau68aTafjexEk8Q9+sL6cqSs1qNjzPtMfJRD+JMm6NEzA9w6+N1zvBH8OY52gv1fv8KYZcppwN
qv35E8ShJBLOPx2gDzW7hSMuoTGtd38Jouc8OwZ12kjHPqXU0TPMmbwvMv54nxO5u6/wNbezmkSu
nTRWwKR41rx+bxyNQX/Yz9X6mvcHpPmtjel6tkcaDYv1lFNMA6DeUkIt/u66Vb0UXPIpybJLQfZw
PtQmLYoBxHKT2mrBJIhcAD6PkNB/i57zao1EWZeON1J8G/0NsUQO02iTbJu2Y9T78IDJIi3uK/e6
IFUs9cEfJfmTKp8guCE/gC6l+L0BaY7s4gxJzZ7U8aH2zgVP0gzo/DT5sjJL2XYFpODsP5Nk1ZIS
34+8KNKx91SbKYRrkjKsKCC0E/O/qx13aieO7/dq2wGBFcmzrCqRRuCCbbjI6ODI9A0pncXs9noj
SJ6DqFxfbnVqZiBJmhWqkuxeEzbsr2j6iJi3GJ2WceIn1DtmnGewx5btuqRefZcTcd0O14sn8U9x
sQtzIjpcdWZreJJLXqRK6OsYjvyvYEvi5/VzDmGZ51xIpPZqarAnxCIvqP9YX1/V7quSMZVEvACO
I2qQz5sCekMMMvg9gxGRUwztdKnAlqQoVpCoejzmuzjJN2n4xrFrOM4h34zHpUJYElEcxFRccrEk
ZQFU3adfyzTD+xMvScvo0UzqnkbL8VJe8x/A0n9AXHGeD06ah88sxunPeFlcYzl80iPOsxent0S4
EIoCo8O4LLNT4lgm/YCSD6lAIqsjssGEDxAtEjyNIsWb4KOU447SM/HjpLcaEIzWRdIWiHoPpcC5
t9jn2cWZylczHihY1LNe1MEMYiSl6q/nbeivzxKKPoLWaCNSvAOxveIdEXW5YeGXrEi3DCj+n7Et
sjYjgiauexDJIQpS0UrB4CSY24JZZuTBa7ArTqgCi/l+n8r38epmN13HI55N9d/+QsTq8lfRVhc9
I9lQv+/xgu+a5bdeke9gP1Re6mBWgAOpQBmkakABMaQPdWKDx1Tu1Es97RTKpEVxPCMhNUpvcSTg
AOu7NjZaZ5+QevBWsuv4p1lajbdatQSqlgc/Sdb50fnhf9ZQG5tdom0rMd5LdIX/GkX7F1BLAwQU
AAIACABgiB1JZVSWSvgDAABsCwAAPwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50
LzEyLjFfQmxvY2svUzEyLjFfQTUtc3RkZXJyLnR4dFVUCQADM83EVzPNxFd1eAsAAQT1AQAABBQA
AADFVttu4zYQfddX6Cmwg7SWZN1sFAF2bQf1brIxIiN+KBYBJY5idWlSoKhc+vUd6ho7WWcDFOiL
IJEz55wZzgz1KYoWN+vl9Tfz4tPycjGfmlkxA8YGQ2N0K1i5g2I0J4qMFptotIH4a6ZGkShlAqMv
5IFEicxyNRMSRrLkKtvhcjT7Et0SVsKSs4xD8ft24FnW0JyauDWd4gPxzdPmo7KcTknDaiaCF8qw
TdO0nmwrDCZeGljmZn0xk6TYGk6zEQS2O04n5lGUcWucgh1YYW283krxGCUiR3ul3xdPCeQqE3xQ
7S+eIIkUUXB6toc+NNwWjviEJrTe/SWInvPkENRrIx2HlFLPZJgzdVcw8XiXE7W9q/ANv7OaxL6b
NlbAlXw2gn5vHI/BfNgt9Ppa9AdkhK2N7QduQBoNy/VMUEwDoN5SQS3+9qpVvZJCiRlh7EKSHZwO
jUmLYgFx/LS2WnIFMpeAzwMk9L9Hz0W1RmLWpeONFF/Hf0OikMO22iS7tutZ9T48YLJIi/vKvS5I
HUt98AdJPtPlM51+Iz+ArpT8owFpjuz8BEntntQLofbOpUgzBnRxnHxVmWX8/gZIIfh/JsmpJaVh
GAdxbGLv6TbTCFck41hRQGgn5n9XO+7UTrww7NW2AwIrUjBWlUgjcMk3QjI6ODB9Q0pnMb++2kiS
5yAr15dbnZo5KJKxQleS22vChv0VTR8R8xaj1zJOwpQGh4wLBjts2a5L6tV3ORHX73CDZJL8FBe7
MCeyw9VntoYntRJFpoW+juHA/xLuSfK8fs4hKvNcSIXUQU0N7oQ45AX1n+ury9r9puRcJxEvgMOI
GuTTpoDeEIMMYc9gxeQYQztdKrAVKYobSHU9HvKdH+WbNHzjxLc8b59vLpJSI6yILPZiKi6EXJGy
ALqWAJ/LjFGQeEk6Vo9mU/84Wl7u8rX4ATz7B+SlEPngqHn0zBOc/lyUxRWWw5kZC8FenN4K4SIo
CowO43LsTonn2PQDSj6kAomcjsgFGz5AtEzxNIoMb4KPUo47ysDGj6PeekBwWhdJWyD6PVIS595y
l7PzE52vZjxQcGjgvKiDOSRISvVfz9vQn58VFH0ErdFGZngHYnslWyLrcsPCL3mR3XOgJhP8Hlmb
EUFT39+LZB8FqWilYHAUzG/BHDsO4DXYpSBUgyVit8vU+3h1s9u+F5DApeZvfyFidfnraKuLnhM2
NO96vOl3wwlbrzj0sB8qL30wN4ADqUAZpGpACQlkD3Vip4+Z2uqXetpplEmL4gVWSmqU3uJAwB7W
d2Nstc4hIfXgrWTX8c9YVo23WrUCqpcHP0nW6cH54X/W0BjbXaJdJ7XeS3SF/xrlX1BLAwQKAAAA
AABUiB1JAAAAAAAAAAAAAAAAOwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEy
LjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvVVQJAAMgzcRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAABUiB1JAAAAAAAAAAAAAAAAVgAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50
LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvMTIuNi4yX1RoZV93aGlsZV9zdGF0ZW1lbnQvVVQJ
AAMgzcRXX83EV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABUiB1JgHt84pEAAAD6AAAAbgAcAHNw
dXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMv
MTIuNi4yX1RoZV93aGlsZV9zdGF0ZW1lbnQvUzEyLjYuMl9BMi1jcmFzaC1sb2cudHh0VVQJAAMg
zcRXIM3EV3V4CwABBPUBAAAEFAAAALXOsQ6CMBCA4d2nuI2pljYGlFmciCaNTsaQ0p7QBDlyLTG8
vbyE6798f23MzVRwsWFED4mA0XrI5CMiR9ktYfQdJdmEji2vsqE+ynOw/UQxBWdwJk5bWT6zwckj
3xmx1bkqRH4UuhBa5eXh1OI3KlXuHds4ZBU8a+aJQL/gShAXN8B784EYfGB0iXit/jyx+wFQSwME
FAACAAgAVIgdSa0v66D0AwAAQgsAAGsAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzEyX1N0YXRlbWVu
dC8xMi42X0l0ZXJhdGlvbl9TdGF0ZW1lbnRzLzEyLjYuMl9UaGVfd2hpbGVfc3RhdGVtZW50L1Mx
Mi42LjJfQTItc3RkZXJyLnR4dFVUCQADIM3EVyDNxFd1eAsAAQT1AQAABBQAAADFVttu4kgQfecr
/BRBlF1sg7FBq0gzQLTMkgmKUXhYraJ2dxG807it7nYu+/Vb7fYlkAwzkVbaF2RcVeecunS1P8Xx
/Ha9uPnqXH1aLOeziZOqKXDe7XX6d4IXe1D9GdGkP9/E/Q0kf6S6H4tCUuh/IY8kpjLN9VRI6Msi
0+keX8fTL/Ed4QUsMp5moH7ddQPX7TkTB02TCf4gvnNe/Sk9JxNSsTpUZEp3PMdx3GfPHY2jYBu6
zmZ9NZVE7Tp+ZQjG7nCwHTsnUQY1ise80I2s83onxVNMRY7+2jzPnynkOhVZt7TPn4HGmmg4vzhA
73WGNTcNCKPMWn8KouU8OwYNao1ByBgLHI410/eKi6f7nOjdfYnfGTVeUTIabisvyLR86YStjVB/
cGCLWtsgGYDzuJ+b92vRNq8zrn0GQTgMSaVvsZ4KhiUCzKXQYBO7u64zWkmhxZRwfiXJHs57Hc+t
UHxG/NHWei0yDTKXgL9HSBj/gJHz8h1JeFOqd8p/k/wNVBsOr27AwBsGrrXDIxaS1Lhvwu2wmlzs
UBw14MKM1mTylXwDttLytwqkauflGZL6LWkQgY3OpdimHNj8NPmqdEuzh1sgSmT/maSBlcRI5IZJ
4uC5NEfQIFyTNMNpA8IaMf+72mGtNoQgilq19fLAiRSclyNSCVxkGyE56x65viOl8ZjdXG8kyXOQ
ZehrU6NmBpqkXJlJClpNI8J+RtNHxLzHOGp6xrYsPGacc9jjkW1OiX37Q07EDRtcSsf0u7h4CnMi
G1zTszU865VQqRH6Noej+CU8EPqyfskhLvJcSI3UkaWmo2jrk1fUv6+vlzb8tsgyU0S8HI4zqpDP
qwF6RwwyjFsGNyGnGOrtUoKtiFK3sDXzeMx3eYrPr5YYDZLEDYJDvpmghUFYEakOclJXQq5IoYCt
JcDnIuUMJF6gvteieWx0Gi0v9vlafIMs/QfkUoi8e9I9fsko3gyZKNQ1jsOFkwjBX3VvhXAxKIXZ
mbz8RgnxPfYBJR9SgUSDhmgMHnyAaLHFbqgUb4KPUg4bSuoh/8losyAyZoekHhDzHGuJe2+xz/nl
malXtR6o6/uh/2oOZkCRlJkvovehP79oUG0GtdNGpngH4vGiOyLtuOHgF5lKHzJgDhfZA7JWK4J6
QXKQySEKUrFSQfckWFiDeaMkhLdgS0GYAaNiv0/1j/HsYfeGIX4kDJnzy5+IWF7+Jtvyos8I7zn3
Ld7kr44/rqMSP8DTVUaZxtwCLiSFMkh5ACVQSB9tYSdPqd6ZB7vtEGXg1iiB526JRWk9jgQcYGGw
VwdHQ2IXbynb5j/labnerGoNzLzufqdY50f9w++sXudfUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAA
AABUABwAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3Rh
dGVtZW50cy8xMi42LjNfVGhlX2Zvcl9TdGF0ZW1lbnQvVVQJAAMgzcRXX83EV3V4CwABBPUBAAAE
FAAAAFBLAwQUAAIACABUiB1JgHt84pEAAAD6AAAAbAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJf
U3RhdGVtZW50LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvMTIuNi4zX1RoZV9mb3JfU3RhdGVt
ZW50L1MxMi42LjNfQTEtY3Jhc2gtbG9nLnR4dFVUCQADIM3EVyDNxFd1eAsAAQT1AQAABBQAAAC1
zrEOgjAQgOHdp7iNqZY2BpRZnIgmjU7GkNKe0AQ5ci0xvL28hOu/fH9tzM1UcLFhRA+JgNF6yOQj
IkfZLWH0HSXZhI4tr7KhPspzsP1EMQVncCZOW1k+s8HJI98ZsdW5KkR+FLoQWuXl4dTiNypV7h3b
OGQVPGvmiUC/4EoQFzfAe/OBGHxgdIl4rf48sfsBUEsDBBQAAgAIAFSIHUmM+9gU+QMAAGwLAABp
ABwAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3RhdGVt
ZW50cy8xMi42LjNfVGhlX2Zvcl9TdGF0ZW1lbnQvUzEyLjYuM19BMS1zdGRlcnIudHh0VVQJAAMg
zcRXIM3EV3V4CwABBPUBAAAEFAAAAMWWXW/iOBSG7/MrclVB1V3yQUhAq0ozQLXMtFNEULlYjSrH
PinZMXHkOP3YX7/H+SyUoVNppb1BIT5+3tfHx8f5FIbz1Xpx+828+rS4ns8mZpJPgfNe3xjcCV7s
IB/MiCKD+SYcbCD6mqhBKApJYfCFPJKQyiRTUyFhIItUJTt8HU6/hHeEF7BIeZJC/vu251lW35yY
ODSZ4A/yzfP6Txk5mZBa1aQizZVhm6ZpPdvWiAVe7FvmZn01lSTfGk494DFr6MZj8yTFbSges30r
qILXWymeQioyjFf6ef5MIVOJSHvl+PwZaKiIgvOLPXrfGDY4yyOMsmr0lxCd5tkh1GugY58x5pkc
c6bucy6e7jOitvcl3xi1UUE0GsZ1FKRKvhh+N+ZGLpiPu7l+vxbdBhlBE+N7/tAntYfFeioYpgHQ
b6GgMn9307heSqHElHB+JckOzvvGuKGMGHFGcRW1SBXITAL+HpBw/gPOnJfvSMTbdBxJ8W30N1CF
GrbVJNm1h55VjcMjJos03DfTq4LUa6k2/iDJF7p8JpNv5AewpZJ/1JB6yy7PUNTuRL0AqtmZFHHC
gc1Piy/LsCR9WAHJRfqfWXIqSwwC248iE8+ePmaacEOSFCsKCGvN/O9u3catH3tB0LltGgRWpOC8
LJHa4CLdCMlZ7yD0iJU2YnZ7s5Eky0CWU18PtW5moEjCc11Jw87TiLBf8fQRM8cUvXbPIGb+oeKc
ww6PbHtKqrfvaiJ31HIZHdOfcvEUZkS2XL1na3hWS5En2ujbNRzMv4YHQl/WLxmERZYJqVDar6Qp
GVsOeSX95/rmupq+KtJUJxEvgMMV1eTzuoCOmEGFoFOwInJKoekuJWxJ8nwFsa7HQ73Lk3rjWm8c
Ucvz9vVmghaasCQy31tTfiXkkhQ5sLUE+FwknIHES9KxOprNRqdpWbHL1uIHpMk/IK+FyHonw8OX
lGL3T0WR32A5XJiREPzV7i0RF0Ke4+pwXY7dOokcm33AyYdcoJDTChGw4QNCixh3I0/wJviopNtK
Mhv/nJytG0TKqiJpCkQ/h0pi31vsMn55pvNVtwc6dFzfeVUHM6AoyvRXz3H05xcFebeCJmgjE7wD
8XjRLZFVuWHhF2mePKTATC7SB1StWwT1PLq3kn0KSrHSQe8kbNTA8Irw4S3sWhCmYVTsdol6n1cd
dnsY6c8EZv72FxLLy1+vtrzoU8L75n3Hm3w3nKCZFbkenodylt6YFWBDytEGKQ+gBArJY5XYyVOi
tvqh6naaMm4oyIhJRekiDgzssb4brtVMDvDTrGy8pe1q/VOelO2tcq2A6de9nyTr/GD/8Durb7h2
m2jixNZ7iS75byn/AlBLAwQKAAAAAABUiB1JAAAAAAAAAAAAAAAAPQAcAHNwdXRuaWsvQ29uZm9y
bWFuY2UvMTJfU3RhdGVtZW50LzEyLjdfVGhlX2NvbnRpbnVlX1N0YXRlbWVudC9VVAkAAyDNxFdf
zcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAFSIHUmAe3zikQAAAPoAAABWABwAc3B1dG5pay9D
b25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuN19UaGVfY29udGludWVfU3RhdGVtZW50L1MxMi43
X0E5X1QxLWNyYXNoLWxvZy50eHRVVAkAAyDNxFcgzcRXdXgLAAEE9QEAAAQUAAAAtc6xDoIwEIDh
3ae4jamWNgaUWZyIJo1OxpDSntAEOXItMby9vITrv3x/bczNVHCxYUQPiYDResjkIyJH2S1h9B0l
2YSOLa+yoT7Kc7D9RDEFZ3AmTltZPrPBySPfGbHVuSpEfhS6EFrl5eHU4jcqVe4d2zhkFTxr5olA
v+BKEBc3wHvzgRh8YHSJeK3+PLH7AVBLAwQUAAIACABUiB1Jxki8HfYDAABCCwAAUwAcAHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjdfVGhlX2NvbnRpbnVlX1N0YXRlbWVudC9T
MTIuN19BOV9UMS1zdGRlcnIudHh0VVQJAAMgzcRXIM3EV3V4CwABBPUBAAAEFAAAAMVW227jNhB9
91foKbCDtJZky5KMIsCu7aDeOhsjMuKHoggochSrS4sCSeXSr+9Q19jJejdAgb4YsmbmnDOcC/Up
iha3m+XNV+vq03K1mE+tVM2A8/6gN7wTvNiDGs6JJsPFNhpuIf4j1cNIFJLC8At5JBGVaa5nQsJQ
FplO9/g6mn2J7ggvYJnxNAP1667v2fbAmlpomk7xB/Gt8/pP6TmdkprVoiJTuudYlmU/O3Yc25PE
t63t5momidr13NpASOCNktA6iTJqUEae69tB5bzZSfEUUZGjvzbPi2cKuU5F1i/ti2egkSYazi8O
0Ae9ccPNWMwoq6w/BdFxnh2Deo3GSQKMeRbHM9P3ioun+5zo3X2J35s0Xr5NJ+Ok9oJMy5ee39li
6o4ObEFnG8cjsB73C/N+I7ri9cLGZ8yCsU9qfcvNTDA8IsBcCg1VYnfXTUZrKbSYEc6vJNnD+aDn
2A2KF7uTpPJaZhpkLgF/j5Aw/gEjF+U7EvP2qN45/pv4b6DacDhNAWJ37NmVHR7xIEmD+ya8alaT
S9UURwW4MK01nX4l34CttfytBqnLeXmGpG5H6gVQRedSJCkHtjhNvi7d0uzhFogS2X8maVRKctw4
YX4cWziXZgQNwjVJM+w2IKwV87+rHbdqYy8IOrXN8sCOFJyXLVILXGZbITnrH7m+I6X1mN9cbyXJ
c5Bl6GtTq2YOmqRcmU7yOk0Twn5G00fEvMc4qRmpTbBqx4wLDnsc2XZKqrc/5ERcv8UNaUi/i4tT
mBPZ4pqabeBZr4VKjdC3ORzFr+CB0JfNSw5RkedCaqQOKmonsKlLXlH/vrleVeG3RZaZQ8TL4Tij
Gvm8bqB3xCBD2DHYMTnF0GyXEmxNlLqFxPTjMd/lKT7Xrvn8UWB73iHfXNDCIKyJVAc5qSsh16RQ
wDYS4HORcgYSL1DX6dAcNjmNlhf7fCO+QZb+A3IlRN4/6R69ZBRvhkwU6hrb4cKKheCvqrdGuAiU
wuxMXm6rxHcd9gElH1KBRKOWaAIOfIBomWA1VIo3wUcpxy1l6CD/yWizIDJWNUnTIOY50hL33nKf
88szc171enCcMPHdV30wB4qkzHwRvQ/9+UWD6jJonLYyxTsQx4vuiKzaDRu/yFT6kAGzuMgekLVe
EY7LgoNMDlGQipUK+ifB/AYsHMU+vAVbCcIMGBX7fap/jFcPexgktj9m1i9/ImJ5+Ztsy4s+I3xg
3Xd40796bj3AYeiCh9NVRpnC3AIuJIUySDmAEiikj9XBTp9SvTMP1bZDlJHdcFNmJ6RC6TyOBBxg
YbDTSLDxDi8Xbym7yn/G03K9Vao1MPO6/53DOj+qH35nDXr/AlBLAwQKAAAAAABUiB1JAAAAAAAA
AAAAAAAAKwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTNfRnVuY3Rpb25fRGVmaW5pdGlvbi9VVAkA
AyDNxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAAAABKABwAc3B1
dG5pay9Db25mb3JtYW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9uLzEzLjJfQ3JlYXRpbmdfRnVu
Y3Rpb25fT2JqZWN0cy9VVAkAAyDNxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAFSIHUmA
e3zikQAAAPoAAABlABwAc3B1dG5pay9Db25mb3JtYW5jZS8xM19GdW5jdGlvbl9EZWZpbml0aW9u
LzEzLjJfQ3JlYXRpbmdfRnVuY3Rpb25fT2JqZWN0cy9TMTMuMi4xX0E4X1QyLWNyYXNoLWxvZy50
eHRVVAkAAyDNxFcgzcRXdXgLAAEE9QEAAAQUAAAAtc6xDoIwEIDh3ae4jamWNgaUWZyIJo1OxpDS
ntAEOXItMby9vITrv3x/bczNVHCxYUQPiYDResjkIyJH2S1h9B0l2YSOLa+yoT7Kc7D9RDEFZ3Am
TltZPrPBySPfGbHVuSpEfhS6EFrl5eHU4jcqVe4d2zhkFTxr5olAv+BKEBc3wHvzgRh8YHSJeK3+
PLH7AVBLAwQUAAIACABUiB1JZN4cifYDAABCCwAAYgAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTNf
RnVuY3Rpb25fRGVmaW5pdGlvbi8xMy4yX0NyZWF0aW5nX0Z1bmN0aW9uX09iamVjdHMvUzEzLjIu
MV9BOF9UMi1zdGRlcnIudHh0VVQJAAMgzcRXIM3EV3V4CwABBPUBAAAEFAAAAMVW227jNhB991fo
KbCDtNbFsmSjCLBrO6i3zsaIjPihKAKKHMXq0qJAUbn06zsUdYmdrHcDFOiLIWtmzjlz4VCfomhx
u1nefLWuPi1Xi/nUSosZcN4f9IZ3gpd7KIZzoshwsY2GW4j/SNUwEqWkMPxCHklEZZqrmZAwlGWm
0j2+jmZfojvCS1hmPM2g+HXX9217YE0tNE2n+IP41nn9p/KcTknNalGRFarnWJZlPzu253tuEtjW
dnM1k6TY9dza4I5ix0sm1kkUr3FmAQR2aJw3OymeIipy9Ff6efFMIVepyPqVffEMNFJEwfnFAfqg
N2rgQjtglBnrT0F0nGfHoH6TqeMSxnyLY83UfcHF031O1O6+wu+NWy8vHI+S2gsyJV96QWcLqOsd
2MLOZsceWI/7hX6/EV3zepMmrcQejQJS61tuZoJhiQBzKRWYxO6um4zWUigxI5xfSbKH80HPsWsU
CAN3nBivZaZA5hLw9wgJ4x8wclG9IzFvS/VO+W/iv4EqzeHUHAGDkW8bOzxiIUmD+ybcDKvOxQzF
UQMu9GhNp1/JN2BrJX+rQep2Xp4hqduR+iGY6FyKJOXAFqfJ15Vbmj3cAilE9p9J8owkMvacII4t
PJf6CGqEa5JmOG1AWCvmf1c7atS6iR+GndpmeeBECs6rEakFLrOtkJz1j1zfkdJ6zG+ut5LkOcgq
9LWpVTMHRVJe6EnyO01jwn5G00fEvMc4bnsGCQuOGRcc9nhk21Ni3v6QE3GDFpfRCf0uLp7CnMgW
V/dsA89qLYpUC32bw1H8Ch4Ifdm85BCVeS6kQurQUE/cke2SV9S/b65XJvy2zDJdRLwcjjOqkc/r
AXpHDDJMOgY7JqcYmu1Sga1JUdxCoufxmO/yFJ9bL7GJM6a27x/yzQUtNcKayOIgp+JKyDUpC2Ab
CfC5TDkDiReo63RoDhufRsvLfb4R3yBL/wG5EiLvn3SPXjKKN0MmyuIax+HCioXgr7q3RrgIigKz
03m5rZLYddgHlHxIBRJ5LREBBz5AtEywG0WKN8FHKUctJXOQ/2S0XhAZM0PSDIh+jpTEvbfc5/zy
TNerXg9hzLzAfTUHc6BIyvQX0fvQn18UFF0GjdNWpngH4vGiOyLNuOHgl1mRPmTALC6yB2StV0TI
bHqQySEKUrFKQf8kWL0XQkqDOIC3YCtBmAajYr9P1Y/xzGF3HM/1ghGzfvkTEavLX2dbXfQZ4QPr
vsOb/tVzJ03U2PHxdFVRujG3gAupQBmkOoASKKSPprDTp1Tt9IPZdoji2Q2KbdsJMSidx5GAAywM
dppgzyNm8VayTf4znlbrzahWwPTr/neKdX7UP/zOGvT+BVBLAwQKAAAAAABUiB1JAAAAAAAAAAAA
AAAAJgAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvVVQJAAMgzcRXX83E
V3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABUiB1JAAAAAAAAAAAAAAAAPQAcAHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC9VVAkAAyDN
xFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAAAABEABwAc3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1
LjEuMi9VVAkAAyDNxFdfzcRXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAFSIHUkAAAAAAAAAAAAA
AABSABwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9i
YWxfT2JqZWN0LzE1LjEuMi8xNS4xLjIuMV9ldmFsL1VUCQADIM3EV1/NxFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAdYgdSZcaFVILVwAA0bYBAHEAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05h
dGl2ZV9PYmplY3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4yLzE1LjEuMi4xX2V2YWwv
UzE1LjEuMi4xX0EzLjNfVDQtY3Jhc2gtbG9nLnR4dFVUCQADXc3EVyDNxFd1eAsAAQT1AQAABBQA
AADsXW1z27ay/nz5K/jhjo+c1g5Bgm+aXHccWWrd+O1YTtJpJ8MBSdDmDUWqJOWX++vvAqQkipYs
wZabpgeeTipT4OLZxWJ3nyVkXeRZQIuiqy7+HE1G40uahjS/yilV/0AIGc4X5YKUN+2h8PP2U5ZM
RrR4++n85ONp/+2bt4v3K8chTcs4imneXT2L8onmRZyl7Ql++uknpZeFVL16GNPFN39zrD0Lq50z
Usa3dBfw5TCRetFS6uKhvMnSSgv7i3JJi3GWFrGfLIgrbtQ/dMv9onwsaK4eH7VxmBpSlCNS0rdX
8agFRNeQtac5e7qrIruroa6p7Zu6pe5ptqYp50N1mW6nJFDhrd9UpO3Df6baQXiAXM3dBYjjLC8f
3YWQcphm6cMomxTqx48NjO91+8h0+v29nosGe/33xuEeHhzae+6RrpmGZmmG/V5RFIZcPbwjX6k6
jNOAqu+zrOyqpqVpmlrQIEvDQlF6OSluaKhe3eSUhLM5NFixuBiTMrhR/5zQCdggyEb7ZDxO6P6I
xOleyW9QlP59QMclIF9cs/5vPe/94ZF32Ov1h0O1Mzz+edj/+dNuYzxb6NnCfehfnnnHZ58OT47h
pqOjS3YXKVXtXqt/fJ+EPqWRonw6VS/pNYgo1DNKchgzfa+r7O0dqAoT6HlX/d+uHvlvLQxpQYRd
eLE3uxDCFMw0f6iqbVsfvqj53v3b/O5eHZ7+T+/88xLXBxtzI4C1ajN2uxuaDezbeOdXckuGQR6P
y16W0wrof800Rxo1bTOybfXz1YBPpP6gGq6ChGSEOMJG5Kq/Dnvd7q/DTyQBdF1S9GiSdHZBUFqU
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
AAAAAADBhh1JAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UGTrwEAY29tcG9zaXRpbmcvcmVnaW9u
cy9VVAUAAxnLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADBhh1JYLJue6wAAAAUAwAARQAY
AAAAAAABAAAApIHhrwEAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1s
YXllci1jb21wb3NpdGluZy1zdGRlcnIudHh0VVQFAAMZy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAvYYdSQAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BDLEBAGNvbXBvc2l0aW5nL3ZpZGVv
L1VUBQADFcvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALyGHUkVodC1rQAAAN4DAAAwABgA
AAAAAAEAAACkgVixAQBjb21wb3NpdGluZy92aWRlby92aWRlby1ib3JkZXItcmFkaXVzLXN0ZGVy
ci50eHRVVAUAAxTLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC9hh1JKHDRkdEAAADQCgAA
MgAYAAAAAAABAAAApIFvsgEAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tY2xpcC1jaGFuZ2Utc3Jj
LXN0ZGVyci50eHRVVAUAAxXLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADHhh1JAAAAAAAA
AAAAAAAADQAYAAAAAAAAABAA7UGsswEAZGlzcGxheWxpc3RzL1VUBQADJcvEV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAMeGHUmjV/3oUAAAAI4AAAAyABgAAAAAAAEAAACkgfOzAQBkaXNwbGF5
bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUBQADJcvEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAMeGHUnylpXVRwAAAEkAAAApABgAAAAAAAEAAACkga+0AQBk
aXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVUBQADJcvEV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAHWIHUmYg+ayb0UAAAehAQAiABgAAAAAAAEAAACkgVm1AQBEdW1w
UmVuZGVyVHJlZS0xMjM3OS1jcmFzaC1sb2cudHh0VVQFAANdzcRXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAdYgdSWjpwDzgQgAArTUBACIAGAAAAAAAAQAAAKSBJPsBAER1bXBSZW5kZXJUcmVl
LTEyMzg0LWNyYXNoLWxvZy50eHRVVAUAA13NxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1
iB1JAnBhJi8+AAB21gAAIgAYAAAAAAABAAAApIFgPgIARHVtcFJlbmRlclRyZWUtMTIzODUtY3Jh
c2gtbG9nLnR4dFVUBQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUnKiIaE2kEA
AJ4wAQAiABgAAAAAAAEAAACkget8AgBEdW1wUmVuZGVyVHJlZS0xMjM4Ny1jcmFzaC1sb2cudHh0
VVQFAANdzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdYgdSfO4CUshPgAAidUAACIAGAAA
AAAAAQAAAKSBIb8CAER1bXBSZW5kZXJUcmVlLTEyMzg5LWNyYXNoLWxvZy50eHRVVAUAA13NxFd1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADYhh1JAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UGe
/QIAZWRpdGluZy9VVAUAA0jLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADnhh1JAAAAAAAA
AAAAAAAAEwAYAAAAAAAAABAA7UHg/QIAZWRpdGluZy9wYXN0ZWJvYXJkL1VUBQADYcvEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIANiGHUl+qfEg6QAAAIIBAAAwABgAAAAAAAEAAACkgS3+AgBl
ZGl0aW5nL3Bhc3RlYm9hcmQvY29weS1yZXNvbHZlcy11cmxzLXN0ZGVyci50eHRVVAUAA0jLxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADmhh1JVxgTSdoAAABQAQAALAAYAAAAAAABAAAApIGA
/wIAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vcGx1Z2luLXN0ZGVyci50eHRVVAUAA2DLxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADmhh1JVxgTSdoAAABQAQAAMgAYAAAAAAABAAAApIHA
AAMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vcGx1Z2luLXhodG1sLXN0ZGVyci50eHRVVAUA
A2DLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADnhh1Jd02LHeMAAAB3AQAALAAYAAAAAAAB
AAAApIEGAgMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LXN0ZGVyci50eHRVVAUA
A2HLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADnhh1JSi4+MOIAAAB7AQAAMgAYAAAAAAAB
AAAApIFPAwMAZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLW5vc2NyaXB0LXhodG1sLXN0ZGVyci50
eHRVVAUAA2HLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgiB1JsQKWIYcKAACFNwAADQAY
AAAAAAABAAAApIGdBAMAZXJyb3JfbG9nLnR4dFVUBQADM83EV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAFiIHUkAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQWsPAwBmYXN0L1VUBQADJ83EV3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPaGHUkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQaoP
AwBmYXN0L2NhbnZhcy9VVAUAA3/LxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADwhh1JLM1r
/q4AAADeAwAATAAYAAAAAAABAAAApIHwDwMAZmFzdC9jYW52YXMvY2FudmFzLWNzcy1zaXplLWFm
dGVyLWhlaWdodC1jaGFuZ2Utd2l0aC1kaXNwbGF5LWZsZXgtc3RkZXJyLnR4dFVUBQADdMvEV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPaGHUmjWYDGhgAAABoBAAAmABgAAAAAAAEAAACkgSQR
AwBmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUBQADf8vEV3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAEOHHUkAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQQoSAwBmYXN0
L2Nzcy9VVAUAAw3MxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABDhx1JQtAYd7EAAADOAQAA
NgAYAAAAAAABAAAApIFNEgMAZmFzdC9jc3MvcGVyc3BlY3RpdmUtb3JpZ2luLWluaXRpYWwtaW5o
ZXJpdC1zdGRlcnIudHh0VVQFAAMNzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAASocdSQAA
AAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BbhMDAGZhc3QvZG9tL1VUBQADHMzEV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABmHHUlKArcH2k0AAESUAQA2ABgAAAAAAAEAAACkgbETAwBmYXN0L2Rv
bS9leGNlcHRpb24tZ2V0dGluZy1ldmVudC1oYW5kbGVyLWNyYXNoLWxvZy50eHRVVAUAA8LLxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAZhx1J06d8JDEDAADwCQAAMwAYAAAAAAABAAAApIH7
YQMAZmFzdC9kb20vZXhjZXB0aW9uLWdldHRpbmctZXZlbnQtaGFuZGxlci1zdGRlcnIudHh0VVQF
AAPCy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASocdSbxbDjIERwAA0McBADkAGAAAAAAA
AQAAAKSBmWUDAGZhc3QvZG9tL2phdmFzY3JpcHQtdXJsLWV4Y2VwdGlvbi1pc29sYXRpb24tY3Jh
c2gtbG9nLnR4dFVUBQADHMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEqHHUkNkkfU8gMA
AB0OAAA2ABgAAAAAAAEAAACkgRCtAwBmYXN0L2RvbS9qYXZhc2NyaXB0LXVybC1leGNlcHRpb24t
aXNvbGF0aW9uLXN0ZGVyci50eHRVVAUAAxzMxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADs
hh1JAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UFysQMAZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9VVAUAA2zLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADshh1JKNl5NrAAAADuAAAAPwAY
AAAAAAABAAAApIHGsQMAZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kYXRhYmFzZS1jYWxsYmFj
ay1kZWxpdmVyeS1zdGRlcnIudHh0VVQFAANsy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
WIgdSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1B77IDAGZhc3QvZXZlbnRzL1VUBQADJ83EV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUl61yWoZVYAABnlAQApABgAAAAAAAEAAACkgTWz
AwBmYXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjgtY3Jhc2gtbG9nLnR4dFVUBQADXc3EV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAFiIHUlca+YQ1gMAAC0LAAAmABgAAAAAAAEAAACkgf0JBABm
YXN0L2V2ZW50cy93aW5kb3ctb25lcnJvcjgtc3RkZXJyLnR4dFVUBQADJ83EV3V4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAPGGHUkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTMOBABmYXN0L2Zv
cm1zL1VUBQADdsvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPGGHUkuX9jvewEAAPg5AAAz
ABgAAAAAAAEAAACkgXgOBABmYXN0L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNo
LXN0ZGVyci50eHRVVAUAA3bLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAthx1JAAAAAAAA
AAAAAAAADAAYAAAAAAAAABAA7UFgEAQAZmFzdC9mcmFtZXMvVVQFAAPmy8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgALYcdSSjZeTawAAAA7gAAAC8AGAAAAAAAAQAAAKSBphAEAGZhc3QvZnJh
bWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1zdGRlcnIudHh0VVQFAAPmy8RXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAA+YYdSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BvxEEAGZhc3Qv
aGlzdG9yeS9VVAUAA4XLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD5hh1JKNl5NrAAAADu
AAAAQAAYAAAAAAABAAAApIEGEgQAZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2ViZGF0YWJhc2Ut
bm8tdHJhbnNhY3Rpb24tZGItc3RkZXJyLnR4dFVUBQADhcvEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAAKHHUkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQTATBABmYXN0L2ltYWdlcy9VVAUA
A5PLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAChx1JIY+9ODIAAAAzAAAALAAYAAAAAAAB
AAAApIF2EwQAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAUA
A5PLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAPhx1JAAAAAAAAAAAAAAAADgAYAAAAAAAA
ABAA7UEOFAQAZmFzdC9vdmVyZmxvdy9VVAUAA63LxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAOhx1J6v5GpOoAAAA2AQAANQAYAAAAAAABAAAApIFWFAQAZmFzdC9vdmVyZmxvdy9ob3Jpem9u
dGFsLXNjcm9sbC1hZnRlci1iYWNrLWFjdHVhbC50eHRVVAUAA6zLxFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAOhx1Jw3MaAl4BAABEAgAAMwAYAAAAAAABAAAApIGvFQQAZmFzdC9vdmVyZmxv
dy9ob3Jpem9udGFsLXNjcm9sbC1hZnRlci1iYWNrLWRpZmYudHh0VVQFAAOsy8RXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgACAAAADocdSe5wIMIFAAAABQAAADcAGAAAAAAAAQAAAKSBehcEAGZhc3Qv
b3ZlcmZsb3cvaG9yaXpvbnRhbC1zY3JvbGwtYWZ0ZXItYmFjay1leHBlY3RlZC50eHRVVAUAA6zL
xFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPhx1J3BK7VycIAADoGgAAOwAYAAAAAAABAAAA
pIHwFwQAZmFzdC9vdmVyZmxvdy9ob3Jpem9udGFsLXNjcm9sbC1hZnRlci1iYWNrLXByZXR0eS1k
aWZmLmh0bWxVVAUAA63LxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA0hx1JAAAAAAAAAAAA
AAAADQAYAAAAAAAAABAA7UGMIAQAZmFzdC93b3JrZXJzL1VUBQAD9MvEV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADSHHUlQiNCLfUkAAFrdAQAuABgAAAAAAAEAAACkgdMgBABmYXN0L3dvcmtl
cnMvc3RyZXNzLWpzLWV4ZWN1dGlvbi1jcmFzaC1sb2cudHh0VVQFAAP0y8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgANIcdSTJ+x54EAwAAtA4AACsAGAAAAAAAAQAAAKSBuGoEAGZhc3Qvd29y
a2Vycy9zdHJlc3MtanMtZXhlY3V0aW9uLXN0ZGVyci50eHRVVAUAA/TLxFd1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAThx1JAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UEhbgQAZmFzdC94c2wv
VVQFAAO2y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEocdSXL9ZfKFAAAA6QAAACUAGAAA
AAAAAQAAAKSBZG4EAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAUAA7TL
xFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAShx1JzgkoAo0AAADwAAAAJwAYAAAAAAABAAAA
pIFIbwQAZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQFAAO0y8RXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEocdSc+PZg5QAAAAoAAAACQAGAAAAAAAAQAAAKSBNnAE
AGZhc3QveHNsL3hzbHQtY29udGVudFR5cGUtc3RkZXJyLnR4dFVUBQADtMvEV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABOHHUmBSnetSwAAAKwAAAA0ABgAAAAAAAEAAACkgeRwBABmYXN0L3hz
bC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAAO2y8RXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdYgdSdSOztb9AwAAxxAAABEAGAAAAAAAAQAAAKSBnXEE
AGZ1bGxfcmVzdWx0cy5qc29uVVQFAANezcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAFIcd
SQAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1B5XUEAGh0dHAvVVQFAAO4y8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAKIcdSQAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BJHYEAGh0dHAvdGVz
dHMvVVQFAAPcy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAF4cdSQAAAAAAAAAAAAAAABEA
GAAAAAAAAAAQAO1BaXYEAGh0dHAvdGVzdHMvY2FjaGUvVVQFAAO+y8RXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAF4cdSamg3zHuAAAAiQQAADAAGAAAAAAAAQAAAKSBtHYEAGh0dHAvdGVzdHMv
Y2FjaGUvbWVtb3J5LWNhY2hlLXBydW5pbmctc3RkZXJyLnR4dFVUBQADvsvEV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABeHHUmkdw22hAAAAMAAAAA9ABgAAAAAAAEAAACkgQx4BABodHRwL3Rl
c3RzL2NhY2hlL25ldHdvcmstZXJyb3ItZHVyaW5nLXJldmFsaWRhdGlvbi1zdGRlcnIudHh0VVQF
AAO+y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAFIcdSQAAAAAAAAAAAAAAABIAGAAAAAAA
AAAQAO1BB3kEAGh0dHAvdGVzdHMvY2FudmFzL1VUBQADuMvEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAABSHHUkAAAAAAAAAAAAAAAAYABgAAAAAAAAAEADtQVN5BABodHRwL3Rlc3RzL2NhbnZh
cy93ZWJnbC9VVAUAA7jLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAUhx1J2cdovcoAAADd
AQAAOwAYAAAAAAABAAAApIGleQQAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvb3JpZ2luLWNsZWFu
LWNvbmZvcm1hbmNlLXN0ZGVyci50eHRVVAUAA7jLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAWhx1JAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UHkegQAaHR0cC90ZXN0cy9jb250ZW50ZGlz
cG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9VVAUAA7vLxFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAWhx1JZdEZiH8AAACVAAAAUQAYAAAAAAABAAAApIFNewQAaHR0cC90ZXN0cy9jb250ZW50
ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC1zdGRl
cnIudHh0VVQFAAO7y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAFYcdSWXRGYh/AAAAlQAA
AGoAGAAAAAAAAQAAAKSBV3wEAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVu
dHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItYWx3YXlz
LXN0ZGVyci50eHRVVAUAA7nLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAVhx1JZdEZiH8A
AACVAAAAawAYAAAAAAABAAAApIF6fQQAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRh
Y2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1k
ZWZhdWx0LXN0ZGVyci50eHRVVAUAA7nLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAVhx1J
ZdEZiH8AAACVAAAAaQAYAAAAAAABAAAApIGefgQAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRp
b25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVm
ZXJlci1uZXZlci1zdGRlcnIudHh0VVQFAAO5y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
FYcdSWXRGYh/AAAAlQAAAG8AGAAAAAAAAQAAAKSBwH8EAGh0dHAvdGVzdHMvY29udGVudGRpc3Bv
c2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRh
LXJlZmVyZXItbm8tcmVmZXJyZXItc3RkZXJyLnR4dFVUBQADusvEV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIABWHHUll0RmIfwAAAJUAAAB+ABgAAAAAAAEAAACkgeiABABodHRwL3Rlc3RzL2Nv
bnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVk
LXdpdGgtbWV0YS1yZWZlcmVyLW5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlLXN0ZGVyci50eHRV
VAUAA7rLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAVhx1JZdEZiH8AAACVAAAAagAYAAAA
AAABAAAApIEfggQAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJv
eC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1vcmlnaW4tc3RkZXJy
LnR4dFVUBQADusvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABWHHUll0RmIfwAAAJUAAABu
ABgAAAAAAAEAAACkgUKDBABodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRz
YW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLXVuc2FmZS11
cmwtc3RkZXJyLnR4dFVUBQADusvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABSHHUkAAAAA
AAAAAAAAAAAPABgAAAAAAAAAEADtQWmEBABodHRwL3Rlc3RzL2Nzcy9VVAUAA7jLxFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAUhx1JepKx1YQAAAAaAQAALgAYAAAAAAABAAAApIGyhAQAaHR0
cC90ZXN0cy9jc3MvYm9yZGVyLWltYWdlLWxvYWRpbmctc3RkZXJyLnR4dFVUBQADuMvEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAACiHHUkAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQZ6FBABo
dHRwL3Rlc3RzL21lZGlhL1VUBQAD3MvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABuHHUkA
AAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQemFBABodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L1VU
BQADxsvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABuHHUntlO37UAEAAH8DAAA5ABgAAAAA
AAEAAACkgT2GBABodHRwL3Rlc3RzL21lZGlhL2NsZWFya2V5L2NsZWFyLWtleS1obHMtYWVzMTI4
LXN0ZGVyci50eHRVVAUAA8bLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAihx1JAAAAAAAA
AAAAAAAAFQAYAAAAAAAAABAA7UEAiAQAaHR0cC90ZXN0cy9tZWRpYS9obHMvVVQFAAPPy8RXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAG4cdSXzFTfC5AQAAKgUAAEAAGAAAAAAAAQAAAKSBT4gE
AGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHktZGVzY3JpYmVzLXZpZGVvLXN0
ZGVyci50eHRVVAUAA8bLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAbhx1JFPwFgMUBAABF
BQAAOgAYAAAAAAABAAAApIGCigQAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWF1ZGlvLXRyYWNr
cy1oYXMtYXVkaW8tc3RkZXJyLnR4dFVUBQADxsvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AByHHUnAlXvAyQEAAJ8FAABBABgAAAAAAAEAAACkgbuMBABodHRwL3Rlc3RzL21lZGlhL2hscy9o
bHMtYXVkaW8tdHJhY2tzLWxvY2FsZS1zZWxlY3Rpb24tc3RkZXJyLnR4dFVUBQADx8vEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAByHHUkioe6FyQEAAEUFAAAwABgAAAAAAAEAAACkgf+OBABo
dHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLXN0ZGVyci50eHRVVAUAA8jLxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAdhx1JvNzy2i0BAADeAwAALAAYAAAAAAABAAAApIEy
kQQAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXByb2dyZXNzLXN0ZGVyci50eHRVVAUAA8nLxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAdhx1JfjlrqCwBAACEAwAAMAAYAAAAAAABAAAApIHF
kgQAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6ZS1zdGRlcnIudHh0VVQFAAPK
y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIIcdSdw0Hs58AQAAKgYAADoAGAAAAAAAAQAA
AKSBW5QEAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xzLWxpdmUtc3RyZWFtLXN0
ZGVyci50eHRVVAUAA8vLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAihx1JNrHvSCMDAABy
iQAAPAAYAAAAAAABAAAApIFLlgQAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24t
YWNjZXNzaWJpbGl0eS1zdGRlcnIudHh0VVQFAAPPy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAG4cdSU5ZbzjMAAAANwIAADIAGAAAAAAAAQAAAKSB5JkEAGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtZG9jdW1lbnQtcmVmZXJlci1zdGRlcnIudHh0VVQFAAPFy8RXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAG4cdSSGT+jTgAAAArAIAACoAGAAAAAAAAQAAAKSBHJsEAGh0dHAvdGVzdHMvbWVk
aWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADxsvEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAB2HHUnskYlA7AAAAMYDAAA5ABgAAAAAAAEAAACkgWCcBABodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRVVAUAA8rLxFd1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAuhx1JAAAAAAAAAAAAAAAAHgAYAAAAAAAAABAA7UG/nQQAaHR0
cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAPoy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAJIcdSfcsq2lTAQAAlwQAAEIAGAAAAAAAAQAAAKSBF54EAGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUBQAD08vE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACWHHUnrcvhQPQEAAHoDAABQABgAAAAAAAEAAACk
geafBABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hh
bmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQAD1svEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACaHHUnSSVD+PgEAAHoDAABSABgAAAAAAAEAAACkga2hBABodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0ZS1z
dGRlcnIudHh0VVQFAAPYy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAK4cdSToviwOLAAAA
mwAAADkAGAAAAAAAAQAAAKSBd6MEAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
c291cmNlLXBsYXktc3RkZXJyLnR4dFVUBQAD4cvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACyHHUlIYX+kqQAAAAcDAAA7ABgAAAAAAAEAAACkgXWkBABodHRwL3Rlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQAD5MvEV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAC6HHUmqSoGKmgAAANEBAABGABgAAAAAAAEAAACkgZOlBABodHRwL3Rl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2VidWZmZXItbW9kZS1zdGRl
cnIudHh0VVQFAAPoy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHYcdSeZvthvsAAAAXwEA
AC0AGAAAAAAAAQAAAKSBraYEAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNlcnZlZC1hcy1wZGYtc3Rk
ZXJyLnR4dFVUBQADysvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACCHHUlOcb6FwgAAAJIB
AAAvABgAAAAAAAEAAACkgQCoBABodHRwL3Rlc3RzL21lZGlhL3JlbG9hZC1hZnRlci1kaWFsb2ct
c3RkZXJyLnR4dFVUBQADzMvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACGHHUmvkRBYSAEA
AHQCAAAvABgAAAAAAAEAAACkgSupBABodHRwL3Rlc3RzL21lZGlhL3RleHQtc2VydmVkLWFzLXRl
eHQtc3RkZXJyLnR4dFVUBQADzcvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACKHHUnyr6ZW
BwEAAHgDAAA2ABgAAAAAAAEAAACkgdyqBABodHRwL3Rlc3RzL21lZGlhL3RyYWNrLWluLWJhbmQt
aGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA9DLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAihx1JSW17DHMBAABsBwAAJgAYAAAAAAABAAAApIFTrAQAaHR0cC90ZXN0cy9tZWRpYS92aWRl
by1hdXRoLXN0ZGVyci50eHRVVAUAA9DLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAkhx1J
QpyI+uQAAACsAgAALQAYAAAAAAABAAAApIEmrgQAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1lcnJv
ci1hYm9ydC1zdGRlcnIudHh0VVQFAAPTy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJIcd
ScvvPn4TAQAA4wEAADYAGAAAAAAAAQAAAKSBca8EAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJy
b3ItZG9lcy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQAD1MvEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACSHHUmgUpB+xAAAACQDAAAsABgAAAAAAAEAAACkgfSwBABodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQAD1MvEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACWHHUmi9c4A4QAAAGwDAAAvABgAAAAAAAEAAACkgR6yBABodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQAD1cvEV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACeHHUkJHxcEhAAAAMAAAAA9ABgAAAAAAAEAAACkgWizBABodHRwL3Rlc3RzL21l
ZGlhL3ZpZGVvLXBsYXktc3RhbGwtYmVmb3JlLW1ldGEtZGF0YS1zdGRlcnIudHh0VVQFAAPZy8RX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJ4cdScsqnTe6AAAAkgEAACsAGAAAAAAAAQAAAKSB
Y7QEAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcXVlcnktdXJsLXN0ZGVyci50eHRVVAUAA9rLxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAohx1JqtS0sO0AAABYBQAAKgAYAAAAAAABAAAApIGC
tQQAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWRpcmVjdC1zdGRlcnIudHh0VVQFAAPby8RXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKIcdScC3Hz3hAAAABgMAACsAGAAAAAAAAQAAAKSB07YE
AGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50LXN0ZGVyci50eHRVVAUAA9zLxFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAAbhx1JAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UEZuAQA
aHR0cC90ZXN0cy9tZXNzYWdpbmcvVVQFAAPGy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
G4cdSaf7eVqDAAAAwAAAAEMAGAAAAAAAAQAAAKSBaLgEAGh0dHAvdGVzdHMvbWVzc2FnaW5nL2Ny
b3NzLWRvbWFpbi1tZXNzYWdlLWV2ZW50LWRpc3BhdGNoLXN0ZGVyci50eHRVVAUAA8bLxFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABMhx1JAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UFouQQA
aHR0cC90ZXN0cy9taXNjL1VUBQADIMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACiHHUle
hPRp5gAAAGIBAAAtABgAAAAAAAEAAACkgbK5BABodHRwL3Rlc3RzL21pc2MvY29weS1yZXNvbHZl
cy11cmxzLXN0ZGVyci50eHRVVAUAA9zLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAphx1J
9PqpBsMAAAD+AAAAPwAYAAAAAAABAAAApIH/ugQAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFt
ZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1zdGRlcnIudHh0VVQFAAPdy8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAKYcdSYAE7UfCAAAA/gAAAFsAGAAAAAAAAQAAAKSBO7wEAGh0dHAvdGVz
dHMvbWlzYy9kZWxldGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Utd2l0aC1nYy1hZnRl
ci12aWRlby1yZW1vdmFsLXN0ZGVyci50eHRVVAUAA93LxFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABMhx1JFTU1knoAAAC8AAAAKgAYAAAAAAABAAAApIGSvQQAaHR0cC90ZXN0cy9taXNjL3hz
bHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQFAAMgzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAQYcdSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BcL4EAGh0dHAvdGVzdHMvc2VjdXJpdHkv
VVQFAAMJzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIYcdSWrpqmG7AAAAkgEAAFUAGAAA
AAAAAQAAAKSBvr4EAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90
ZS12aWRlby1ibG9ja2VkLW5vLWNyb3Nzb3JpZ2luLXN0ZGVyci50eHRVVAUAA87LxFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAhhx1J9f60Z9oAAACsAgAASAAYAAAAAAABAAAApIEIwAQAaHR0
cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWxvY2FsaG9z
dC1zdGRlcnIudHh0VVQFAAPOy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIocdSR+nHNoq
AQAAFQMAAEcAGAAAAAAAAQAAAKSBZMEEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90
ZS1yZWFkLXJlbW90ZS12aWRlby1yZWRpcmVjdC1zdGRlcnIudHh0VVQFAAPPy8RXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAANIcdSQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1BD8MEAGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUBQAD88vEV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIACCHHUmbBdKi1wAAAPgBAABLABgAAAAAAAEAAACkgXPDBABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2Vk
LXN0ZGVyci50eHRVVAUAA8zLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAghx1JDS/r0eQA
AABDAgAATAAYAAAAAAABAAAApIHPxAQAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4dFVUBQADzMvEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACGHHUnEBb3CpwAAAIoBAABYABgAAAAAAAEAAACkgTnGBABo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ibG9iLXVybC1kb2VzLW5v
dC1tYXRjaC1zb3VyY2Utc2VsZi1zdGRlcnIudHh0VVQFAAPNy8RXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAJYcdSQAAAAAAAAAAAAAAAEQAGAAAAAAAAAAQAO1BcscEAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHMvVVQF
AAPVy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIocdSSoeNejPAAAAZgIAAGcAGAAAAAAA
AQAAAKSB8McEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VwZ3Jh
ZGUtaW5zZWN1cmUtcmVxdWVzdHMvYmFzaWMtdXBncmFkZS1jb3JzLmh0dHBzLXN0ZGVyci50eHRV
VAUAA8/LxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlhx1J67hKIu8AAAAmAwAAeQAYAAAA
AAABAAAApIFgyQQAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBn
cmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1h
aW4tZnJhbWUtc3RkZXJyLnR4dFVUBQAD1cvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACOH
HUkAAAAAAAAAAAAAAAA9ABgAAAAAAAAAEADtQQLLBABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vVVQFAAPSy8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAIocdSfMgWW3lAAAAQwIAAFMAGAAAAAAAAQAAAKSBecsEAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxv
dy1hdWRpby1zdGRlcnIudHh0VVQFAAPPy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAI4cd
SUE0VI27AAAAkgEAAFMAGAAAAAAAAQAAAKSB68wEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12aWRlby1zdGRlcnIudHh0
VVQFAAPSy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAI4cdSb8ydPWEAAAAwAAAAIIAGAAA
AAAAAQAAAKSBM84EAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Vz
ZXJBZ2VudFNoYWRvd0RPTS9ibG9jay1sb2FkaW5nLXVzZXItYWdlbnQtaW1hZ2UtZnJvbS1ub24t
dXNlci1hZ2VudC1jb250ZW50LXN0ZGVyci50eHRVVAUAA9LLxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAyhx1J/WAR7d4AAABSAgAASwAYAAAAAAABAAAApIFzzwQAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIu
dHh0VVQFAAPvy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMYcdScIdJQm7AAAAkgEAAEwA
GAAAAAAAAQAAAKSB1tAEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAUAA+7LxFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAyhx1Jm0in+d4AAABSAgAAZgAYAAAAAAABAAAApIEX0gQAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1odHRwLXVybC1hbGxv
d2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQFAAPvy8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAMocdSWAkzKSEAAAAwAAAAFkAGAAAAAAAAQAAAKSBldMEAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNz
cC1ibG9ja3MtZXZhbC1zdGRlcnIudHh0VVQFAAPvy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAM4cdSWOqrGyCAAAAqAAAAEAAGAAAAAAAAQAAAKSBrNQEAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA/LLxFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAA0hx1JY6qsbIIAAACoAAAAUgAYAAAAAAABAAAApIGo1QQA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQt
Ynktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUBQAD88vEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACKHHUk8wJ6IhAAAABoBAAA1ABgAAAAAAAEAAACkgbbWBABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvcnMtcG9zdC1yZWRpcmVjdC0zMDEtc3RkZXJyLnR4dFVUBQADz8vEV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACqHHUmG32d/tgAAANwBAAA6ABgAAAAAAAEAAACkganXBABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJzcWwtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAPfy8RX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKocdSSjZeTawAAAA7gAAADIAGAAAAAAAAQAAAKSB
09gEAGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdlYnNxbC1zdGRlcnIudHh0VVQF
AAPfy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALYcdSYqnaUa8AAAAkgEAAD0AGAAAAAAA
AQAAAKSB79kEAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20tcmVt
b3RlLXN0ZGVyci50eHRVVAUAA+bLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAuhx1JjhXg
RoQAAADAAAAAOgAYAAAAAAABAAAApIEi2wQAaHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC12aWRl
by1zcmMtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUBQAD58vEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAACaHHUkAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQRrcBABodHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9VVAUAA9jLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAmhx1J
TPWSeu8AAACJBAAATgAYAAAAAAABAAAApIF13AQAaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRlcnIudHh0VVQFAAPY
y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJocdSbJpAOiDAAAAwAAAAEIAGAAAAAAAAQAA
AKSB7N0EAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWNzcy1pbi1p
ZnJhbWUtc3RkZXJyLnR4dFVUBQAD2MvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADaHHUko
2Xk2sAAAAO4AAAA/ABgAAAAAAAEAAACkgeveBABodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLXN0ZGVyci50eHRVVAUAA/jLxFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAA3hx1JKNl5NrAAAADuAAAAQwAYAAAAAAABAAAApIEU4AQAaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtc3RkZXJyLnR4
dFVUBQAD+cvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADiHHUl9QoOV7wAAAJgEAAA5ABgA
AAAAAAEAAACkgUHhBABodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLWNyb3NzLW9yaWdpbi1jYWNo
aW5nLXN0ZGVyci50eHRVVAUAA/vLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4hx1Jl2mi
wRQBAADnAQAAPwAYAAAAAAABAAAApIGj4gQAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1wb3N0
ZXItY3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIudHh0VVQFAAP7y8RXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAQYcdSWBLZhCRAAAA+wEAAEUAGAAAAAAAAQAAAKSBMOQEAGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9jdW1lbnQtc2VjdXJpdHlPcmlnaW4tc3RkZXJyLnR4
dFVUBQADCczEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACeHHUkAAAAAAAAAAAAAAAATABgA
AAAAAAAAEADtQUDlBABodHRwL3Rlc3RzL3N0b3JhZ2UvVVQFAAPay8RXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAJ4cdSSjZeTawAAAA7gAAAEUAGAAAAAAAAQAAAKSBjeUEAGh0dHAvdGVzdHMv
c3RvcmFnZS9jYWxsYmFja3MtYXJlLWNhbGxlZC1pbi1jb3JyZWN0LWNvbnRleHQtc3RkZXJyLnR4
dFVUBQAD2svEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAADWHHUkAAAAAAAAAAAAAAAAaABgA
AAAAAAAAEADtQbzmBABodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L1VUBQAD9svEV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIADWHHUl+f+0XsQAAAAEBAABBABgAAAAAAAEAAACkgRDnBABodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtYXN5bmMtc3RkZXJy
LnR4dFVUBQAD9svEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADWHHUl+f+0XsQAAAAEBAABA
ABgAAAAAAAEAAACkgTzoBABodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3QtYmxvYi1jb250
ZW50LXR5cGUtc3luYy1zdGRlcnIudHh0VVQFAAP2y8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAKIcdSQAAAAAAAAAAAAAAACMAGAAAAAAAAAAQAO1BZ+kEAGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvd2ViLWFwcHMvVVQFAAPcy8RXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKIcdSTUo
s2CDAAAAwAAAADEAGAAAAAAAAQAAAKSBxOkEAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2Vi
LWFwcHMvMDAxLXN0ZGVyci50eHRVVAUAA9zLxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACz
hh1JWwRYDqIFAABNEAAACgAYAAAAAAABAAAApIGy6gQAaHR0cGQuY29uZlVUBQADAsvEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAFOHHUkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQZjwBABp
ZXRlc3RjZW50ZXIvVVQFAAMuzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAU4cdSQAAAAAA
AAAAAAAAABgAGAAAAAAAAAAQAO1B3/AEAGlldGVzdGNlbnRlci9KYXZhc2NyaXB0L1VUBQADLszE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFOHHUkYVjE1H04AABZ/AQAvABgAAAAAAAEAAACk
gTHxBABpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMi4xMC03LTEtY3Jhc2gtbG9nLnR4dFVUBQAD
LszEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFOHHUlvWkV1vwMAAA0LAAAsABgAAAAAAAEA
AACkgbk/BQBpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xMi4xMC03LTEtc3RkZXJyLnR4dFVUBQAD
LszEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFCHHUkAAAAAAAAAAAAAAAAJABgAAAAAAAAA
EADtQd5DBQBpbXBvcnRlZC9VVAUAAyfMxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABQhx1J
AAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UEhRAUAaW1wb3J0ZWQvdzNjL1VUBQADJ8zEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAGqHHUkAAAAAAAAAAAAAAAAgABgAAAAAAAAAEADtQWhEBQBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUBQADV8zEV3V4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAAqIHUkAAAAAAAAAAAAAAAArABgAAAAAAAAAEADtQcJEBQBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbXBhcnNpbmcvVVQFAAOTzMRXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAZ4cdSWZRNf5UWQAAPtMBAEUAGAAAAAAAAQAAAKSBJ0UFAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tcGFyc2luZy9pbm5lcmh0bWwtMDctY3Jhc2gtbG9nLnR4dFVU
BQADUszEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGeHHUki9UfV5wMAAJQMAABCABgAAAAA
AAEAAACkgfqeBQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXBhcnNpbmcvaW5u
ZXJodG1sLTA3LXN0ZGVyci50eHRVVAUAA1LMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1
iB1JalQ04bpDAAB9RAEARQAYAAAAAAABAAAApIFdowUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9kb21wYXJzaW5nL291dGVyaHRtbC0wMi1jcmFzaC1sb2cudHh0VVQFAANdzcRXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgACogdSYYNgcruAwAAlAwAAEIAGAAAAAAAAQAAAKSBlucF
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tcGFyc2luZy9vdXRlcmh0bWwtMDIt
c3RkZXJyLnR4dFVUBQADk8zEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGqHHUkAAAAAAAAA
AAAAAAAmABgAAAAAAAAAEADtQQDsBQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL1VUBQADV8zEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAG2HHUkAAAAAAAAAAAAAAAAq
ABgAAAAAAAAAEADtQWDsBQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9VVAUAA17MxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAtiB1JAAAAAAAAAAAAAAAAMgAY
AAAAAAAAABAA7UHE7AUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVxdWVzdC9VVAUAA9XMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1iB1JLWZIm6pCAAAO
SgEATwAYAAAAAAABAAAApIEw7QUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtY3Jhc2gtbG9nLnR4dFVUBQADXc3EV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGqHHUk48q0YPUsAAK3EAQBVABgAAAAAAAEAAACkgWMwBgBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3Qt
Y29uc3VtZS1lbXB0eS1jcmFzaC1sb2cudHh0VVQFAANXzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAaocdSUQl7VOmAwAAJgwAAFIAGAAAAAAAAQAAAKSBL3wGAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5LXN0
ZGVyci50eHRVVAUAA1fMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAANiB1JuOFt5KwDAAAd
DAAATAAYAAAAAAABAAAApIFhgAYAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRj
aC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtc3RkZXJyLnR4dFVUBQADmczEV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAHWIHUmHLOaXH0IAAG5KAQBQABgAAAAAAAEAAACkgZOEBgBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtaW5p
dC0wMDItY3Jhc2gtbG9nLnR4dFVUBQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC2I
HUktTDPnqAMAACYMAABNABgAAAAAAAEAAACkgTzHBgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtaW5pdC0wMDItc3RkZXJyLnR4dFVUBQAD
1czEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAG2HHUkAAAAAAAAAAAAAAAAzABgAAAAAAAAA
EADtQWvLBgBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25z
ZS9VVAUAA17MxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABthx1J4HYEXxhKAABOxAEAUgAY
AAAAAAABAAAApIHYywYAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVzcG9uc2UvcmVzcG9uc2UtaW5pdC0wMDItY3Jhc2gtbG9nLnR4dFVUBQADXszEV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAG2HHUlkYq++pwMAACYMAABPABgAAAAAAAEAAACkgXwWBwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1p
bml0LTAwMi1zdGRlcnIudHh0VVQFAANezMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYYcd
SQAAAAAAAAAAAAAAACUAGAAAAAAAAAAQAO1BrBoHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9VVAUAA0XMxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABhhx1JAAAAAAAA
AAAAAAAALwAYAAAAAAAAABAA7UELGwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9VVAUAA0XMxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABihx1JAAAA
AAAAAAAAAAAAQAAYAAAAAAAAABAA7UF0GwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L1VUBQADSMzEV3V4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAHmHHUkAAAAAAAAAAAAAAABPABgAAAAAAAAAEADtQe4bBwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvVVQFAAN1zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYYcdSerJopzw
AAAAlwUAAGcAGAAAAAAAAQAAAKSBdxwHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5w
bGF5LXN0ZGVyci50eHRVVAUAA0XMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhhx1J0Sdm
a+0AAACkBAAAcgAYAAAAAAABAAAApIEIHgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2Nh
bnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAANGzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAYocdSUIfkF/xAAAAZgYAAG4AGAAAAAAAAQAAAKSBoR8HAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAANIzMRXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAY4cdSSUipuDsAAAApAQAAHkAGAAAAAAAAQAAAKSBOiEHAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRV
VAUAA0nMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABkhx1JFd9p4PUAAABmBgAAagAYAAAA
AAABAAAApIHZIgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEtc3RkZXJy
LnR4dFVUBQADS8zEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGSHHUnlLBsx7AAAAKQEAAB1
ABgAAAAAAAEAAACkgXIkBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YV9u
b2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA0zMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABl
hx1Jwdxy/ewAAACkBAAAbgAYAAAAAAABAAAApIENJgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X2xvYWRlZG1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA03MxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABmhx1JfBK9ZOwAAACkBAAAeQAYAAAAAAABAAAApIGhJwcAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADT8zE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGaHHUniL57U7AAAAKQEAABpABgAAAAAAAEAAACk
gUApBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUA
A1DMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABnhx1JUq958OoAAACkBAAAdAAYAAAAAAAB
AAAApIHPKgcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAUAA1HMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABohx1J7lKZX+8A
AAAMBgAAfAAYAAAAAAABAAAApIFnLAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVy
X2NhbnBsYXlfY2FucGxheXRocm91Z2gtc3RkZXJyLnR4dFVUBQADU8zEV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGiHHUl47wn58AAAAGYGAAB1ABgAAAAAAAEAAACkgQwuBwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA1TM
xFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABphx1JyVPn4fUAAADABgAAfwAYAAAAAAABAAAA
pIGrLwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xv
YWRlZGRhdGEtc3RkZXJyLnR4dFVUBQADVszEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGqH
HUnOl0oC9gAAAAwGAAB4ABgAAAAAAAEAAACkgVkxBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfb3JkZXJfbG9hZHN0YXJ0X3Byb2dyZXNzLXN0ZGVyci50eHRVVAUAA1fMxFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABqhx1Jf+P5evAAAAAMBgAAZQAYAAAAAAABAAAApIEBMwcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAUAA1jMxFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABrhx1JVAa18ekAAACkBAAAcAAYAAAAAAABAAAApIGQNAcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADWszE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGyHHUnH6hEH8AAAAAwGAABkABgAAAAAAAEAAACk
gSM2BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQFAANbzMRX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbIcdSdlKH8TsAAAApAQAAG8AGAAAAAAAAQAAAKSB
sTcHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4
dFVUBQADXMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG2HHUmqgS/w7wAAAAwGAABnABgA
AAAAAAEAAACkgUY5BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIu
dHh0VVQFAANezMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbocdSUyRKUTzAAAAZgYAAHIA
GAAAAAAAAQAAAKSB1joHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25vYXV0
b3BsYXktc3RkZXJyLnR4dFVUBQADYMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG+HHUmz
jv0x9QAAAAwGAABoABgAAAAAAAEAAACkgXU8BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
cHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADYczEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG+H
HUnR+yth7QAAAKQEAABzABgAAAAAAAEAAACkgQw+BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfcHJvZ3Jlc3Nfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAANizMRXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAcIcdScd+IrDvAAAADAYAAGoAGAAAAAAAAQAAAKSBpj8HAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9ldmVudF90aW1ldXBkYXRlLXN0ZGVyci50eHRVVAUAA2TMxFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABxhx1JE+ZIA/EAAAAMBgAAdQAYAAAAAAABAAAApIE5QQcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQF
AANmzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcYcdSfYgnGCEAAAAwAAAAGwAGAAAAAAA
AQAAAKSB2UIHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF92b2x1bWVjaGFuZ2Utc3RkZXJy
LnR4dFVUBQADZszEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGGHHUkAAAAAAAAAAAAAAABa
ABgAAAAAAAAAEADtQQNEBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAUAA0XM
xFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABhhx1JAAAAAAAAAAAAAAAAZAAYAAAAAAAAABAA
7UGXRAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUBQADRczE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGGHHUlidz6nygAAAN0BAAB5ABgAAAAAAAEAAACk
gTVFBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWN0aXZlQ3Vl
cy1zdGRlcnIudHh0VVQFAANFzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYYcdSRxIbBOD
AAAAwAAAAHUAGAAAAAAAAQAAAKSBskYHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2Vz
L1RleHRUcmFjay9hZGRDdWUtc3RkZXJyLnR4dFVUBQADRczEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAHKHHUmddQUr4gAAAOQDAAB3ABgAAAAAAAEAAACkgeRHBwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvbmV0d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADaMzEV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHKHHUmZI46chAAAAMAAAABuABgAAAAAAAEAAACkgXdJ
BwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVU
BQADaMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHOHHUkBctZc5AAAAEwFAAByABgAAAAA
AAEAAACkgaNKBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX2ZhbHNlX2R1cmluZ19wbGF5
LXN0ZGVyci50eHRVVAUAA2rMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0hx1Jy7KnVeoA
AACkBAAAcgAYAAAAAAABAAAApIEzTAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVl
X2R1cmluZ19wYXVzZS1zdGRlcnIudHh0VVQFAANrzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAYocdSQAAAAAAAAAAAAAAAGoAGAAAAAAAAAAQAO1ByU0HAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9VVAUAA0jMxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABihx1JYEdhB7cAAACSAQAAkQAYAAAAAAABAAAApIFtTgcAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtdG8tb3RoZXItZG9j
dW1lbnQtc3RkZXJyLnR4dFVUBQADR8zEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGKHHUn/
15xi2gAAAKwCAACPABgAAAAAAAEAAACkge9PBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWlu
Zy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4
dFVUBQADR8zEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGKHHUkwKpA83QAAAAYDAACPABgA
AAAAAAEAAACkgZJRBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVz
b3VyY2UvcGF1c2UtcmVtb3ZlLWZyb20tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADSMzEV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGKHHUm2ByFuhAAAAMAAAACBABgAAAAAAAEAAACkgThTBwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tS
YXRlLXN0ZGVyci50eHRVVAUAA0jMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0hx1JwKPS
loQAAADAAAAAeAAYAAAAAAABAAAApIF3VAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRf
cmVmbGVjdHNfbm9uZV9hdXRvcGxheS1zdGRlcnIudHh0VVQFAANszMRXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAdYcdScl8EPjlAAAATAUAAHMAGAAAAAAAAQAAAKSBrVUHAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5LXN0ZGVyci50eHRVVAUAA23MxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1hx1Jrn0u7+8AAAAMBgAAegAYAAAAAAABAAAApIE/
VwcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXl0aHJvdWdo
LXN0ZGVyci50eHRVVAUAA27MxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB2hx1J8V6cyfQA
AADABgAAdgAYAAAAAAABAAAApIHiWAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVf
ZHVyaW5nX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUBQADcMzEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAHeHHUlvjqA07AAAAKQEAAB6ABgAAAAAAAEAAACkgYZaBwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADcczE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHiHHUlSv5rI7wAAAAwGAABzABgAAAAAAAEAAACk
gSZcBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfcGxheWluZy1zdGRl
cnIudHh0VVQFAANzzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAeIcdScFfC/yEAAAAGgEA
AGwAGAAAAAAAAQAAAKSBwl0HAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2luaXRp
YWwtc3RkZXJyLnR4dFVUBQADc8zEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHiHHUmIF9Oi
1gAAAMICAACEABgAAAAAAAEAAACkgexeBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvc3JjX3JlZmxl
Y3RzX2F0dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVyci50eHRVVAUAA3TMxFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABihx1JAAAAAAAAAAAAAAAAVQAYAAAAAAAAABAA7UGAYAcA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL1VUBQADSMzEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAGKHHUkAAAAAAAAAAAAAAABjABgAAAAAAAAAEADtQQ9hBwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvdHJhY2svdHJhY2stZWxlbWVudC9VVAUAA0jMxFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABihx1JaVsL+v4AAADsAQAAggAYAAAAAAABAAAApIGsYQcAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3RyYWNrL3RyYWNrLWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVU
BQADSMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHiHHUn7Exn0vAAAAOwBAABjABgAAAAA
AAEAAACkgWZjBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdmlkZW9fMDA4LXN0ZGVyci50eHRVVAUA
A3TMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB5hx1JuqFIRYQAAADAAAAAbAAYAAAAAAAB
AAAApIG/ZAcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvX3ZvbHVtZV9jaGVjay1zdGRlcnIu
dHh0VVQFAAN1zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAY4cdSQAAAAAAAAAAAAAAAFIA
GAAAAAAAAAAQAO1B6WUHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAUAA0nMxFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABihx1JEU44xhsBAACCBgAAZgAYAAAAAAABAAAApIF1ZgcAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L3RoZS1hdWRpby1lbGVtZW50L2F1ZGlvXzAwMS1zdGRlcnIudHh0VVQFAANIzMRXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAY4cdSZEWKKreAAAA0AIAAG4AGAAAAAAAAQAAAKSBMGgHAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQFAANJ
zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAYIcdSQAAAAAAAAAAAAAAACoAGAAAAAAAAAAQ
AO1BtmkHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL1VUBQADQ8zE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFCHHUnCF/UVogAAAE8CAABGABgAAAAAAAEAAACk
gRpqBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJmYWN0b3J5
X29wZW4xMS1zdGRlcnIudHh0VVQFAAMnzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUIcd
SbxxbNWZAAAAxQAAAEMAGAAAAAAAAQAAAKSBPGsHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2NvdW50LXN0ZGVyci50eHRVVAUAAyjMxFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABQhx1JvHFs1ZkAAADFAAAARAAYAAAAAAABAAAApIFSbAcAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291bnQyLXN0
ZGVyci50eHRVVAUAAyjMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABQhx1JvHFs1ZkAAADF
AAAARAAYAAAAAAABAAAApIFpbQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRl
eGVkREIvaWRiaW5kZXhfY291bnQzLXN0ZGVyci50eHRVVAUAAyjMxFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABVhx1JvHFs1ZkAAADFAAAASQAYAAAAAAABAAAApIGAbgcAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfY291bnQtc3RkZXJy
LnR4dFVUBQADMczEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSHHUm8cWzVmQAAAMUAAABK
ABgAAAAAAAEAAACkgZxvBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9pZGJvYmplY3RzdG9yZV9jb3VudDItc3RkZXJyLnR4dFVUBQADMMzEV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFSHHUkEiukDnwAAAIoBAABKABgAAAAAAAEAAACkgblwBwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9jb3VudDMtc3Rk
ZXJyLnR4dFVUBQADMMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFaHHUm8cWzVmQAAAMUA
AABLABgAAAAAAAEAAACkgdxxBwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4
ZWREQi9pZGJvYmplY3RzdG9yZV9kZWxldGU1LXN0ZGVyci50eHRVVAUAAzTMxFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABZhx1JvHFs1ZkAAADFAAAATgAYAAAAAAABAAAApIH6cgcAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRidHJhbnNhY3Rpb24tb25jb21w
bGV0ZS1zdGRlcnIudHh0VVQFAAM5zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXYcdSQSK
6QOfAAAAigEAAFgAGAAAAAAAAQAAAKSBG3QHAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvSW5kZXhlZERCL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLXN0ZGVyci50
eHRVVAUAA0HMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABghx1JvHFs1ZkAAADFAAAARgAY
AAAAAAABAAAApIFMdQcAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
d3JpdGVyLXN0YXJ2YXRpb24tc3RkZXJyLnR4dFVUBQADQ8zEV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAABeIHUkAAAAAAAAAAAAAAAAKABgAAAAAAAAAEADtQWV2BwBpbnNwZWN0b3IvVVQFAAOu
zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAASogdSQAAAAAAAAAAAAAAABMAGAAAAAAAAAAQ
AO1BqXYHAGluc3BlY3Rvci9kZWJ1Z2dlci9VVAUAAwvNxFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAB0hx1J3KLOotULAABY4QAAQQAYAAAAAAABAAAApIH2dgcAaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrLW9uLWV4Y2VwdGlvbi10aHJvdy1pbi1wcm9taXNlLXN0ZGVyci50eHRVVAUAA2vMxFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1iB1JyWl9A+xMAAD+7AEAOwAYAAAAAAABAAAApIFG
gwcAaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbW1hbmQtbGluZS1hcGktZXhjZXB0aW9uLWNyYXNoLWxv
Zy50eHRVVAUAA13NxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKiB1JqZn+ctIDAABfCwAA
OAAYAAAAAAABAAAApIGn0AcAaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbW1hbmQtbGluZS1hcGktZXhj
ZXB0aW9uLXN0ZGVyci50eHRVVAUAAwvNxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAXiB1J
AAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UHr1AcAaW5zcGVjdG9yL3VuaXQtdGVzdHMvVVQFAAOu
zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdYgdSQKPjPv4VgAAkJUBADMAGAAAAAAAAQAA
AKSBOtUHAGluc3BlY3Rvci91bml0LXRlc3RzL2FzeW5jLXRlc3Qtc3VpdGUtY3Jhc2gtbG9nLnR4
dFVUBQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABeIHUmZctE2+gMAAD8LAAAwABgA
AAAAAAEAAACkgZ8sCABpbnNwZWN0b3IvdW5pdC10ZXN0cy9hc3luYy10ZXN0LXN1aXRlLXN0ZGVy
ci50eHRVVAUAA67MxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA9iB1JAAAAAAAAAAAAAAAA
AwAYAAAAAAAAABAA7UEDMQgAanMvVVQFAAP1zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
PYgdSQnUu7HXAgAARQgAADYAGAAAAAAAAQAAAKSBQDEIAGpzL2FycmF5LXByb3RvLWZ1bmMtbGVu
Z3RoLWdldHRlci1leGNlcHQtY3Jhc2gtbG9nLnR4dFVUBQAD9czEV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAD2IHUmXdPd6rAIAAAUIAAAzABgAAAAAAAEAAACkgYc0CABqcy9hcnJheS1wcm90
by1mdW5jLWxlbmd0aC1nZXR0ZXItZXhjZXB0LXN0ZGVyci50eHRVVAUAA/XMxFd1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABTiB1JAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UGgNwgAanMvZG9t
L1VUBQADHs3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUnwHX9Ef0IAAMo8AQApABgA
AAAAAAEAAACkgeE3CABqcy9kb20vYXJyYXktam9pbi1idWctMTE1MjQtY3Jhc2gtbG9nLnR4dFVU
BQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADiIHUl8h2I5qwMAACkLAAAmABgAAAAA
AAEAAACkgcN6CABqcy9kb20vYXJyYXktam9pbi1idWctMTE1MjQtc3RkZXJyLnR4dFVUBQAD68zE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUlGrsoGPEAAABbjAAAvABgAAAAAAAEAAACk
gc5+CABqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtY3Jhc2gtbG9nLnR4dFVUBQAD
Xc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFKIHUlHq1TZHQMAALEJAAAsABgAAAAAAAEA
AACkgXO/CABqcy9kb20vYXJyYXktcHJvdG90eXBlLXByb3BlcnRpZXMtc3RkZXJyLnR4dFVUBQAD
HM3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFOIHUko2Xk2sAAAAO4AAAA1ABgAAAAAAAEA
AACkgfbCCABqcy9kb20vY2FsbGJhY2stZnVuY3Rpb24td2l0aC1oYW5kbGUtZXZlbnQtc3RkZXJy
LnR4dFVUBQADHs3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUnszFVC/1AAAB7uAQAs
ABgAAAAAAAEAAACkgRXECABqcy9kb20vUHJvbWlzZS1vblJlamVjdGVkLWRlZXAtY3Jhc2gtbG9n
LnR4dFVUBQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABqIHUkH+bCi5wMAAEYLAAAp
ABgAAAAAAAEAAACkgXoVCQBqcy9kb20vUHJvbWlzZS1vblJlamVjdGVkLWRlZXAtc3RkZXJyLnR4
dFVUBQADtMzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAByIHUkAAAAAAAAAAAAAAAAHABgA
AAAAAAAAEADtQcQZCQBqcy9rZGUvVVQFAAO3zMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
dYgdSctVzIm2TgAA9eQBAB8AGAAAAAAAAQAAAKSBBRoJAGpzL2tkZS9leGNlcHRpb25zLWNyYXNo
LWxvZy50eHRVVAUAA13NxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAciB1JRJP767QDAACw
CgAAHAAYAAAAAAABAAAApIEUaQkAanMva2RlL2V4Y2VwdGlvbnMtc3RkZXJyLnR4dFVUBQADt8zE
V3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFiIHUkAAAAAAAAAAAAAAAAGABgAAAAAAAAAEADt
QR5tCQBtZWRpYS9VVAUAAyjNxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB9hx1J4CLhwNoA
AABSAgAAHwAYAAAAAAABAAAApIFebQkAbWVkaWEvYXVkaW8tZGF0YS11cmwtc3RkZXJyLnR4dFVU
BQADfczEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAAeIHUkAAAAAAAAAAAAAAAATABgAAAAA
AAAAEADtQZFuCQBtZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAOOzMRXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAB4gdSagS+D2LAAAAmwAAAEgAGAAAAAAAAQAAAKSB3m4JAG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2Utc3RhbGxlZC1ob2xkcy1zbGVlcC1hc3NlcnRpb24tc3RkZXJyLnR4
dFVUBQADjszEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACqIHUk/2hdmwQAAACQDAAAoABgA
AAAAAAEAAACkgetvCQBtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQF
AAPPzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKogdSWsH/heKAAAAgAEAADAAGAAAAAAA
AQAAAKSBDnEJAG1lZGlhL3N2Zy1hcy1pbWFnZS13aXRoLW1lZGlhLWJsb2NrZWQtc3RkZXJyLnR4
dFVUBQAD0MzEV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACKIHUkAAAAAAAAAAAAAAAAMABgA
AAAAAAAAEADtQQJyCQBtZWRpYS90cmFjay9VVAUAA7/MxFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAiiB1Jne6pQMcAAABdAgAALwAYAAAAAAABAAAApIFIcgkAbWVkaWEvdHJhY2svdHJhY2st
Y3Vlcy1wYXVzZS1vbi1leGl0LXN0ZGVyci50eHRVVAUAA7/MxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAriB1Jz04p0pAAAAC9AAAAIQAYAAAAAAABAAAApIF4cwkAbWVkaWEvdW5zdXBwb3J0
ZWQtcnRzcC1zdGRlcnIudHh0VVQFAAPRzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVogd
STIusuFyAAAAmgIAACYAGAAAAAAAAQAAAKSBY3QJAG1lZGlhL3ZpZGVvLXBsYXllZC1yYW5nZXMt
MS1zdGRlcnIudHh0VVQFAAMkzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWIgdSQUMOcGs
AAAAFAMAACgAGAAAAAAAAQAAAKSBNXUJAG1lZGlhL3ZpZGVvLXBvc3Rlci1iYWNrZ3JvdW5kLXN0
ZGVyci50eHRVVAUAAyjNxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAANiB1JAAAAAAAAAAAA
AAAACAAYAAAAAAAAABAA7UFDdgkAcGx1Z2lucy9VVAUAA5rMxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAANiB1JfFC2mq4AAADxAAAALwAYAAAAAAABAAAApIGFdgkAcGx1Z2lucy9tb3VzZS1j
bGljay1pZnJhbWUtdG8tcGx1Z2luLXN0ZGVyci50eHRVVAUAA5rMxFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA9hx1Jos4t7WYCAACiFQAAGgAYAAAAAAABAAAApIGcdwkAcHl3ZWJzb2NrZXQu
d3MubG9nLWVyci50eHRVVAUAAwbMxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAuhx1JcWgl
sgcBAACPAgAAGgAYAAAAAAABAAAApIFWegkAcHl3ZWJzb2NrZXQud3MubG9nLW91dC50eHRVVAUA
A+jLxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC0hh1JAAAAAAAAAAAAAAAAGwAYAAAAAAAA
AAAApIGxewkAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQFAAMEy8RXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAtIYdSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSBBnwJAHB5d2Vic29j
a2V0Lndzcy5sb2ctb3V0LnR4dFVUBQADBMvEV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWI
HUlFJh050ScAAMuqAAAMABgAAAAAAAEAAACkgVt8CQByZXN1bHRzLmh0bWxVVAUAA17NxFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAAA5iB1JAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UFypAkA
c3B1dG5pay9VVAUAA+7MxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABUiB1JAAAAAAAAAAAA
AAAAFAAYAAAAAAAAABAA7UG0pAkAc3B1dG5pay9Db25mb3JtYW5jZS9VVAUAAyDNxFd1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAA5iB1JAAAAAAAAAAAAAAAAIwAYAAAAAAAAABAA7UECpQkAc3B1
dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy9VVAUAA+7MxFd1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAA5iB1JAAAAAAAAAAAAAAAAOwAYAAAAAAAAABAA7UFfpQkAc3B1dG5pay9Db25m
b3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS45X0VxdWFsaXR5X09wZXJhdG9ycy9VVAUAA+7MxFd1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA5iB1JAAAAAAAAAAAAAAAAXQAYAAAAAAAAABAA7UHU
pQkAc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHByZXNzaW9ucy8xMS45X0VxdWFsaXR5X09wZXJh
dG9ycy8xMS45LjRfVGhlX1N0cmljdF9FcXVhbHNfT3BlcmF0b3IvVVQFAAPuzMRXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAdYgdSRoGem1WVgAA2/8BAHgAGAAAAAAAAQAAAKSBa6YJAHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTFfRXhwcmVzc2lvbnMvMTEuOV9FcXVhbGl0eV9PcGVyYXRvcnMvMTEu
OS40X1RoZV9TdHJpY3RfRXF1YWxzX09wZXJhdG9yL1MxMS45LjRfQThfVDUtY3Jhc2gtbG9nLnR4
dFVUBQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADmIHUkHbK55+AMAAGwLAAB1ABgA
AAAAAAEAAACkgXP9CQBzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjlfRXF1
YWxpdHlfT3BlcmF0b3JzLzExLjkuNF9UaGVfU3RyaWN0X0VxdWFsc19PcGVyYXRvci9TMTEuOS40
X0E4X1Q1LXN0ZGVyci50eHRVVAUAA+7MxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA5iB1J
AAAAAAAAAAAAAAAAZgAYAAAAAAAAABAA7UEaAgoAc3B1dG5pay9Db25mb3JtYW5jZS8xMV9FeHBy
ZXNzaW9ucy8xMS45X0VxdWFsaXR5X09wZXJhdG9ycy8xMS45LjVfVGhlX1N0cmljdF9Eb2VzX25v
dF9lcXVhbHNfT3BlcmF0b3IvVVQFAAPuzMRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdYgd
SdsmTPnDTQAA1boBAIEAGAAAAAAAAQAAAKSBugIKAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTFfRXhw
cmVzc2lvbnMvMTEuOV9FcXVhbGl0eV9PcGVyYXRvcnMvMTEuOS41X1RoZV9TdHJpY3RfRG9lc19u
b3RfZXF1YWxzX09wZXJhdG9yL1MxMS45LjVfQThfVDUtY3Jhc2gtbG9nLnR4dFVUBQADXc3EV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADmIHUnQB6cc+wMAAGwLAAB+ABgAAAAAAAEAAACkgThR
CgBzcHV0bmlrL0NvbmZvcm1hbmNlLzExX0V4cHJlc3Npb25zLzExLjlfRXF1YWxpdHlfT3BlcmF0
b3JzLzExLjkuNV9UaGVfU3RyaWN0X0RvZXNfbm90X2VxdWFsc19PcGVyYXRvci9TMTEuOS41X0E4
X1Q1LXN0ZGVyci50eHRVVAUAA+7MxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABgiB1JAAAA
AAAAAAAAAAAAIQAYAAAAAAAAABAA7UHrVQoAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1l
bnQvVVQFAAMzzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVYgdSQAAAAAAAAAAAAAAADsA
GAAAAAAAAAAQAO1BRlYKAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjEzX1Ro
ZV90aHJvd19zdGF0ZW1lbnQvVVQFAAMhzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdYgd
SSJu7ejpVwAArxICAFUAGAAAAAAAAQAAAKSBu1YKAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3Rh
dGVtZW50LzEyLjEzX1RoZV90aHJvd19zdGF0ZW1lbnQvUzEyLjEzX0EyX1QxLWNyYXNoLWxvZy50
eHRVVAUAA13NxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA5iB1Ju+VATvgDAABsCwAAUgAY
AAAAAAABAAAApIEzrwoAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuMTNfVGhl
X3Rocm93X3N0YXRlbWVudC9TMTIuMTNfQTJfVDEtc3RkZXJyLnR4dFVUBQAD7szEV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAHWIHUla7pUs5kEAAPovAQBVABgAAAAAAAEAAACkgbezCgBzcHV0
bmlrL0NvbmZvcm1hbmNlLzEyX1N0YXRlbWVudC8xMi4xM19UaGVfdGhyb3dfc3RhdGVtZW50L1Mx
Mi4xM19BMl9UMi1jcmFzaC1sb2cudHh0VVQFAANdzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAVYgdSRmQEIT6AwAAbAsAAFIAGAAAAAAAAQAAAKSBLPYKAHNwdXRuaWsvQ29uZm9ybWFuY2Uv
MTJfU3RhdGVtZW50LzEyLjEzX1RoZV90aHJvd19zdGF0ZW1lbnQvUzEyLjEzX0EyX1QyLXN0ZGVy
ci50eHRVVAUAAyHNxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABgiB1JAAAAAAAAAAAAAAAA
OQAYAAAAAAAAABAA7UGy+goAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1lbnQvMTIuMTRf
VGhlX3RyeV9TdGF0ZW1lbnQvVVQFAAMzzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYIgd
SaMiuTsbBAAAggsAAFAAGAAAAAAAAQAAAKSBJfsKAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3Rh
dGVtZW50LzEyLjE0X1RoZV90cnlfU3RhdGVtZW50L1MxMi4xNF9BNS1jcmFzaC1sb2cudHh0VVQF
AAMzzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYIgdSUjoESzuAwAAQgsAAE0AGAAAAAAA
AQAAAKSByv8KAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50LzEyLjE0X1RoZV90cnlf
U3RhdGVtZW50L1MxMi4xNF9BNS1zdGRlcnIudHh0VVQFAAMzzcRXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAYIgdSQAAAAAAAAAAAAAAACwAGAAAAAAAAAAQAO1BPwQLAHNwdXRuaWsvQ29uZm9y
bWFuY2UvMTJfU3RhdGVtZW50LzEyLjFfQmxvY2svVVQFAAMzzcRXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAYIgdSTuHqzQjBAAArAsAAEIAGAAAAAAAAQAAAKSBpQQLAHNwdXRuaWsvQ29uZm9y
bWFuY2UvMTJfU3RhdGVtZW50LzEyLjFfQmxvY2svUzEyLjFfQTUtY3Jhc2gtbG9nLnR4dFVUBQAD
M83EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGCIHUllVJZK+AMAAGwLAAA/ABgAAAAAAAEA
AACkgUQJCwBzcHV0bmlrL0NvbmZvcm1hbmNlLzEyX1N0YXRlbWVudC8xMi4xX0Jsb2NrL1MxMi4x
X0E1LXN0ZGVyci50eHRVVAUAAzPNxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABUiB1JAAAA
AAAAAAAAAAAAOwAYAAAAAAAAABAA7UG1DQsAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1l
bnQvMTIuNl9JdGVyYXRpb25fU3RhdGVtZW50cy9VVAUAAyDNxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABUiB1JAAAAAAAAAAAAAAAAVgAYAAAAAAAAABAA7UEqDgsAc3B1dG5pay9Db25mb3Jt
YW5jZS8xMl9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3RhdGVtZW50cy8xMi42LjJfVGhlX3do
aWxlX3N0YXRlbWVudC9VVAUAAyDNxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABUiB1JgHt8
4pEAAAD6AAAAbgAYAAAAAAABAAAApIG6DgsAc3B1dG5pay9Db25mb3JtYW5jZS8xMl9TdGF0ZW1l
bnQvMTIuNl9JdGVyYXRpb25fU3RhdGVtZW50cy8xMi42LjJfVGhlX3doaWxlX3N0YXRlbWVudC9T
MTIuNi4yX0EyLWNyYXNoLWxvZy50eHRVVAUAAyDNxFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABUiB1JrS/roPQDAABCCwAAawAYAAAAAAABAAAApIHzDwsAc3B1dG5pay9Db25mb3JtYW5jZS8x
Ml9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3RhdGVtZW50cy8xMi42LjJfVGhlX3doaWxlX3N0
YXRlbWVudC9TMTIuNi4yX0EyLXN0ZGVyci50eHRVVAUAAyDNxFd1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAABUiB1JAAAAAAAAAAAAAAAAVAAYAAAAAAAAABAA7UGMFAsAc3B1dG5pay9Db25mb3Jt
YW5jZS8xMl9TdGF0ZW1lbnQvMTIuNl9JdGVyYXRpb25fU3RhdGVtZW50cy8xMi42LjNfVGhlX2Zv
cl9TdGF0ZW1lbnQvVVQFAAMgzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVIgdSYB7fOKR
AAAA+gAAAGwAGAAAAAAAAQAAAKSBGhULAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTJfU3RhdGVtZW50
LzEyLjZfSXRlcmF0aW9uX1N0YXRlbWVudHMvMTIuNi4zX1RoZV9mb3JfU3RhdGVtZW50L1MxMi42
LjNfQTEtY3Jhc2gtbG9nLnR4dFVUBQADIM3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSI
HUmM+9gU+QMAAGwLAABpABgAAAAAAAEAAACkgVEWCwBzcHV0bmlrL0NvbmZvcm1hbmNlLzEyX1N0
YXRlbWVudC8xMi42X0l0ZXJhdGlvbl9TdGF0ZW1lbnRzLzEyLjYuM19UaGVfZm9yX1N0YXRlbWVu
dC9TMTIuNi4zX0ExLXN0ZGVyci50eHRVVAUAAyDNxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABUiB1JAAAAAAAAAAAAAAAAPQAYAAAAAAAAABAA7UHtGgsAc3B1dG5pay9Db25mb3JtYW5jZS8x
Ml9TdGF0ZW1lbnQvMTIuN19UaGVfY29udGludWVfU3RhdGVtZW50L1VUBQADIM3EV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAFSIHUmAe3zikQAAAPoAAABWABgAAAAAAAEAAACkgWQbCwBzcHV0
bmlrL0NvbmZvcm1hbmNlLzEyX1N0YXRlbWVudC8xMi43X1RoZV9jb250aW51ZV9TdGF0ZW1lbnQv
UzEyLjdfQTlfVDEtY3Jhc2gtbG9nLnR4dFVUBQADIM3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFSIHUnGSLwd9gMAAEILAABTABgAAAAAAAEAAACkgYUcCwBzcHV0bmlrL0NvbmZvcm1hbmNl
LzEyX1N0YXRlbWVudC8xMi43X1RoZV9jb250aW51ZV9TdGF0ZW1lbnQvUzEyLjdfQTlfVDEtc3Rk
ZXJyLnR4dFVUBQADIM3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFSIHUkAAAAAAAAAAAAA
AAArABgAAAAAAAAAEADtQQghCwBzcHV0bmlrL0NvbmZvcm1hbmNlLzEzX0Z1bmN0aW9uX0RlZmlu
aXRpb24vVVQFAAMgzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAVIgdSQAAAAAAAAAAAAAA
AEoAGAAAAAAAAAAQAO1BbSELAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTNfRnVuY3Rpb25fRGVmaW5p
dGlvbi8xMy4yX0NyZWF0aW5nX0Z1bmN0aW9uX09iamVjdHMvVVQFAAMgzcRXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAVIgdSYB7fOKRAAAA+gAAAGUAGAAAAAAAAQAAAKSB8SELAHNwdXRuaWsv
Q29uZm9ybWFuY2UvMTNfRnVuY3Rpb25fRGVmaW5pdGlvbi8xMy4yX0NyZWF0aW5nX0Z1bmN0aW9u
X09iamVjdHMvUzEzLjIuMV9BOF9UMi1jcmFzaC1sb2cudHh0VVQFAAMgzcRXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAVIgdSWTeHIn2AwAAQgsAAGIAGAAAAAAAAQAAAKSBISMLAHNwdXRuaWsv
Q29uZm9ybWFuY2UvMTNfRnVuY3Rpb25fRGVmaW5pdGlvbi8xMy4yX0NyZWF0aW5nX0Z1bmN0aW9u
X09iamVjdHMvUzEzLjIuMV9BOF9UMi1zdGRlcnIudHh0VVQFAAMgzcRXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAVIgdSQAAAAAAAAAAAAAAACYAGAAAAAAAAAAQAO1BsycLAHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvVVQFAAMgzcRXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAVIgdSQAAAAAAAAAAAAAAAD0AGAAAAAAAAAAQAO1BEygLAHNwdXRuaWsvQ29uZm9ybWFu
Y2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC9VVAUAAyDNxFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABUiB1JAAAAAAAAAAAAAAAARAAYAAAAAAAAABAA7UGKKAsA
c3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2Jq
ZWN0LzE1LjEuMi9VVAUAAyDNxFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABUiB1JAAAAAAAA
AAAAAAAAUgAYAAAAAAAAABAA7UEIKQsAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2Jq
ZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMi8xNS4xLjIuMV9ldmFsL1VUBQADIM3E
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUmXGhVSC1cAANG2AQBxABgAAAAAAAEAAACk
gZQpCwBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjFfVGhlX0dsb2Jh
bF9PYmplY3QvMTUuMS4yLzE1LjEuMi4xX2V2YWwvUzE1LjEuMi4xX0EzLjNfVDQtY3Jhc2gtbG9n
LnR4dFVUBQADXc3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSIHUkBzQaGowMAAAYLAABu
ABgAAAAAAAEAAACkgUqBCwBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1
LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4yLzE1LjEuMi4xX2V2YWwvUzE1LjEuMi4xX0EzLjNf
VDQtc3RkZXJyLnR4dFVUBQADIM3EV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHWIHUn2l3b1
CBcHALfzJQAKABgAAAAAAAEAAACkgZWFCwBzdGF0cy5qc29uVVQFAANezcRXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAbogdSRaSyS17ZwEApWQjABkAGAAAAAAAAQAAAKSB4ZwSAHdwdHdrX3By
b2Nlc3NfbG9nLm91dC50eHRVVAUAA1DNxFd1eAsAAQT1AQAABBQAAABQSwUGAAAAAGMBYwELtgAA
rwQUAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287375</attachid>
            <date>2016-08-30 00:09:54 -0700</date>
            <delta_ts>2016-08-30 01:26:08 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>1201442</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1OCBA
QAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgTWlzYyBvdGhlciBjaGFuZ2VzOgorICAgICAgICAt
IGRlbGV0ZWQgdGhlIHVudXNlZCBDQUxMX1RIUk9XKCkgbWFjcm8gZnJvbSBMTEludFNsb3dQYXRo
cy5jcHAuCisgICAgICAgIC0gbW92ZWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoKSBmcm9tIEpT
T2JqZWN0LmggdG8gSlNPYmplY3RJbmxpbmVzLmguCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmN1c3RvbUhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JO
YW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJp
ZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
Ojpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpq
c0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlz
T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFp
bERlbGV0ZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1
c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5Ojps
ZW5ndGhHZXR0ZXIpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAg
KGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1
bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVu
Y3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAg
KGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1
bGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5j
dGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoSlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpj
b25jYXRBcHBlbmRPbmUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uU2xvd1BhdGhzOjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJl
dGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVh
cik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY0dldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChK
U0M6OnNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVG
cm9tRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6
OnRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5n
ZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dWTVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVF
cnJvcik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRo
cm93VHlwZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25GdXp6LmNwcDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJv
d091dE9mTWVtb3J5RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpmdW5jdGlvblByb3RvRnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5n
T3B0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRM
b2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yRm9ySXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cG9wKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6dG9TdHJpbmdTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omdl
dERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0dldHRlckJ1ZmZlcik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVy
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc6OnNldEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0Zyb21JdGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpk
ZWNvZGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZy
b21BcnJheUxpa2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0UHJvbWlzZSk6CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0
eU5hbWVJdGVyYXRvckZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpi
dWlsZCk6CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5l
cjo6am9pbmVkTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0VHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4p
OgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNJdGVyYXRvcj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMp
OgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFw
UHJvdG9GdW5jS2V5cyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6Cisg
ICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJv
dG9GdW5jVG9QcmVjaXNpb24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJv
dG90eXBlT2YpOgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJB
cnJheSk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJs
ZVByb3h5KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJy
b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6
OmNhbGxQcm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZv
cm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
SGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RFbnVtZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToK
KyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0
T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNvbGxlY3RNYXRjaGVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0
RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlND
OjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVy
TXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3Vy
Y2UpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVqZWN0Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToK
KyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNl
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpq
c1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChK
U0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2Rl
UG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlND
Ojp0b0xvY2FsZUNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0JsaW5rKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jSXRhbGljcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1N1cCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQW5jaG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6
CisgICAgICAgIChKU0M6OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25D
aGVja2VyOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1i
b2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0
b3JLZXlGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6
OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhy
b3dFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNr
KToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAg
ICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6OnZtKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6VGhyb3dTY29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OlRocm93U2NvcGUpOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6
CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93
U2NvcGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9u
OjpUaHJvd1Njb3BlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZt
KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAg
ICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vh
a01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAg
KiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFr
U2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgor
ICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIw
MjU2OCk6IFdlYiBJbnNwZWN0b3I6IEV4cGFuZGluZyBBcnJheSBQcm90b3R5cGUgaW4gQ29uc29s
ZSBzaG93cyBubyBwcm9wZXJ0aWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw2ICs4MTQsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisgICAgcnVudGlt
ZS9UaHJvd1Njb3BlLmNwcAogICAgIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5jcHAKICAgICBy
dW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hl
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsMTIgKzM2NSwx
NSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBDdXN0b21HZXR0ZXIq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEN1c3RvbUdldHRlcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2Jq
ZWN0LT5nZXQoZXhlYywgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
InNob3VsZFRocm93IikpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDEwMCkpOwogICAgIH0KIH07CkBAIC00NzAsOSArNDcz
LDEyIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgUnVudGltZUFycmF5KiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CiAgICAgfQogCkBAIC0xMjMyLDExICsxMjM4LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUm9v
dCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iKSkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHJvb3QpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
cm9vdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxl
bWVudChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDE2LDIwICsxNDI1LDIzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZl
dGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSog
YXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAw
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAg
ICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0
aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xNDM4LDcgKzE0NTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgc3RvcFdhdGNoLnN0b3Ao
KTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHNjb3BlLCBleGNlcHRpb24p
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICAKQEAgLTE0NDcsMjMgKzE0NTksMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJ1bgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVu
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBzb3Vy
Y2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKICAgICBKU0FycmF5
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7
ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0KAotICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAg
ICAgICAgdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNl
cHRpb247CiAgICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3Vy
Y2Uoc291cmNlKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBleGNlcHRpb24pOworICAgICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDcyLDI0ICsxNDg3LDMw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3Jp
cHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNj
cmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBv
cGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQg
bm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwg
SlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRp
b25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NDk4LDMwICsxNTE5LDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25M
b2EKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNv
dXJjZShzb3VyY2VDb2RlKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJl
YWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmlsbEJ1ZmZlcldp
dGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHNjcmlw
dCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3lu
dGF4KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9t
TG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwogCkBAIC0xNTMzLDcgKzE1NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2hlCiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRTeW50YXgp
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgc3ludGF4RXhjZXB0aW9u
KTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNl
ZE1TKCkpKTsKIH0KIApAQCAtMTYzOCwxMiArMTY2NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpKSk7CiAgICAg
CiAgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiKSkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIi
KSkpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAg
YnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOwpAQCAtMTgxMCwyNyArMTg0
MCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8
Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZp
bGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
b3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBKU0ludGVybmFsUHJvbWlzZSog
cHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBmaWxlTmFtZSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBlcnJvcjsKLSAgICBKU0Z1bmN0aW9uKiBlcnJv
ckhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykg
eworICAgIEpTRnVuY3Rpb24qIGVycm9ySGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4
ZWNTdGF0ZSogZXhlYykgewogICAgICAgICBlcnJvciA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0pOwogCiAg
ICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRyLCBlcnJvckhhbmRsZXIpOwotICAgIGV4ZWMt
PnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAg
aWYgKGVycm9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0xODU4LDYgKzE4OTEsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTg3MCw3ICsxOTA2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRj
aC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCB0b1N0cmluZygiU3lu
dGF4RXJyb3I6ICIsIGVycm9yLm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
dG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3IubGlu
ZSgpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdl
dEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE5MDcsMTAgKzE5NDMsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKLSAgICBpZiAoIWV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3Rh
cnRlZCIpKSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2FtcGxpbmcgcHJvZmlsZXIgd2Fz
IG5ldmVyIHN0YXJ0ZWQiKSkpKTsKIAotICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXhlYy0+dm0o
KS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CisgICAgU3RyaW5nIGpz
b25TdHJpbmcgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CiAg
ICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShleGVj
LCBqc29uU3RyaW5nKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw2ICs0NCw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgRW5jb2RlZEpTVmEKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxs
YmFja0Z1bmN0aW9uOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgTm90U3RyaWN0TW9kZSkpKTsKQEAgLTYxLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBBUElDYWxsYmFjawogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8VCo+KHRvSlMo
ZnVuY3Rpb25SZWYpKS0+ZnVuY3Rpb25DYWxsYmFjaygpKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0
aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsK
ICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKIAogICAgIC8vIHJlc3VsdCBt
dXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4KICAgICBpZiAoIXJlc3VsdCkKQEAgLTczLDYgKzc1LDgg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFjawogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rp
b246OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29u
c3RydWN0b3IpOwpAQCAtOTIsMTIgKzk2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgQVBJQ2FsbGJhY2sKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3Ry
dWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OwogICAgICAgICB9CiAgICAgICAgIC8vIHJlc3VsdCBtdXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4K
ICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogICAgIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTMzLDYg
KzEzMyw5IEBAIFN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmEKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtMTU5LDcgKzE2Miw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5n
ZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRF
bnVtLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjAwLDYgKzIwMyw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpnZXRPd25Qcm8KIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgY29uc3QgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxjb25zdCBKU0NhbGxiYWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgY3R4
ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmpl
Y3QpOwpAQCAtMjEwLDcgKzIxNiw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpkZWZhdWwKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gY29udmVydFRvVHlwZShjdHgsIHRoaXNSZWYsIGpzSGlu
dCwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4
ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJlc3VsdCkKQEAgLTIyNCw2ICsyMzAsOSBA
QCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRo
aXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTI0Miw3ICsyNTEsNyBAQCBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCB2YWx1
ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0yNTksNyArMjY4LDcgQEAgYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFt
ZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhl
YywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNzMsNyArMjgy
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc09i
amVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJv
cGVydHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI4
NSw2ICsyOTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
SW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtMzAzLDcgKzMxNSw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQo
KSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CkBAIC0zMjAsNyArMzMyLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dEJ5SW5kZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBlbnRyeS0+cHJvcGVydHlOYW1lUmVmLmdldCgpLCB2YWx1ZVJlZiwgJmV4
Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQyLDYg
KzM1NCw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYg
Y3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNP
YmplY3QpOwpAQCAtMzU5LDcgKzM3NCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpkZWxldGVQcm8KICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsZXRlUHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
QEAgLTQwOCw2ICs0MjMsOSBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CiAgICAgSlNDb250
ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Rv
clJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTQyNiw3ICs0NDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
dG9KUyhjYWxsQXNDb25zdHJ1Y3RvcihleGVjUmVmLCBjb25zdHJ1Y3RvclJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC00MzgsNiArNDU2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9
IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtNDUyLDcgKzQ3Myw3IEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpjdXN0b21IYXMKICAgICAgICAgICAgICAgICByZXN1bHQgPSBoYXNJbnN0
YW5jZShleGVjUmVmLCB0aGlzUmVmLCB2YWx1ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24p
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzUs
NiArNDk2LDkgQEAgQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYQogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NvbnRl
eHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVm
ID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0
b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90
U3RyaWN0TW9kZSkpKTsKQEAgLTQ5Myw3ICs1MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01NzAsNiArNTk0LDkgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVy
aXRzKAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9S
ZWYodGhpcyk7CiAgICAgCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCkpIHsKQEAgLTU4NCw3ICs2MTEsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0U3RhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9w
ZXJ0eSh0b1JlZihleGVjKSwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwg
JmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pT
KGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQpAQCAtNjAxLDYgKzYyOCw5IEBAIEpTVmFsdWUgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRTdGEKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09i
aiA9IGFzQ2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICAvLyBDaGVjayBmb3Ig
Y2FjaGVkIG9yIG92ZXJyaWRlIHByb3BlcnR5LgpAQCAtNjEzLDcgKzY0Myw2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgICAgIGlmIChPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3MtPnN0
YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlv
bkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rp
b24gPSBlbnRyeS0+Y2FsbEFzRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9
IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwg
Y2FsbEFzRnVuY3Rpb24sIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobyk7CkBAIC02MjMsMTIg
KzY1MiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rp
b24gY2FsbGJhY2suIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rp
b24gY2FsbGJhY2suIikpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYodGhpc09iaik7CkBAIC02NDYsNyArNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldFBy
b3BlcnR5KHRvUmVmKGV4ZWMpLCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNl
cHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
dG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTY1NSw3ICs2ODcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJoYXNQcm9wZXJ0eSBj
YWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4i
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5
IGNhbGxiYWNrIHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0
LiIpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDkgKzEwMCwxMSBAQCBpbmxpbmUgVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShKCiAK
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlVHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlw
ZWRBcnJheVR5cGUgdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghYnVm
ZmVyKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIHN3aXRjaCAodHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDk2
LDggKzIwOTYsMTAgQEAKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuY3BwICovOyB9OwogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTJFNkE3QjFENkVBNjJDMDA2MEY4OTYgLyogVGhy
b3dTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi87IH07CiAJCUZF
MzE4RkRGMUNBQzk4MjcwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4
RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmggKi87IH07CisJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0
MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsK
IAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUz
ODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpA
QCAtMjEyNCw2ICsyMTI2LDcgQEAKIAkJRkU1MDY4NjcxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVy
cmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNw
cCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNTE4
M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKIAkJRkU1OTMyQTgxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjAyOUQ4MUQ2RTFFMzMw
MDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2OEM2MzgxQjkwREUwQjAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYzNTFCOTBE
REQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLzsgfTsKIAkJRkU3QkE2
MEYxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyog
SGVhcFZlcmlmaWVyLmNwcCAqLzsgfTsKQEAgLTQzOTgsOCArNDQwMSwxMCBAQAogCQlGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlDMTVG
MDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2Nv
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1
NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQg
LyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocm93U2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xs
YXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTMxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NDI2LDYgKzQ0MzEsNyBAQAogCQlGRTUwNjg2NjFBRTI1RTI4
MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERlZmVycmVkU291cmNlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1FbnRyeVNjb3BlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUVudHJ5
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2MDI5RDgxRDZFMUUzMzAw
MzAyMDREIC8qIFRocm93U2NvcGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJvd1Njb3BlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY4QzYzNjFCOTBEREQ5MDA0
MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTI5LDYgKzYxMzUsOSBAQAogCQkJCTcwRUNBNjA0
MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi8sCiAJCQkJMEZBMkMx
NzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8sCiAJCQkJMEZBMkMx
N0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovLAorCQkJCUZFMkU2QTdB
MUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLywKKwkJCQlGRTM0MjIxMTFENkI4
MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovLAorCQkJCUZFNjAyOUQ4MUQ2RTFFMzMwMDMw
MjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLywKIAkJCQkwRjU1OTg5NzE3Qzg2QzU2MDBB
MUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLywKIAkJCQkwRjJCNjZEODE3QjZCNUFCMDBB
N0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggKi8sCiAJCQkJMEYyQjY2RDkxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTc2MzUsNiArNzY0NCw3
IEBACiAJCQkJQkMxOEM0MDUwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUzNDIyMTIxRDZCODFD
MzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRF
OTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2
RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRl
ZC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Njc2LDYgKzc2ODYsNyBAQAogCQkJCTBGRTA1MDFBMUFB
OTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2Jq
ZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDRE
IC8qIFRocm93U2NvcGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMUIxQUE5
MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkUwMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTkxNzcsNiArOTE4OCw3IEBACiAJCQkJMEZD
RUZBQUIxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTJFNkE3QjFENkVBNjJDMDA2MEY4OTYgLyog
VGhyb3dTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjhEQUVB
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsOCAr
MTM4LDEwIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVn
YXRpdmUiKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUi
KSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC03MjUs
MTIgKzcyNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAg
ICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50KTsKICAgICAKICAgICBpZiAoIWJhc2UuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNTdHJpbmcqIGlucHV0
ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKQEAgLTc2
OSwxMiArNzcyLDEzIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QK
ICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QXJndW1lbnQpOwogCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05MzMs
OSArOTM3LDEwIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXQKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0p
OwogCiAgICAgaWYgKFVOTElLRUxZKHNpemUgPCAwKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2gg
cG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4odGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRl
Z2VyLiIpKSkpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlKCp2bSwg
YXJyYXlTdHJ1Y3R1cmUsIHNpemUpOwogICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3Vy
ZSB0aGF0IHRoZSBiYWNraW5nIHN0b3JlIGlzIGluIHRvLXNwYWNlLgpAQCAtMTM4OCw5ICsxMzkz
LDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTIKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlZnQtPmxlbmd0aCgpLCByaWdodC0+bGVuZ3Ro
KCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xNDAxLDkgKzE0MDcsMTAgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1ha2VSb3BlMwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oYS0+
bGVuZ3RoKCksIGItPmxlbmd0aCgpLCBjLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MTQsNiArMTQy
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEUKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU1N0cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKICAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBo
YXZlIGJlZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0MjEsNyArMTQyOSw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEUKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlv
bigpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVuZ3RoKCksIHN0
cjItPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtMTQzMiw2ICsxNDQwLDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoRQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNW
YWx1ZTo6ZGVjb2RlKGEpLnRvU3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9u
KCkpOyAvLyBJbXBvc3NpYmxlLCBzaW5jZSB3ZSBtdXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRp
dmVzLgpAQCAtMTQ0MSw3ICsxNDUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0ckNhdDMoRQogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92
ZXJmbG93czxpbnQzMl90PihzdHIxLT5sZW5ndGgoKSwgc3RyMi0+bGVuZ3RoKCksIHN0cjMtPmxl
bmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTU0NSw3ICsxNTU0LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93U3RhY2tPdgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiB9CiAKIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplT2ZWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCkKQEAgLTE3MzIsMTMgKzE3NDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzY29wZS0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xv
dCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAg
IEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0cyk7CiAgICAgICAgICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAg
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtMTc0Niw3ICsx
NzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgICAg
ICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3ZlIHdlIG5lZWQgYSBURFogY2hl
Y2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNsb3cgcGF0aC4KICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzYwLDYgKzE3NzEsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RHluYW1pY1ZhCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCk7
CiAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKGdldFB1dEluZm9CaXRzKTsKQEAgLTE3NzEsMTMg
KzE3ODMsMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYQogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAgICAgaWYgKHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihl
eGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVy
dHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw5ICs5NSwxMiBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZShFCiAKIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBh
cmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBwcm9ncmFtID0gc2Ny
aXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTEwNyw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpldmFsdWF0ZVdpCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uID0gZXhlYy0+YXJn
dW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMsIG1ha2VTb3VyY2UocHJvZ3JhbSksIHNjb3BlRXh0ZW5z
aW9uLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEyMCArNzcsMTU2IEBAIHZvaWQg
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmkKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlKGV4ZWMpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmpl
Y3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25J
c0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzSFRN
TEFsbENvbGxlY3Rpb24oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwU2l6ZShleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbldlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtN
YXBFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25X
ZWFrU2V0RW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0RW50
cmllcyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1
YnR5cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VidHlwZShleGVjKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFBy
b3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFs
dWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Z2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzKGV4ZWMpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDIwNTE3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsOSArNzcsMTIgQEAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp+SlNKYXZhU2NyaXB0Q2FsbAogCiBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50
IG11c3QgYmUgYSBzdHJpbmcuIikpOwogCiAgICAgU3RyaW5nIHNjcmlwdCA9IHNjcmlwdFZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC04OSw3ICs5Miw3IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFs
dWF0ZVcKICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb24gPSBleGVjLT5hcmd1bWVudCgxKS5n
ZXRPYmplY3QoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwoKS5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihzY3JpcHQsIHNjb3BlRXh0ZW5zaW9uLCBleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0
aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
NiwxMTAgKzc2LDE0MyBAQCB2b2lkIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6Zmlu
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+c2NvcGVEZXNjcmlwdGlvbnMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
IWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNhbGxlcihleGVjKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNl
SUQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zb3VyY2VJRChleGVjKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlTGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmxpbmUoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUNvbHVtbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENh
bGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVt
bihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+ZnVuY3Rpb25OYW1lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVDaGFpbihleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhp
c09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVR5cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRD
YWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50eXBl
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVJc1RhaWxEZWxldGVkKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxs
RnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
aXNUYWlsRGVsZXRlZChleGVjKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDEyICs0NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9pbnRlcnBy
ZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAgICAgICAgICAgICAsIG1fZW50cnlTY29w
ZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAg
ICAgICAgeworICAgICAgICAgICAgVk0mIHZtID0gbV9lbnRyeVNjb3BlLnZtKCk7CisgICAgICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgICAg
IEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewog
ICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAg
ICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2Fs
bChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUs
IGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1l
bnRzLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgbV92YWxpZCA9ICFj
YWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwLCAyMDEyLTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24g
WndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEy
Nyw2ICsxMjcsOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgCiAK
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKQEAgLTEzNCwxMCArMTM3LDEwIEBAIEpTVmFsdWUgZXZhbChDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIXByb2dyYW0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuIHByb2dyYW07CiAKLSAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZyYW1lKGNhbGxG
cmFtZS0+dm0oKSwgY2FsbEZyYW1lKTsKKyAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZy
YW1lKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
YWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVl
KGNhbGxGcmFtZSk7CkBAIC0xODEsNyArMTg0LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJh
bCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIApAQCAtMTkwLDE3ICsxOTMsMjAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIH0KIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUt
PnRoaXNWYWx1ZSgpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+
dm0oKS5pbnRlcnByZXRlcjsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bS5pbnRl
cnByZXRlcjsKICAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1l
LCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4pOwogfQogCiB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWSgh
YXJndW1lbnRzLmlzQ2VsbCgpKSkgewogICAgICAgICBpZiAoYXJndW1lbnRzLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAgICAgIGNhbGxG
cmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZUludmFsaWRGdW5jdGlv
bkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBhcmd1bWVudHMpKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgCkBAIC0yMTUsNyArMjIxLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcgogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAg
ICAgY2FzZSBTeW1ib2xUeXBlOgotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNh
bGxGcmFtZSwgIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFt
ZSwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTIzNywyMSArMjQzLDI1IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1l
KiBjYWxsRnIKIAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mIHZtLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xv
dHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0
eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCiB1bnNpZ25lZCBzaXpl
RnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYXJn
dW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZU9mVmFyYXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywg
Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBj
YWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBudW1Vc2VkU3RhY2tTbG90cywgbGVuZ3Ro
ICsgMSk7CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heEFyZ3VtZW50cyB8fCAhdm0uZW5z
dXJlU3RhY2tDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkgewotICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIApAQCAtODIyLDE1ICs4MzIsMTYgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShQcm9ncmFtRXhlYwogewogICAgIEpTU2NvcGUqIHNjb3BlID0gdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCF2
bS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAg
ICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JC
dXN5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwog
CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEg
SlNPTiBvYmplY3QuIElmIHNvLAogICAgIC8vIHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3Qg
aGVyZS4gRWxzZSwgd2UnbGwgaGFuZGxlIHJlYWwgSlMgY29kZQpAQCAtODcxLDIyICs4ODIsMjIg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmdldFByb3Bl
cnR5U2xvdChjYWxsRnJhbWUsIEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUsIHNsb3QpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBKU09OUFBh
dGhbaV0ubV9wYXRoRW50cnlOYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBKU09OUFBhdGhbaV0ubV9wYXRoRW50cnlOYW1l
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWRKU09OUDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3Qg
PSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZU9iamVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVu
dHJ5TmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2Fz
ZSBKU09OUFBhdGhFbnRyeVR5cGVMb29rdXA6IHsKICAgICAgICAgICAgICAgICAgICAgYmFzZU9i
amVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
T05QUGF0aFtpXS5tX3BhdGhJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
ODk5LDI5ICs5MTAsMjkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhl
YwogICAgICAgICAgICAgc3dpdGNoIChKU09OUFBhdGgubGFzdCgpLm1fdHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBKU09OUFBhdGhFbnRyeVR5cGVDYWxsOiB7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoLmxhc3Qo
KS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25F
cnJvcihjYWxsRnJhbWUsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIganNvbkFyZzsKICAgICAgICAgICAgICAgICBqc29uQXJnLmFwcGVuZChKU09OUFZh
bHVlKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTT05QUGF0aC5zaXpl
KCkgPT0gMSA/IGpzVW5kZWZpbmVkKCk6IGJhc2VPYmplY3Q7CiAgICAgICAgICAgICAgICAgSlNP
TlBWYWx1ZSA9IEpTQzo6Y2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXNWYWx1ZSwganNvbkFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBhdGhF
bnRyeVR5cGVEb3Q6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dChjYWxsRnJhbWUs
IEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lLCBKU09OUFZhbHVlLCBzbG90KTsKLSAg
ICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
ICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIEpTT05QUGF0aEVudHJ5VHlwZUxvb2t1cDogewogICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QucHV0QnlJbmRleChjYWxsRnJhbWUsIEpTT05QUGF0aC5sYXN0KCku
bV9wYXRoSW5kZXgsIEpTT05QVmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlm
ICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTk0
MSwxOCArOTUyLDIwIEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8g
Ynl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgogICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5pbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyh2bSwgY2FsbEZyYW1lLCBzY29wZSkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGVycm9yKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXhj
ZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpKTsKIAogICAgIFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9j
azsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVj
dXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVG
b3JDYWxsLCB0ZW1wQ29kZUJsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248UHJvZ3Jh
bUV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0ganNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPihlcnJvcikp
OworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKSk7CiAgICAgICAgIGNv
ZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAg
fQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxsRnJh
bWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihj
YWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAKICAgICBpZiAoc2NvcGUtPnN0cnVjdHVyZSgp
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQogICAgICAgICBzY29wZS0+ZmxhdHRlbkRpY3Rp
b25hcnlPYmplY3Qodm0pOwpAQCAtOTcxLDYgKzk4NCw4IEBAIGZhaWxlZEpTT05QOgogSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0
KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0g
Y2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5
KCkpCkBAIC05OTMsMTMgKzEwMDgsMTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVj
dCk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0g
Y2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwg
c2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBBU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVF
cnJvcikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwog
CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+
bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTEwMDcsNyArMTAyMyw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgbmV3Q29kZUJs
b2NrID0gMDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
Y2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGZ1
bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTAxNSwxMSAr
MTAzMSwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAg
SlNWYWx1ZSByZXN1bHQ7CiAgICAgewogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAg
ICAgICBpZiAoaXNKU0NhbGwpCisgICAgICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAgICAg
cmVzdWx0ID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKSwgJnZtLCAmcHJvdG9D
YWxsRnJhbWUpKTsKLSAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0ganNOdWxsKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDMwLDEyICsxMDQ3LDE0
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIEpTT2JqZWN0KiBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3
VGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2FsbEZyYW1l
LT5oYWRFeGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAg
ICAgLy8gV2UgdGhyb3cgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugd2UgaGF2ZSB0byByZXR1cm4gc29t
ZXRoaW5nICJ2YWxpZCIgYnV0IHdlJ3JlCiAgICAgLy8gYWxyZWFkeSBpbiBhbiBpbnZhbGlkIHN0
YXRlLgogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKLSAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhy
b3dTY29wZSkpOwogCiAgICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVjdFR5cGUgPT0g
Q29uc3RydWN0VHlwZTo6SlMpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKQEAgLTEw
NTQsMTMgKzEwNzMsMTMgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KAogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKyAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
LCB0aHJvd1Njb3BlKSk7CiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBD
b21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25z
dHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciksIHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2spOwogICAgICAgICBpZiAo
VU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9y
KSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogCiAgICAgICAgIEFTU0VSVCghIW5l
d0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKQEAgLTEwNjgsNyArMTA4Nyw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrID0gMDsKIAogICAgIGlmIChV
TkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CiAgICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQs
IGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTA5NSw2ICsxMTE0LDcgQEAgSlNPYmplY3Qq
IEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnBy
ZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxs
RnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlKiBhcmdzKQogewogICAgIFZNJiB2bSA9ICpzY29w
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICAKICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCkBAIC0xMTA0LDcgKzExMjQsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yCiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOwogICAgIGlmIChlcnJvcikgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4gQ2FsbEZyYW1l
Q2xvc3VyZSgpOwogICAgIH0KICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkID0gZmFsc2U7CkBAIC0xMTIwLDcgKzExNDAsOCBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFt
ZUNsb3N1cmUmIGNsb3N1cmUpIAogewogICAgIFZNJiB2bSA9ICpjbG9zdXJlLnZtOwotICAgIAor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgp
KQpAQCAtMTEyOSw3ICsxMTUwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxs
RnJhbWVDbAogICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwogCiAg
ICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjbG9zdXJlLm9sZENh
bGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAK
ICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2xvc3VyZS5m
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZt
LCBjbG9zdXJlLnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExNDAsNyArMTE2MSw4IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNTY29wZSogc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgp
OwotICAgIAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VS
VCghdm0uZXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwpA
QCAtMTE1MCw3ICsxMTcyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhl
Y3V0YQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmpl
Y3QoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUpKTsgICAgICAgIAorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcyA9IGV2YWwtPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBl
dmFsLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsKQEAgLTExODEsNyArMTIwMyw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgQ29kZUJsb2NrKiB0
ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXZhbC0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBudWxscHRyLCBzY29w
ZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFj
b21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENv
ZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTE5Miw3ICsxMjE0LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZhcmlhYmxlKGkpOwogICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgICAgIGlmIChKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxF
bnZpcm9ubWVudCwgY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VTdHJpbmco
IkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJp
bmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgbWFrZVN0cmluZygi
Q2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmlu
ZyhpZGVudC5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAt
MTIwMCw3ICsxMjIyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YQogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgY2FsbEZyYW1lLCBmdW5jdGlv
bi0+bmFtZSgpLCBzbG90KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxp
Y2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhmdW5jdGlvbi0+bmFtZSgp
LmltcGwoKSksICInIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNy
ZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rp
b24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMjI5LDcgKzEyNTEsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJt
aW5hdGlvbihjYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCiAKQEAgLTEyNDUsNiArMTI2Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGEKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmly
b25tZW50KiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoc2NvcGUt
PnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CkBAIC0xMjU1LDE5ICsxMjc4LDE5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9k
dWxlUHJvZ3IKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrOwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2Nr
OwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBudWxscHRyLCBz
Y29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwogICAgICAgICBpZiAoVU5MSUtFTFko
ISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZy
YW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRo
cm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChV
TkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAgICAgLy8gV2UgcGFzcyBpbiBvdXIgb3duIGNv
ZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFtZSBoYXNuJ3QgYmVlbiBwb3B1bGF0ZWQuCiAg
ICAgVk0qIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CiAKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50
b3BWTUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxl
ckZyYW1lKHZtRW50cnlGcmFtZSk7CkBAIC05OCw0MyArOTksNDggQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgIH0KIAogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0g
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpOworICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dEaXZpZGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIFZNRW50cnlGcmFtZSogdm1FbnRy
eUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1l
ID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKIAogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7
CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKLSAgICB2bS0+dGhyb3dF
eGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBBU0NJSUxpdGVy
YWwoIkRpdmlzaW9uIGJ5IHplcm8gb3IgZGl2aXNpb24gb3ZlcmZsb3cuIikpKTsKKyAgICB0aHJv
d0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBB
U0NJSUxpdGVyYWwoIkRpdmlzaW9uIGJ5IHplcm8gb3IgZGl2aXNpb24gb3ZlcmZsb3cuIikpKTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93T3V0T2ZCb3VuZHNBY2Nlc3NF
cnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIFZNRW50cnlGcmFt
ZSogdm1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKIAogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxs
ZXJGcmFtZSk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKLSAgICB2
bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBB
U0NJSUxpdGVyYWwoIk91dC1vZi1ib3VuZHMgYWNjZXNzLiIpKSk7CisgICAgdGhyb3dFeGNlcHRp
b24oY2FsbGVyRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRl
cmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKSkpOwogfQogI2VuZGlmCiAKIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICp2bSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChtaXNz
aW5nQXJnQ291bnQgPCAwKSB7CiAgICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0g
dm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4
ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUsIHNjb3BlKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwpAQCAtMTQzLDEzICsxNDksMTQgQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7
CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChtaXNzaW5nQXJn
Q291bnQgPCAwKSB7CiAgICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0gdm0tPnRv
cFZNRW50cnlGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNh
bGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldp
dGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUsIHNjb3BlKTsKICAgICB9CiAKICAgICByZXR1cm4g
bWlzc2luZ0FyZ0NvdW50OwpAQCAtMjU0LDkgKzI2MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIGlmICghYmFzZS0+aXNP
YmplY3QoKSkgewotICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxp
ZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAg
ICAKQEAgLTI4MywxMSArMjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW4KICAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CiAKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFt
ZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTc5NCw2ICs4MDMsNyBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+
c2V0Q29kZUJsb2NrKDApOwogCkBAIC04MTksNyArODI5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICB9CiAgICAgCiAgICAgICAgIEFTU0VSVChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihl
eGVjLCBjYWxsZWUpKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAg
IHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg0Niw3ICs4NTYsNyBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgfQogICAgIAogICAgIEFTU0VSVChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7
CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVy
cm9yKGV4ZWMsIGNhbGxlZSkpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgIHZt
LT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEtlZXBUaGVGcmFtZSkpOwpAQCAtODU2LDYgKzg2Niw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpOwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC04NjUsNiAr
ODc3LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNhY2hlIHRoZXNlIGtpbmRzIG9mIGNhbGxzLiBUaGV5IGNh
biBiZSBjb21tb24gYW5kIGN1cnJlbnRseSB0aGV5IGFyZQogICAgICAgICAvLyBleHBlbnNpdmUu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ0
NTgKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVI
b3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pOwogICAgIH0K
IApAQCAtODkyLDcgKzkwNSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGkKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBp
ZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHko
KSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
ZXhlYywgY2FsbGVlKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVw
VGhlRnJhbWUpKTsKQEAgLTkwMCw4ICs5MTMsOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4
ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3Ig
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPihleGVjQ2FsbGVlLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7Cisg
ICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwK
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsK
QEAgLTkyNyw2ICs5NDEsOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JX
aXRoCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBj
YWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCkBAIC05NDcsNyArOTYzLDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKTsKIAogICAgICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOworICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRo
ZUZyYW1lKSk7CkBAIC05NTYsNyArOTcyLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2
aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4
ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oZXhlY0NhbGxlZSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xv
dCk7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZy
YW1lKSk7CkBAIC05NjQsNyArOTgwLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0
dWFsRm9yV2l0aAogICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpKSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBm
dW5jdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC0xMTM5LDkgKzExNTUsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSZWdFeHAqIHJlZ2V4cCA9IHN0YXRpY19j
YXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CiAgICAgaWYgKCFyZWdleHAtPmlzVmFsaWQoKSkgewot
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBy
ZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC0xMTU2LDkgKzExNzQsMTAgQEAgVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFu
ZGxlVwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
ZXhlYykpKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtMTE2NywxMyArMTE4NiwxNSBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGF0aWNFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBlcnJvck1lc3NhZ2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGVycm9yTWVzc2FnZVZhbHVlLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSBhc1N0cmluZyhlcnJvck1lc3NhZ2VWYWx1ZSktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChyZWZl
cmVuY2VFcnJvckZsYWcpCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7
CiAgICAgZWxzZQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJf
dCBkZWJ1Z0hvb2tJRCkKQEAgLTE4NzEsMTMgKzE4OTIsMTQgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlJZAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIWJhc2VP
YmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgdWlkKSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIApAQCAtMTg5MCw2ICsx
OTEyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS50b09i
amVjdChleGVjKTsKICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5
KTsKQEAgLTE5MDksNyArMTkzMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmEKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsIHByb3BlcnR5KTsKICAgICB9CiAgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERl
bGV0ZTsKIH0KIApAQCAtMjAyNiw2ICsyMDQ5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKICAgICBJbnN0cnVjdGlvbiogcGMgPSBieXRlY29kZVBDOwogCkBA
IC0yMDM5LDcgKzIwNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1
ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQotICAgICAgICAgICAgICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0yMDQ4LDcgKzIwNzMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVu
IHdlIGNhbid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBw
ZXJmb3JtIHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0g
c2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpz
VERaVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwNjUsNiAr
MjA5MCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEluc3RydWN0aW9uKiBwYyA9IGJ5dGVjb2RlUEM7CiAKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwpAQCAtMjA5MiwyMCArMjExOSwyMCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KHNjb3BlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
ICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChz
Y29wZSwgZXhlYywgaWRlbnQsIHNsb3QpOwogICAgICAgICBpZiAoc2xvdC5nZXRWYWx1ZShleGVj
LCBpZGVudCkgPT0ganNURFpWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkgewotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlz
SW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNj
b3BlLT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7
CiAgICAgCi0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbChleGVjLCBjb2RlQmxvY2ssIHBjLCBzY29wZSwgZ2V0UHV0SW5mbywg
c2xvdCwgaWRlbnQpOwpAQCAtMjExNSw5ICsyMTQyLDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRXhjZXB0aW9uVmFsdWUpOwotICAgIHZtLT50aHJvd0V4
Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIC8vIFJlc3VsdHMgc3RvcmVkIG91dC1vZi1i
YW5kIGluIHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93ICYgdm0uY2FsbEZyYW1lRm9yQ2F0Y2gK
ICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNyArNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAog
I2RlZmluZSBMTElOVF9CRUdJTl9OT19TRVRfUEMoKSBcCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsgICAgICBcCi0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpCisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOyBcCisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcKICNk
ZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVCUygpIGRvIHsgXApAQCAtOTIsMTQgKzkzLDE0IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogI2RlZmluZSBMTElOVF9FTkRfSU1Q
TCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIDApCiAKICNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7
ICAgICAgIFwKICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAog
I2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIGRvRXhjZXB0aW9uRnV6emluZ0lmRW5hYmxlZChleGVjLCAiTExJbnRTbG93UGF0
aHMiLCBwYyk7ICAgIFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgeyAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRp
b24oKSkpIHsgICAgICAgICBcCiAgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYyk7
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNTIsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBl
eGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRXhlY1N0
YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oX19jdF9leGVjLCBleGNlcHRpb25Ub1Rocm93
KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oX19jdF9leGVjLCB0
aHJvd1Njb3BlLCBleGNlcHRpb25Ub1Rocm93KTsgICAgICAgIFwKICAgICAgICAgTExJTlRfQ0FM
TF9FTkRfSU1QTCgwLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMpKTsgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKIApAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUq
IF9fY2NlX2V4ZWNDYWxsZWUgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoX19jY2VfZXhlYywgIkxMSW50U2xv
d1BhdGhzL2NhbGwiLCBudWxscHRyKTsgXAotICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0
aW9uKCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTCgwLCBjYWxsVG9UaHJvdyhfX2Nj
ZV9leGVjQ2FsbGVlKSk7ICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCkBAIC00NjYsNiAr
NDY3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wocmVwbGFjZSkKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHN0YWNrX2NoZWNrKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBWTUVudHJ5RnJhbWUq
IHZtRW50cnlGcmFtZSA9IHZtLnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKICAgICBpZiAoIWNhbGxl
ckZyYW1lKSB7CkBAIC00ODIsOSArNDg1LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tf
Y2hlY2spCiAgICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIGRhdGFMb2dGKCJOdW0gdmFy
cyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CiAKLSAgICBkYXRhTG9n
RigiQ3VycmVudCBPUyBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLnNvZnRTdGFj
a0xpbWl0KCkpOworICAgIGRhdGFMb2dGKCJDdXJyZW50IE9TIHN0YWNrIGVuZCBpcyBhdCAlcC5c
biIsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogI2lmICFFTkFCTEUoSklUKQotICAgIGRhdGFMb2dG
KCJDdXJyZW50IEMgTG9vcCBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLmNsb29w
U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5kIGlz
IGF0ICVwLlxuIiwgdm0uY2xvb3BTdGFja0xpbWl0KCkpOwogI2VuZGlmCiAKICNlbmRpZgpAQCAt
NTAyLDcgKzUwNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogI2VuZGlm
CiAKICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpOworICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxlckZyYW1lLCB0aHJvd1Njb3BlKTsKICAgICBwYyA9IHJldHVyblRvVGhyb3coY2FsbGVy
RnJhbWUpOwogICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpOwogfQpAQCAtNzg0LDEwICs3
ODcsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZAogICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KIAotaW5saW5lIEpTVmFsdWUg
Z2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKExJS0VM
WShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJh
c2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKEpTQ2VsbDo6Y2Fu
VXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgIGlmIChSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBhc1N0cmluZyhzdWJz
Y3JpcHQpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKGV4ZWMpKSB7CkBAIC04MDYsMTAgKzgxMCwx
MCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgfQogCiAg
ICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoc2Nv
cGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVy
biBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKIH0KQEAgLTgxNyw3ICs4MjEsNyBAQCBp
bmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwodm0sIGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKQEAgLTgyNyw2ICs4MzEsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKTsKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CkBAIC04
MzUsMTYgKzg0MCwxNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
CiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAg
ICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5k
ZXgob2JqZWN0LCBleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBleGVjLCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5U
X0VORCgpOwogICAgICAgICB9Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGV4ZWMsIGks
IHZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNl
VmFsdWUucHV0QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAg
TExJTlRfRU5EKCk7CiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGV4ZWMpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGlzU3RyaWN0TW9kZSk7
CiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIExM
SU5UX0VORCgpOwogfQpAQCAtMTE4Niw2ICsxMTkxLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKICAgICBleGVjQ2FsbGVlLT5jbGVhclJldHVyblBDKCk7CkBAIC0xMjM4
LDE4ICsxMjQ0LDIwIEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwK
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCiB7CiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nRigiUGVy
Zm9ybWluZyBjYWxsIHdpdGggcmVjb3JkZWQgUEMgPSAlcFxuIiwgZXhlYy0+Y3VycmVudFZQQygp
KTsKICNlbmRpZgogICAgIAogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRK
U0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwotICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkgeworICAgICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBj
YWxsZWVBc1ZhbHVlLCBraW5kKTsKLSAgICAKKyAgICB9CiAgICAgSlNGdW5jdGlvbiogY2FsbGVl
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7Ci0gICAgVk0mIHZtID0gKnNjb3Bl
LT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRh
YmxlKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKQEAgLTEzMzUsMTIg
KzEzNDMsMTQgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeAogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9f
U0VUX1BDKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGdlbmVyaWND
YWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3QpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ29uc3RydWN0KTsKIH0KIApAQCAtMTQ5OCw2ICsxNTA4LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlYnVnKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2hhbmRsZV9leGNlcHRpb24pCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGdlbmVyaWNVbndpbmQoJnZtLCBleGVjKTsK
ICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpAQCAtMTUwNSw3ICsxNTE2LDYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2hhbmRsZV9leAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9mcm9tX3Njb3BlKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNd
LnUub3BlcmFuZCk7CiAgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJ
TlRfT1AoMikuanNWYWx1ZSgpKTsKICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8ocGNbNF0udS5v
cGVyYW5kKTsKQEAgLTE1MTYsNyArMTUyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfZnJvbV8KICAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFs
dWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5y
ZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKQEAg
LTE1MjUsNyArMTUzNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJv
bV8KICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBwcm92ZSB3ZSBuZWVk
IGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNoZWNrIG9uIHRoZSBzbG93IHBhdGgu
CiAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgQ29tbW9uU2xvd1Bh
dGhzOjp0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbChleGVjLCB2bSwgcGMsIHNjb3BlLCBzbG90
LCBpZGVudCk7CkBAIC0xNTgyLDkgKzE1OTIsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3RvX3NjCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaWZf
ZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bS5leGNlcHRpb24oKSkpCisgICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhwYywgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgMCk7CiB9CkBAIC0xNjE5
LDkgKzE2MjksMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CisKICAgICBpZiAoIWV4ZWMpCiAgICAgICAgIGV4ZWMgPSBwcm90b0Zy
YW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
MyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAtNzMsMTggKzczLDIwIEBAIHZv
aWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMs
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKK0pTVmFsdWUgY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZW5n
dGgsIEpTVmFsdWUgbmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghbGVuZ3RoLmlz
TnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChl
eGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3QsICZsZW5ndGgsIDEsIG5ld1RhcmdldCk7CiAgICAg
CiAgICAgdWludDMyX3QgbiA9IGxlbmd0aC50b1VJbnQzMihleGVjKTsKICAgICBpZiAobiAhPSBs
ZW5ndGgudG9OdW1iZXIoZXhlYykpCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBz
aXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIikpKTsKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBwcm9m
aWxlLCBnbG9iYWxPYmplY3QsIG4sIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNP
YmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIlByb3h5T2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNjAsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBwcm90b3R5cGUgPSBKU1Zh
bHVlKCkpOworSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwg
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgs
IEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKik7CiAKQEAgLTY4LDYgKzY5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUNvbnN0cgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNh
cnJheQogaW5saW5lIGJvb2wgaXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJndW1l
bnRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXJndW1lbnRWYWx1ZS5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgxLDcgKzg1LDcgQEAgaW5saW5lIGJv
b2wgaXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVgogCiAgICAgICAgIFByb3h5T2JqZWN0KiBw
cm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGFyZ3VtZW50KTsKICAgICAgICAgaWYgKHByb3h5
LT5pc1Jldm9rZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94eSB0aGF0IGhh
cyBiZWVuIHJldm9rZWQiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94
eSB0aGF0IGhhcyBiZWVuIHJldm9rZWQiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgYXJndW1lbnQgPSBwcm94eS0+dGFyZ2V0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsOSBAQCBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluCiB0ZW1wbGF0ZTxKU0FycmF5OjpTaGlmdENvdW50
TW9kZSBzaGlmdENvdW50TW9kZT4KIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iaiwgdW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2ln
bmVkIHJlc3VsdENvdW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
RUxFQVNFX0FTU0VSVChjdXJyZW50Q291bnQgPiByZXN1bHRDb3VudCk7CiAgICAgdW5zaWduZWQg
Y291bnQgPSBjdXJyZW50Q291bnQgLSByZXN1bHRDb3VudDsKIApAQCAtMjg2LDE0ICsyODksMTQg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogICAgICAgICAgICAg
dGhpc09iai0+cHV0QnlJbmRleElubGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0
eS4iKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgewotICAg
ICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgayAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDIsNiArMzA1LDkg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogdGVtcGxhdGU8SlNB
cnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lkIHVuc2hpZnQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgdW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBj
dXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENvdW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHRDb3VudCA+IGN1cnJlbnRDb3Vu
dCk7CiAgICAgdW5zaWduZWQgY291bnQgPSByZXN1bHRDb3VudCAtIGN1cnJlbnRDb3VudDsKIApA
QCAtMzEwLDcgKzMxNiw3IEBAIHZvaWQgdW5zaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAKIAogICAgIC8vIEd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuCiAgICAgaWYgKGNvdW50ID4gKFVJ
TlRfTUFYIC0gbGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTMyNyw4ICszMzMsOCBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+cHV0QnlJbmRl
eElubGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlz
T2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBA
IC0zNjEsNyArMzY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RgogICAgICAgICBjdXN0b21Kb2luQ2FzZSA9IHRydWU7CiAKICAgICBpZiAoVU5MSUtFTFkoY3Vz
dG9tSm9pbkNhc2UpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7
CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUg
YW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgogICAgIGlmICghaXNKU0FycmF5KHRoaXNPYmpl
Y3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCkBAIC02NzQsNiArNjgwLDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQpAQCAtNjk0LDgg
KzcwMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAg
ICAgcmVzdWx0ID0gdGhpc09iai0+Z2V0KGV4ZWMsIGxlbmd0aCAtIDEpOwogICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkp
IHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQogICAgICAgICBwdXRMZW5ndGgo
ZXhlYywgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwpAQCAtNzQwLDExICs3NDksMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
IAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2V0TGVu
Z3RoKGV4ZWMsIHRoaXNPYmplY3QpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTgxMiw3ICs4MjMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqZWN0LCBleGVjLCBsb3dlcikpIHsKICAgICAgICAgICAgIGlmICghdm0uZXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
KTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAg
ICAgfQogCkBAIC04MjIsNyArODMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgdXBwZXIpKSB7CiAgICAgICAg
ICAgICBpZiAoIXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC05MDIsNiArOTEzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIC8vIDE1LjQuNC4x
MgogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIXRo
aXNPYmopCkBAIC05NjYsNyArOTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
VW5kZWNpZGVkKSwgZGVsZXRlQ291bnQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgayA9IDA7IGsgPCBkZWxldGVDb3VudDsgKytrKSB7CiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayArIGJlZ2luKTsKQEAg
LTExMjMsNiArMTEzNSw4IEBAIHN0YXRpYyBib29sIG1vdmVFbGVtZW50cyhFeGVjU3RhdGUqIGV4
ZWMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbmNhdEFwcGVuZE9uZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgSlNBcnJheSogZmlyc3QsIEpTVmFsdWUgc2Vjb25kKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghaXNKU0FycmF5
KHNlY29uZCkpOwogICAgIEFTU0VSVCghc2hvdWxkVXNlU2xvd1B1dChmaXJzdC0+aW5kZXhpbmdU
eXBlKCkpKTsKICAgICBCdXR0ZXJmbHkqIGZpcnN0QnV0dGVyZmx5ID0gZmlyc3QtPmJ1dHRlcmZs
eSgpOwpAQCAtMTEzNSw3ICsxMTQ5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbmNhdEFw
cGVuZE9uZShFeAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24odHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlKHZtLCBy
ZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgMSk7CiAgICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICghcmVzdWx0LT5hcHBlbmRNZW1jcHkoZXhlYywgdm0s
IDAsIGZpcnN0KSkgewogICAgICAgICBpZiAoIW1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0
LCAwLCBmaXJzdCwgZmlyc3RBcnJheVNpemUpKSB7CkBAIC0xMTU0LDYgKzExNjgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9QCiB7CiAgICAgQVNTRVJUKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTQXJyYXkqIGZpcnN0
QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKIApA
QCAtMTE5Nyw3ICsxMjEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvUAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
dHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5U2l6ZSArIHNlY29uZEFycmF5U2l6
ZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICh0eXBlID09
IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICBkb3VibGUqIGJ1ZmZlciA9IHJlc3VsdC0+YnV0
dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjgsNiArNjgsNyBAQCB2b2lk
IEJvb2xlYW5Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh2bS0+c21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCkpOwpAQCAtNzYsNyAr
NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy50cnVlU3RyaW5nKCkpOwog
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoQm9vbGVhbk9iamVjdDo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIGlmIChhc0Jvb2xlYW5PYmplY3QodGhp
c1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKQEAg
LTg3LDEyICs4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2Yo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoQm9vbGVh
bk9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFs
VmFsdWUoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEVORF9JTVBMKCkgUkVUVVJOX1RX
TyhwYywgZXhlYykKIAogI2RlZmluZSBUSFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNl
cHRpb25Ub1Rocm93KTsgICAgICAgICAgXAorICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7ICAgICAgICAgICAgICAgXAorICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgXAogICAgICAgICBSRVRVUk5fVE9f
VEhST1coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0g
d2hpbGUgKGZhbHNlKQpAQCAtMTQwLDEzICsxNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2Rl
ZmluZSBDQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIFJFVFVSTl9UV08oKGNhbGxUYXJn
ZXQpLCAoZXhlYykpCiAKLSNkZWZpbmUgQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRXhlY1N0YXRlKiBjdEV4
ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN0UEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ0FMTF9FTkRfSU1QTChjdEV4
ZWMsIExMSW50OjpjYWxsVG9UaHJvdyhjdEV4ZWMpKTsgICAgICAgICAgICAgIFwKLSAgICB9IHdo
aWxlIChmYWxzZSkKLQogI2RlZmluZSBDQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUqIGNjZUV4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBJbnN0
cnVjdGlvbiogY2NlUEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3MywxMCBAQCBBTFdB
WVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0CiAKIGlubGluZSBib29sIG9wSW4o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKCFiYXNlVmFsLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihl
eGVjLCBiYXNlVmFsKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTg1LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgb3BJbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJvcGVydHko
ZXhlYywgaSk7CiAKICAgICBhdXRvIHByb3BlcnR5ID0gcHJvcE5hbWUudG9Qcm9wZXJ0eUtleShl
eGVjKTsKLSAgICBpZiAoZXhlYy0+dm0oKS5leGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJv
cGVydHkoZXhlYywgcHJvcGVydHkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRoc0V4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw5IEBAIHZvaWQg
aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSoKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAg
ICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
ZXJyb3IpOwogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dp
bmcgZXhjZXB0aW9uICIsIHZtLT5leGNlcHRpb24oKSwgIi5cbiIpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAkocmV2
aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDEwICszNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29uc3RydWN0
b3JPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9y
T2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOwogCiAgICAgcmV0dXJuIGNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVj
dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3Qp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTMyMCw5ICszMjAsMTAgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0
TG9jYWxlRGF0ZShFeGVjU3RhdAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VU
Q1ZhcmlhbnQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKIApAQCAtNTIyLDEzICs1MjMsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4
ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCkBAIC01NjgsOSArNTcwLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxl
RGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExv
Y2FsZURhdGVBbmRUaW1lKSk7CkBAIC01NzgsOSArNTgxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFs
dWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywg
dGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlKSk7
CkBAIC01ODgsOSArNTkyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2Nh
bGVUaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNE
YXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CkBAIC01OTgsMTMgKzYwMywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVj
LT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIHx0
aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3Rl
ZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRD
b3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90
b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAog
ICAgIEpTVmFsdWUgaGludFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4
ZWMsIGhpbnRWYWx1ZSk7CkBAIC02MTksMTggKzYyNSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFRpbWUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3Rh
bmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVl
KCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRG
dWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY0Miw5ICs2NTAs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY1Niw5ICs2NjUsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAKQEAgLTY3MCw5ICs2ODAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2Uq
IHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY4NCw5ICs2
OTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjk4LDkgKzcxMCwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7
IAogCkBAIC03MTIsOSArNzI1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
RGF5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzI2LDkgKzc0MCwxMCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFu
Y2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc0MCw5ICs3NTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTc1NCw5ICs3NzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENIb3Vy
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc2OCw5ICs3ODUsMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5j
ZSh0aGlzVmFsdWUpOyAKIApAQCAtNzgyLDkgKzgwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC03OTYsOSArODE1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vj
b25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTgxMCw5ICs4MzAsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODI0LDkgKzg0NSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7
CkBAIC04NDAsOSArODYyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
TWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBkb3VibGUg
bWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTg1Niw5ICs4NzksMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg3MCw5ICs4OTQsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUp
OyAKIApAQCAtODg0LDkgKzkwOSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21UaW1lQXJn
cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsIFdURjo6VGltZVR5cGUgaW5wdXRU
aW1lVHlwZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5p
bnRlcm5hbE51bWJlcigpOwpAQCAtOTIzLDkgKzk0OSwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgc2V0TmV3VmFsdWVGcm9tVGltCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1
ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsIFdURjo6VGlt
ZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKSB7CkBAIC0xMDM1LDkgKzEwNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5j
ZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7CkBAIC0xMDc4LDkgKzExMDYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0
YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAt
MTA5NCw2ICsxMTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4
ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMo
ZXhlYywgTm90U3RyaWN0TW9kZSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTExMTIsMTMgKzExNDIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodG9JU09WYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcg
aXMgbm90IGEgZnVuY3Rpb24iKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywg
YXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBleGVjLT5l
bXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9J
U09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoInRvSVNPU3Ry
aW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMzQgKzE5OCwzNCBAQCBi
b29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAgICAgIHx8IGVycm9y
LT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHNvdXJjZVVS
TFByb3BlcnR5TmFtZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJl
Q2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNv
bnN0cnVjdG9yTmFtZSkKK0pTT2JqZWN0KiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiY2FsbGluZyAiLCBjb25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0
b3Igd2l0aG91dCBuZXcgaXMgaW52YWxpZCIpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JOYW1lLCAiIGNv
bnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJv
d1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOworICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMpKTsKIH0K
IAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFs
IGVycm9yTWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKQogewotICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7CisgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7CiB9
CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3Nh
Z2UpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBtZXNzYWdlKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXgg
ZXJyb3IiKSkpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCi1K
U09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNz
YWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUg
PHN0ZGludC5oPgogCiAKQEAgLTcxLDIxICs3MiwyMSBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqCiAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KIAogLy8gQ29u
dmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRl
ZmF1bHQgbWVzc2FnZS4KLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqIGNvbnN0cnVjdG9yTmFtZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7Ci1KU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci1pbmxp
bmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3Rh
dGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CitKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogY29uc3RydWN0
b3JOYW1lKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVj
U3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3Nh
Z2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0
ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3Bl
Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3Rh
dGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworaW5saW5lIEpT
T2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2Nv
cGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihz
dGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiAK
IC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1
ZS4KLWlubGluZSB2b2lkIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSB7IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsg
fQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGVycm9yKSk7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KLWlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBlcnJvck1lc3NhZ2UpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93
Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1l
c3NhZ2UpKTsgfQoraW5saW5lIHZvaWQgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBleGNlcHRpb24pOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEpTVmFsdWUgZXJyb3IpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3Ip
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBUaHJvd1Njb3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZN
VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhy
b3dWTVJhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5n
ZUVycm9yKHN0YXRlLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KIAogY2xhc3MgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJpdmF0ZToK
QEAgLTEwOSw3ICsxMTAsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHN0YXRpY19j
YXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgfQog
CkBAIC0xMjEsNyArMTI0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgc3RhdGljX2Nhc3Q8
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2Up
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDE1IEBAIHZvaWQg
RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiAKIC8vIEVDTUEtMjYyIDUuMSwgMTUu
MTEuNC40CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMS4gTGV0IE8gYmUg
dGhlIHRoaXMgdmFsdWUuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBhc09iamVjdCh0aGlz
VmFsdWUpOwogCiAgICAgLy8gR3VhcmQgYWdhaW5zdCByZWN1cnNpb24hCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDE3ICszOCwxOCBAQCB1bnNpZ25lZCBudW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MoKSB7CiAvLyBDYWxsIHRoaXMgb25seSBpZiB5b3Uga25vdyB0aGF0IGV4
Y2VwdGlvbiBmdXp6aW5nIGlzIGVuYWJsZWQuCiB2b2lkIGRvRXhjZXB0aW9uRnV6emluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHdoZXJlLCB2b2lkKiByZXR1cm5QQykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBBU1NFUlQoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKTsKIAotICAgIERl
ZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhleGVjLT52bSgpLmhlYXApOworICAgIERlZmVyR0NGb3JB
V2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICBzX251bWJlck9mRXhjZXB0aW9uRnV6
ekNoZWNrcysrOwogICAgIAogICAgIHVuc2lnbmVkIGZpcmVUYXJnZXQgPSBPcHRpb25zOjpmaXJl
RXhjZXB0aW9uRnV6ekF0KCk7CiAgICAgaWYgKGZpcmVUYXJnZXQgPT0gc19udW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MpIHsKICAgICAgICAgcHJpbnRmKCJKU0MgRVhDRVBUSU9OIEZVWlo6IFRo
cm93aW5nIGZ1enogZXhjZXB0aW9uIHdpdGggY2FsbCBmcmFtZSAlcCwgc2VlbiBpbiAlcyBhbmQg
cmV0dXJuIGFkZHJlc3MgJXAuXG4iLCBleGVjLCB3aGVyZSwgcmV0dXJuUEMpOwotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKAotICAgICAgICAgICAgZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4Y2Vw
dGlvbiBGdXp6IikpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yODksMjMgKzI4OSwyMyBAQCBKU09iamVjdCogY3JlYXRl
VERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKLUpT
T2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3Qq
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
KQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU91
dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3Bl
KHZtKTsKLSAgICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRo
cm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2Nv
cGUmIHNjb3BlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGlu
Z1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbigmdm0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkVycm9ySW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUyLDkgKzUzLDkgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFG
dW5jdGlvbkVycm9yKEV4ZWNTdAogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBKU1N0cmluZyogZXJyb3JE
ZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSop
OwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAKIGNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhl
Y3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgSlNPYmplY3QqJiBleGNlcHRpb24p
CiB7CiAgICAgVk0qIHZtID0gc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgQVNTRVJUKHZtLT5oZWFwLmlzRGVmZXJyZWQo
KSk7CiAgICAgQVNTRVJUKHN0YXJ0Q29sdW1uKCkgIT0gVUlOVF9NQVgpOwpAQCAtMzE5LDggKzMy
MCw4IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICAgICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCks
IGZpcnN0TGluZSgpLCAKICAgICAgICAgbGFzdExpbmUoKSwgc3RhcnRDb2x1bW4oKSwgZW5kQ29s
dW1uKCkpOyAKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7Ci0gICAgICAgIGV4Y2VwdGlv
biA9IHZtLT50aHJvd0V4Y2VwdGlvbigKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLAorICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigKKyAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCB0aHJvd1Njb3BlLAogICAgICAgICAgICAgZXJy
b3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPm1fc291cmNlKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTQyOSwyMCArNDMwLDIzIEBAIGNvbnN0
IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0KIAogRXZhbEV4ZWN1dGFibGUqIEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5k
ZXJURFopCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5l
dmFsRW5hYmxlZCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNz
YWdlKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUV2YWxF
cnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFw
KCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
Ci0gICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgZXhlY3V0
YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1
bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMs
IGV4ZWN1dGFibGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoIXVubGlua2VkRXZhbENv
ZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxD
b2RlQmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwor
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJs
ZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTc2LDggKzc2LDExIEBAIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXQKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBD
b25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9i
amVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0
LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1
bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApAQCAtODYsNiArODksOSBAQCBKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCiAgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
IGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1w
b3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwpAQCAt
MTE2LDE0ICsxMjIsMTQgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RQogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6
OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgKmV4ZWMsIHNvdXJjZSwgZXhjZXB0aW9uLCBv
dmVycmlkZUxpbmVOdW1iZXIpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJU
KGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFy
Z2V0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0
cnVjdHVyZSk7CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4
IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhp
c1ZhbHVlKTsKQEAgLTExMiwxOSArMTE0LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Qcm8KICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgICAgIGlmIChvYmplY3QtPmlubGluZVR5cGVGbGFncygpICYgVHlwZU9mU2hv
dWxkQ2FsbEdldENhbGxEYXRhKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0
YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAh
PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjbGFzc0luZm8g
PSBvYmplY3QtPmNsYXNzSW5mbygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGNsYXNz
SW5mby0+Y2xhc3NOYW1lLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiB9CiAKIC8v
IDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kICh0aGlzQXJnIFssIGFyZzEgWywgYXJn
MiwgLi4uXV0pCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
QmluZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIC8v
IExldCBUYXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCkBAIC0xMzQsMTEgKzEzOCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXQsIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgLy8gUHJpbWl0aXZlIHZhbHVlcyBhcmUgbm90IGNhbGxhYmxlLgog
ICAgIEFTU0VSVCh0YXJnZXQuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldE9iamVj
dCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIC8v
IExldCBBIGJlIGEgbmV3IChwb3NzaWJseSBlbXB0eSkgaW50ZXJuYWwgbGlzdCBvZiBhbGwgb2Yg
dGhlIGFyZ3VtZW50IHZhbHVlcyBwcm92aWRlZCBhZnRlciB0aGlzQXJnIChhcmcxLCBhcmcyIGV0
YyksIGluIG9yZGVyLgogICAgIHNpemVfdCBudW1Cb3VuZEFyZ3MgPSBleGVjLT5hcmd1bWVudENv
dW50KCkgPiAxID8gZXhlYy0+YXJndW1lbnRDb3VudCgpIC0gMSA6IDA7CkBAIC0xNDYsNyArMTQ5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgIGlmIChu
dW1Cb3VuZEFyZ3MpIHsKICAgICAgICAgYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIG51bUJvdW5kQXJncyk7CiAg
ICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAgICAg
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQm91bmRBcmdzOyArK2kpCiAgICAg
ICAgICAgICBib3VuZEFyZ3MtPmluaXRpYWxpemVJbmRleCh2bSwgaSwgZXhlYy0+YXJndW1lbnQo
aSArIDEpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA5LCAy
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC04NywxMSArODcsMTQgQEAgSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogCiBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0g
anNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0
dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0
TW9kZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTAxLDcgKzEwNCw3IEBAIGJvb2wgY2FsbFNldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHNl
dHRlciwgY2FsbERhdGEpOwogICAgIGNhbGwoZXhlYywgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGJhc2UsIGFyZ3MpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjcsMTEgKzM2NywxNCBAQCB2b2lkIEludGxDb2xsYXRvcjo6Y3JlYXRl
Q29sbGF0b3IoRXhlY1N0CiAKIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhF
eGVjU3RhdGUmIHN0YXRlLCBTdHJpbmdWaWV3IHgsIFN0cmluZ1ZpZXcgeSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIDEwLjMuNCBDb21wYXJlU3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVD
TUEtNDAyIDIuMCkKICAgICBpZiAoIW1fY29sbGF0b3IpIHsKICAgICAgICAgY3JlYXRlQ29sbGF0
b3Ioc3RhdGUpOwogICAgICAgICBpZiAoIW1fY29sbGF0b3IpCi0gICAgICAgICAgICByZXR1cm4g
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKICAgICB9CiAKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTM3OSw3ICszODIsNyBAQCBK
U1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhlCiAgICAgVUNoYXJJdGVyYXRv
ciBpdGVyYXRvclkgPSBjcmVhdGVJdGVyYXRvcih5KTsKICAgICBhdXRvIHJlc3VsdCA9IHVjb2xf
c3RyY29sbEl0ZXIobV9jb2xsYXRvci5nZXQoKSwgJml0ZXJhdG9yWCwgJml0ZXJhdG9yWSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUu
dm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJh
bCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAgIHJldHVybiBqc051bWJlcihy
ZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiwxNiArMTA2LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVD
TUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmpl
Y3QuCiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxh
dG9yKj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIikpKTsKIAogICAgIEpT
Qm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgpOwog
ICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLAogICAg
IGlmICghYm91bmRDb21wYXJlKSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVj
dCgpOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmpl
Y3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZ
cyBsZW5ndGggcHJvcGVydHkgaXMgMi4KQEAgLTEzNCwxMCArMTM2LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuQ29sbGF0b3IucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw2ICs0
MjAsOSBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Rm9ybWF0c0Zyb21QCiAKIHZvaWQg
SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBl
eGVjLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxPcHRpb25zKQogeworICAgIFZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyAxMi4xLjEgSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0IChkYXRlVGltZUZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBkYXRl
VGltZUZvcm1hdC5bW2luaXRpYWxpemVkSW50bE9iamVjdF1dIGlzIHRydWUsIHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KICAgICAvLyAyLiBTZXQgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFs
aXplZEludGxPYmplY3RdXSB0byB0cnVlLgpAQCAtNDQwLDcgKzQ0Myw2IEBAIHZvaWQgSW50bERh
dGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBsb2NhbGVPcHQ7CiAKICAgICAvLyA4LiBMZXQgbWF0Y2hlciBiZSBHZXRPcHRpb24ob3B0aW9u
cywgImxvY2FsZU1hdGNoZXIiLCAic3RyaW5nIiwgwqsibG9va3VwIiwgImJlc3QgZml0IsK7LCAi
YmVzdCBmaXQiKS4KLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgU3RyaW5nIGxvY2FsZU1h
dGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGV4ZWMsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIg
bXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsK
ICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4KICAgICBpZiAoZXhlYy5oYWRFeGNl
cHRpb24oKSkKQEAgLTQ4Nyw3ICs0ODksNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5p
dGlhbGl6ZURhdGVUCiAgICAgICAgIC8vIGQuIExldCB0eiBiZSBDYW5vbmljYWxpemVUaW1lWm9u
ZU5hbWUodHopLgogICAgICAgICB0eiA9IGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShvcmlnaW5h
bFR6KTsKICAgICAgICAgaWYgKHR6LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoJmV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRpbWUgem9uZTogJXMiLCBvcmln
aW5hbFR6LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcigmZXhl
Yywgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRpbWUgem9uZTogJXMiLCBvcmlnaW5h
bFR6LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CkBAIC02NDcsNyArNjQ5LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdlbmVyYXRvciA9IHVkYXRwZ19vcGVuKGRhdGFM
b2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2Myw3ICs2NjUsNyBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgfQogICAgIHVkYXRw
Z19jbG9zZShnZW5lcmF0b3IpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6
ZSBEYXRlVGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzQsNyArNjc2LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVWaWV3
KG1fdGltZVpvbmUpOwogICAgIG1fZGF0ZUZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUZv
cm1hdCwgVURhdGVGb3JtYXREZWxldGVyPih1ZGF0X29wZW4oVURBVF9QQVRURVJOLCBVREFUX1BB
VFRFUk4sIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIHRpbWVab25lVmlldy51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBwYXR0ZXJuLmxlbmd0aCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwo
ImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUg
RGF0ZVRpbWVGb3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4Myw2ICs4
ODUsOSBAQCBKU09iamVjdCogSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wCiAKIEpTVmFs
dWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFj
dCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKICAgICBpZiAoIW1faW5pdGlhbGl6ZWREYXRlVGlt
ZUZvcm1hdCkgewogICAgICAgICBpbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZXhlYywganNVbmRl
ZmluZWQoKSwganNVbmRlZmluZWQoKSk7CkBAIC04OTEsNyArODk2LDcgQEAgSlNWYWx1ZSBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChFeGVjUwogCiAgICAgLy8gMS4gSWYgeCBpcyBub3QgYSBm
aW5pdGUgTnVtYmVyLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcigm
ZXhlYywgQVNDSUlMaXRlcmFsKCJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVG
b3JtYXQgZm9ybWF0KCkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGlt
ZUZvcm1hdCBmb3JtYXQoKSIpKTsKIAogICAgIC8vIERlbGVnYXRlIHJlbWFpbmluZyBzdGVwcyB0
byBJQ1UuCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC05MDMsNyAr
OTA4LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChFeGVjUwogICAgICAg
ICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCBy
ZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgIH0KICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRl
cmFsKCJmYWlsZWQgdG8gZm9ybWF0IGRhdGUgdmFsdWUiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBk
YXRlIHZhbHVlIikpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLCBTdHJpbmcocmVzdWx0
LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNy
YWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDYg
KzExMSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0
ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMi4z
LjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KICAgICBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTExNywyMyArMTIxLDIyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW0KICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBw
cm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJu
cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5
CiAgICAgaWYgKCFkdGYpCi0gICAgICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkp
KTsKKyAgICAgICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0
ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgLy8gMi4gUmV0dXJu
SWZBYnJ1cHQoZHRmKS4KICAgICBpZiAoIWR0ZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwogCiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKICAg
ICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRl
VGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsK
LSAgICAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBkdGYtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAvLyBhLiBMZXQgRiBi
ZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMi4zLjQuCiAg
ICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5v
dGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCiAgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5j
Rm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdz
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNp
ZGVkKSwgMCk7CiAgICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29w
ZSkpOwogCiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKr
dGhpcyB2YWx1ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJn
cywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0xNDgsMTYgKzE1MSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEyLjMuNSBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4w
KQogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBGSVhN
RTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAg
Y2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAgZGF0
ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGRhdGVU
aW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFkYXRlVGltZUZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGF0ZVRpbWVGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxNiBTdWtvbHNhayBTYWtzaHV3
b25nIChzdWtvbHNha0BnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTksNiArMTYwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
RgogewogICAgIC8vIDExLjEuMSBJbml0aWFsaXplTnVtYmVyRm9ybWF0IChudW1iZXJGb3JtYXQs
IGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
LiBJZiBudW1iZXJGb3JtYXQgaGFzIGFuIFtbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gaW50ZXJu
YWwgc2xvdCB3aXRoIHZhbHVlIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICAvLyAyLiBTZXQgbnVtYmVyRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1
ZS4KQEAgLTE4Niw3ICsxODgsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVO
dW1iZXJGCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OwogCiAgICAgLy8gOC4gTGV0
IG1hdGNoZXIgYmUgR2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIs
IMKrImxvb2t1cCIsICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgU3RyaW5nIG1hdGNo
ZXIgPSBpbnRsU3RyaW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCBzdGF0ZS52bSgpLnByb3BlcnR5
TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1h
dGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBm
aXQiKTsKKyAgICBTdHJpbmcgbWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oc3RhdGUsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZp
dCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3Qg
Zml0XCIiLCAiYmVzdCBmaXQiKTsKICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4K
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMCw3
ICsyMzIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAg
aWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewogICAgICAgICAvLyBhLiBJZiB0aGUgcmVzdWx0IG9m
IElzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjKSwgaXMgZmFsc2UsIHRoZW4gdGhyb3cgYSBSYW5n
ZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwg
IWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7Ci0gICAg
ICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJv
cigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3Vy
cmVuY3kgY29kZSIpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBpcyBub3Qg
YSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIzOSw3ICsyNDEsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7
CiAgICAgICAgIC8vIDIyLiBJZiBzIGlzICJjdXJyZW5jeSIgYW5kIGMgaXMgdW5kZWZpbmVkLCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmIChjdXJyZW5jeS5pc051bGwo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1
cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDIzLDExICs0MjUsMTQgQEAg
dm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVOdW1iZXJGb3JtYQogCiBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgbnVtYmVy
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTEuMy40IEZvcm1hdE51bWJlciBhYnN0cmFjdCBv
cGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKICAgICBpZiAoIW1fbnVtYmVyRm9ybWF0KSB7CiAgICAg
ICAgIGNyZWF0ZU51bWJlckZvcm1hdChzdGF0ZSk7CiAgICAgICAgIGlmICghbV9udW1iZXJGb3Jt
YXQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBu
dW1iZXIuIikpKTsKICAgICB9CiAKICAgICAvLyBNYXAgbmVnYXRpdmUgemVybyB0byBwb3NpdGl2
ZSB6ZXJvLgpAQCAtNDQzLDcgKzQ0OCw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9y
bWF0TnVtYmVyKEUKICAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIG51bWJlciwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAg
ICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZz
dGF0ZSwgU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsNiArMTAwLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVH
ZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAx
MS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQog
ICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCiAgICAgSW50bE51
bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkpOwpAQCAtMTA3LDIyICsxMTAsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRgogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUg
Y29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBp
ZiAoIW5mKQotICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0
YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAg
IG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
LmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1
dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAogICAgIGlmICghbmYpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAg
ICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgp
OwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYg
KCFib3VuZEZvcm1hdCkgewotICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJ
bnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0
ZSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3Ioc3RhdGUsIHNjb3BlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVu
Y3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgogICAgICAgICBib3VuZEZvcm1hdCA9IEpT
Qm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmpl
Y3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOwpAQCAtMTM3LDE2
ICsxMzksMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAo
RUNNQS00MDIgMi4wKQogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAg
IG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIG51bWJl
ckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFs
dWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJz
dGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW51bWJlckZvcm1hdCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZv
cm1hdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1
MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOSBAQCBib29sIGludGxCb29sZWFuT3B0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsCiAKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0
IGNoYXIqIGZhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gOS4yLjkgR2V0T3B0aW9u
IChvcHRpb25zLCBwcm9wZXJ0eSwgdHlwZSwgdmFsdWVzLCBmYWxsYmFjaykKICAgICAvLyBGb3Ig
dHlwZT0ic3RyaW5nIi4KIApAQCAtMTk1LDcgKzE5OCw3IEBAIFN0cmluZyBpbnRsU3RyaW5nT3B0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKICAgICAgICAgLy8gZC4gSWYgdmFsdWVzIGlzIG5vdCB1bmRl
ZmluZWQsIHRoZW4KICAgICAgICAgLy8gaS4gSWYgdmFsdWVzIGRvZXMgbm90IGNvbnRhaW4gYW4g
ZWxlbWVudCBlcXVhbCB0byB2YWx1ZSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICAgICAgaWYgKHZhbHVlcy5zaXplKCkgJiYgc3RkOjpmaW5kKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCksIHN0cmluZ1ZhbHVlKSA9PSB2YWx1ZXMuZW5kKCkpIHsKLSAgICAgICAgICAgIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwg
bm90Rm91bmQpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBub3RGb3VuZCkpOwogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQogCkBAIC0yMDksNiArMjEyLDkgQEAgU3RyaW5nIGludGxTdHJpbmdPcHRp
b24oRXhlY1N0YXRlJiBzdGF0ZQogCiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCB1bnNpZ25l
ZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDkuMi45IEdldE51bWJlck9wdGlvbiAob3B0aW9ucywgcHJvcGVydHks
IG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExl
dCBvcHRzIGJlIFRvT2JqZWN0KG9wdGlvbnMpLgogICAgIEpTT2JqZWN0KiBvcHRzID0gb3B0aW9u
cy50b09iamVjdCgmc3RhdGUpOwpAQCAtMjMzLDcgKzIzOSw3IEBAIHVuc2lnbmVkIGludGxOdW1i
ZXJPcHRpb24oRXhlY1N0YXRlJiBzdGEKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAv
LyAxLiBJZiB2YWx1ZSBpcyBOYU4gb3IgbGVzcyB0aGFuIG1pbmltdW0gb3IgZ3JlYXRlciB0aGFu
IG1heGltdW0sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICghKGRv
dWJsZVZhbHVlID49IG1pbmltdW0gJiYgZG91YmxlVmFsdWUgPD0gbWF4aW11bSkpIHsKLSAgICAg
ICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KCZzdGF0ZSwgKnByb3BlcnR5LnB1YmxpY05hbWUoKSArICIgaXMgb3V0IG9mIHJhbmdlIikpOwor
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91dCBvZiByYW5nZSIpKTsK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTUyNCw2ICs1MzAsOCBAQCBW
ZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiB7CiAgICAgLy8gOS4yLjEg
Q2Fub25pY2FsaXplTG9jYWxlTGlzdCAobG9jYWxlcykKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgVmVjdG9yPFN0cmluZz4gc2VlbjsKIApAQCAtNTg3LDcgKzU5NSw3IEBAIFZlY3RvcjxT
dHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoRXgKIAogICAgICAgICAgICAgLy8gaWlpLiBJ
ZiBUeXBlKGtWYWx1ZSkgaXMgbm90IFN0cmluZyBvciBPYmplY3QsIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICAgICAgICAgIGlmICgha1ZhbHVlLmlzU3RyaW5nKCkgJiYgIWtWYWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoImxvY2FsZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoImxvY2FsZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICAgICAgICAgIH0KIApAQCAtNjAy
LDcgKzYxMCw3IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoRXgKICAg
ICAgICAgICAgIC8vIHZpaS4gTGV0IGNhbm9uaWNhbGl6ZWRUYWcgYmUgQ2Fub25pY2FsaXplTGFu
Z3VhZ2VUYWcodGFnKS4KICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVkVGFnID0gY2Fu
b25pY2FsaXplTGFuZ3VhZ2VUYWcodGFnLT52YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgICAgIGlm
IChjYW5vbmljYWxpemVkVGFnLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBTdHJpbmc6
OmZvcm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1ZSgmc3RhdGUpLnV0
ZjgoKS5kYXRhKCkpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIGxh
bmd1YWdlIHRhZzogJXMiLCB0YWctPnZhbHVlKCZzdGF0ZSkudXRmOCgpLmRhdGEoKSkpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICAgICAgICAgIH0KIApA
QCAtODcwLDYgKzg3OCw5IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUo
RXgKIAogc3RhdGljIEpTQXJyYXkqIGxvb2t1cFN1cHBvcnRlZExvY2FsZXMoRXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDku
Mi42IExvb2t1cFN1cHBvcnRlZExvY2FsZXMgKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMpCiAKICAgICAvLyAxLiBMZXQgckxvY2FsZXMgYmUgQ3JlYXRlQXJyYXlGcm9tTGlzdChy
ZXF1ZXN0ZWRMb2NhbGVzKS4KQEAgLTg3OSwxMSArODkwLDEwIEBAIHN0YXRpYyBKU0FycmF5KiBs
b29rdXBTdXBwb3J0ZWRMb2NhbGVzKEUKICAgICBzaXplX3QgbGVuID0gcmVxdWVzdGVkTG9jYWxl
cy5zaXplKCk7CiAKICAgICAvLyAzLiBMZXQgc3Vic2V0IGJlIGFuIGVtcHR5IExpc3QuCi0gICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIEpTQXJyYXkqIHN1YnNldCA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCks
IDApOwogICAgIGlmICghc3Vic2V0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
MDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3Is
IEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRvci5n
ZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgbmV4dEZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPm5leHQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBDYWxsRGF0YSBuZXh0RnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBuZXh0RnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKG5leHRGdW5j
dGlvbiwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChuZXh0RnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgbmV4dEZ1bmN0aW9uQXJndW1lbnRzOwogICAgIGlmICghdmFsdWUu
aXNFbXB0eSgpKQpAQCAtNTMsNyArNTcsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgaWYgKCFy
ZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODksMTggKzkzLDIxIEBAIEpTVmFsdWUgaXRlcmF0b3JT
dGVwKEV4ZWNTdGF0ZSogZXhlYywgSlMKIAogdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CiAgICAgfQotICAgIEpTVmFsdWUgcmV0dXJuRnVuY3Rpb24gPSBpdGVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKKyAg
ICBKU1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPnJldHVybktleXdvcmQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJldHVybkZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDgsOSAr
MTE1LDkgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgIENh
bGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZXR1cm5GdW5jdGlv
biwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKHJldHVybkZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE4LDcg
KzEyNSw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBK
U1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChleGVjLCByZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVu
Y3Rpb25DYWxsVHlwZSwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSwgaXRlcmF0b3IsIHJldHVybkZ1
bmN0aW9uQXJndW1lbnRzKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI2LDcgKzEzMyw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpbm5lclJlc3VsdC5pc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE0Nywx
NCArMTU0LDE4IEBAIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHIKIAog
SlNPYmplY3QqIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBkb25lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNPYmplY3QqIHJlc3VsdE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+aXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSk7
Ci0gICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZG9uZVByb3BlcnR5T2Zm
c2V0LCBqc0Jvb2xlYW4oZG9uZSkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIHZhbHVlUHJvcGVydHlPZmZzZXQsIHZhbHVlKTsKKyAgICByZXN1bHRPYmplY3QtPnB1
dERpcmVjdCh2bSwgZG9uZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkpOworICAgIHJl
c3VsdE9iamVjdC0+cHV0RGlyZWN0KHZtLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdE9iamVjdDsKIH0KIAogSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgaXRlcmFibGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IAogICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChzdGF0ZSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTE2Miw3ICsxNzMsNyBA
QCBKU1ZhbHVlIGl0ZXJhdG9yRm9ySXRlcmFibGUoRXhlY1N0YXRlKiBzCiAgICAgQ2FsbERhdGEg
aXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rpb25D
YWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25D
YWxsRGF0YSk7CiAgICAgaWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQog
CkBAIC0xNzIsNyArMTgzLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0
ZSogcwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCiAgICAgaWYgKCFpdGVyYXRvci5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3Ioc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDks
IDIwMTItMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAg
LTc1LDYgKzc1LDkgQEAgdm9pZCBKU0FycmF5OjpzZXRMZW5ndGhXcml0YWJsZShFeGVjU3RhdAog
Ly8gRGVmaW5lZCBpbiBFUzUuMSAxNS40LjUuMQogYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJv
d0V4Y2VwdGlvbikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIGFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihvYmplY3QpOwogCiAgICAgLy8gMy4gSWYgUCBpcyAibGVuZ3RoIiwgdGhlbgpA
QCAtMTA2LDcgKzEwOSw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QKICAgICAgICAgdW5zaWduZWQgbmV3TGVuID0gZGVzY3JpcHRvci52YWx1ZSgpLnRvVUludDMy
KGV4ZWMpOwogICAgICAgICAvLyBkLiBJZiBuZXdMZW4gaXMgbm90IGVxdWFsIHRvIFRvTnVtYmVy
KCBEZXNjLltbVmFsdWVdXSksIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAg
IGlmIChuZXdMZW4gIT0gZGVzY3JpcHRvci52YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSB7Ci0gICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAg
ICBKU0M6OnRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE5MSw2ICsxOTQsOSBAQCBib29sIEpTQXJyYXk6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjCiAvLyBFQ01BIDE1LjQuNS4xCiBib29sIEpTQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7
CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3Qp
KSkKQEAgLTE5OSw3ICsyMDUsNyBAQCBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZhbHVlLnRvVUludDMyKGV4ZWMp
OwogICAgICAgICBpZiAodmFsdWUudG9OdW1iZXIoZXhlYykgIT0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihuZXdMZW5ndGgpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhp
c09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CkBAIC0zOTMsNiArMzk5LDggQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAogCiBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2
bSwgdW5zaWduZWQgc3RhcnRJbmRleCwgSlNDOjpKU0FycmF5KiBvdGhlckFycmF5KQogeworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FuRmFz
dENvcHkodm0sIG90aGVyQXJyYXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQxOCw3
ICs0MjYsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBuZXdMZW5ndGgp
KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBBU1NFUlQoY29weVR5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwpAQCAtNDMzLDYgKzQ0
MSw5IEBAIGJvb2wgSlNBcnJheTo6YXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJv
b2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFycmF5Q2xhc3M6CkBAIC00NDEsOSArNDUyLDkgQEAgYm9vbCBKU0FycmF5Ojpz
ZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICBpZiAobmV3TGVuZ3RoID49IE1JTl9T
UEFSU0VfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIG5ld0xlbmd0aCwgdGhyb3dFeGNlcHRp
b24sCi0gICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAg
ICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgfQotICAgICAg
ICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAg
IGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKQEAgLTQ1NywxMSAr
NDY4LDExIEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAg
ICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5ndGgsIGNvdW50RWxl
bWVudHMoKSkpKSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFn
ZSgKICAgICAgICAgICAgICAgICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAg
ICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAg
ICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5l
d0xlbmd0aCA+IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmICgh
ZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgbmV3TGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NzAsNyArNDgxLDcgQEAgYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICB1bnNpZ25lZCBsZW5n
dGhUb0NsZWFyID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSAtIG5ld0xlbmd0aDsKICAgICAg
ICAgdW5zaWduZWQgY29zdFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkgPSA2NDsgLy8gYSBoZXVyaXN0
aWMuCiAgICAgICAgIGlmIChsZW5ndGhUb0NsZWFyID4gbmV3TGVuZ3RoICYmIGxlbmd0aFRvQ2xl
YXIgPiBjb3N0VG9BbGxvY2F0ZU5ld0J1dHRlcmZseSkgewotICAgICAgICAgICAgcmVhbGxvY2F0
ZUFuZFNocmlua0J1dHRlcmZseShleGVjLT52bSgpLCBuZXdMZW5ndGgpOworICAgICAgICAgICAg
cmVhbGxvY2F0ZUFuZFNocmlua0J1dHRlcmZseSh2bSwgbmV3TGVuZ3RoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTQ5Nyw2ICs1MDgsOSBAQCBib29sIEpTQXJy
YXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAKIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewpAQCAtNTQ4LDcgKzU2Miw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7CiAgICAgICAg
IGlmICghbGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoIWlzTGVuZ3RoV3JpdGFibGUoKSkKLSAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtNTgwLDcgKzU5NCw3IEBAIEpT
VmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUgW1tEZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qgb2Yg
TyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0cnVlLgogICAgIGlmICghZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAg
IC8vIENhbGwgdGhlIFtbUHV0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMg
Imxlbmd0aCIsIGluZHgsIGFuZCB0cnVlLgpAQCAtNTk0LDIzICs2MDgsMjYgQEAgSlNWYWx1ZSBK
U0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogLy8gIC0gcHVzaGluZyB0byBhbiBhcnJheSBv
ZiBsZW5ndGggMl4zMi0xIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBl
cnJvci4KIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwogICAgIAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFy
cmF5Q2xhc3M6IHsKLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCAw
KTsKKyAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZCh2bSwgMCk7CiAgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6IHsK
LSAgICAgICAgY29udmVydFVuZGVjaWRlZEZvclZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKKyAg
ICAgICAgY29udmVydFVuZGVjaWRlZEZvclZhbHVlKHZtLCB2YWx1ZSk7CiAgICAgICAgIHB1c2go
ZXhlYywgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IEFycmF5V2l0aEludDMyOiB7CiAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKSB7Ci0gICAg
ICAgICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZSh2bSwgdmFsdWUpOwogICAgICAgICAgICAgcHVzaChl
eGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTYyNCw5ICs2
NDEsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMs
IGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZh
bGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC02MzgsMTUgKzY1NSwxNSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3Ro
KCk7CiAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7
CiAgICAgICAgIGlmIChsZW5ndGggPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5ndGhdLnNldChleGVjLT52bSgpLCB0
aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5ndGhd
LnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNM
ZW5ndGgobGVuZ3RoICsgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwg
dmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRo
aXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5
IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0
aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC02NTYs
MTMgKzY3MywxMyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAg
ICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7CiAgICAgICAgIGlmICghdmFsdWUu
aXNOdW1iZXIoKSkgewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVj
LT52bSgpKTsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAg
ICAgICAgICAgcHVzaChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgZG91YmxlIHZhbHVlQXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOwogICAg
ICAgICBpZiAodmFsdWVBc0RvdWJsZSAhPSB2YWx1ZUFzRG91YmxlKSB7Ci0gICAgICAgICAgICBj
b252ZXJ0RG91YmxlVG9Db250aWd1b3VzKGV4ZWMtPnZtKCkpOworICAgICAgICAgICAgY29udmVy
dERvdWJsZVRvQ29udGlndW91cyh2bSk7CiAgICAgICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjc2LDkgKzY5Myw5IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
ZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVu
Z3RoIikpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcwMyw3ICs3
MjAsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAg
IC8vIEZhc3QgY2FzZSAtIHB1c2ggd2l0aGluIHZlY3RvciwgYWx3YXlzIHVwZGF0ZSBtX2xlbmd0
aCAmIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3Jh
Z2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoIDwgc3RvcmFnZS0+dmVjdG9yTGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0uc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0u
c2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVu
Z3RoICsgMSk7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC03MTEsMTAgKzcyOCwxMCBAQCB2b2lkIEpTQXJyYXk6OnB1
c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAKICAgICAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJh
eSBvZiBpbnZhbGlkIGxlbmd0aCAoMl4zMS0xKSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhy
b3dzIGEgcmFuZ2UgZXJyb3IuCiAgICAgICAgIGlmIChzdG9yYWdlLT5sZW5ndGgoKSA+IE1BWF9B
UlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKKyAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5s
ZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVTNS4xIDE1LjQuNC43
IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTYzLDYgKzk4MCw5IEBA
IGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1QKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgdW5zaGlmdCBjYW4gYmUgaGFuZGxlZCwgZmFsc2UgdG8gZmFsbGJhY2suICAgIAog
Ym9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3Rv
cmFnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxl
bmd0aCgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwpAQCAt
OTgxLDEzICsxMDAxLDEzIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3Rv
cmEKICAgICAgICAgc3RvcmFnZSA9IG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAg
ICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzIC09IGNvdW50OwogICAgICAgICBzdG9yYWdlLT5zZXRW
ZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoICsgY291bnQpOwotICAgICAgICBzZXRCdXR0ZXJmbHlX
aXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgbmV3QnV0dGVyZmx5KTsKKyAgICAg
ICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCBuZXdCdXR0ZXJmbHkp
OwogICAgIH0gZWxzZSBpZiAoIW1vdmVGcm9udCAmJiB2ZWN0b3JMZW5ndGggLSBsZW5ndGggPj0g
Y291bnQpCiAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9y
YWdlKCk7Ci0gICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2UoZXhlYy0+dm0oKSwgbW92
ZUZyb250LCBjb3VudCkpCisgICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2Uodm0sIG1v
dmVGcm9udCwgY291bnQpKQogICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0xMDA3LDYgKzEwMjcsOSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5n
VHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZs
eS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CkBAIC0xMDIyLDEw
ICsxMDQ1LDEwIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW4KICAg
ICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRvIHRoZSB1
bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYgaXQncyBu
b3QgaG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5kZXggPj0g
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3Jh
Z2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJh
eVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkp
OwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwgb2xkTGVu
Z3RoICsgY291bnQpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBvbGRMZW5ndGggKyBjb3VudCkpIHsKKyAg
ICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0gbV9idXR0ZXJm
bHkuZ2V0KCk7CkBAIC0xMDM1LDcgKzEwNTgsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0aDsgaS0t
ID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGJ1dHRlcmZseS0+Y29u
dGlndW91cygpW2ldLmdldCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFy
dEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydElu
ZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CkBAIC0x
MDU4LDEwICsxMDgxLDEwIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4
aW4KICAgICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRv
IHRoZSB1bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYg
aXQncyBub3QgaG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5k
ZXggPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0
Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJh
eVN0b3JhZ2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFn
ZSh2bSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwg
b2xkTGVuZ3RoICsgY291bnQpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBvbGRMZW5ndGggKyBjb3VudCkp
IHsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0gbV9i
dXR0ZXJmbHkuZ2V0KCk7CkBAIC0xMDcxLDcgKzEwOTQsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0
aDsgaS0tID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodiAhPSB2
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShl
eGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVj
LCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDkgQEAgU3RydWN0dXJlKiBKU0FycmF5QnVmZmVyQ29u
c3RydWN0b3I6OmNyZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0KICAgICAgICAganNDYXN0PEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICAKQEAgLTk2LDE5
ICs5OSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAg
CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgMSk7CiAg
ICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIFN0cnVjdHVyZSogYXJyYXlC
dWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5h
cnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVm
ZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0
ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92
ZShidWZmZXIpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJBcnJheUJ1ZmZl
ciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcnJh
eUJ1ZmZlciIpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDE0ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICAKICAgICBK
U0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBzbGljZSBt
dXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIHNsaWNlIG11c3QgYmUg
YW4gYXJyYXkgYnVmZmVyLiIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJT
bGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTbGljZSByZXF1aXJl
cyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOwogICAgIAogICAgIGludDMyX3QgYmVnaW4gPSBl
eGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTYwLDExICs2MywxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJhCiAgICAgCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIGlmICghbmV3QnVmZmVyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUt
Pmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpOwogICAgIAotICAgIEpTQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1
Y3R1cmUsIG5ld0J1ZmZlcik7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIG5ld0J1ZmZlcik7CiAgICAgCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0lubGluZXMuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogCiAjZW5kaWYgLy8gSlNDSW5s
aW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwgMjAxMiwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTQs
NiArOTQsOCBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByCiAKIEpT
T2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQo
IWlzQ2VsbCgpKTsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTEwMiw4
ICsxMDQsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjCiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgZ2xv
YmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkp
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOworICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNCw2ICsxMjUsOSBAQCBKU1ZhbHVlIEpTVmFsdWU6
OnRvVGhpc1Nsb3dDYXNlKEV4ZWNTdGF0CiAKIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXpl
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVy
biBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwpAQCAtMTM3
LDggKzE0MSw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAg
ICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhblByb3RvdHlw
ZSgpOwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihleGVjLCAqdGhpcykpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTE0Niw2ICsxNDksNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3Rv
dHlwZShFCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZl
QnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CkBAIC0xNjAsNyArMTY0LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsK
ICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzIsNyArMTc2LDcgQEAgYm9vbCBKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC0xOTYsMTIgKzIwMCwxNSBAQCBib29sIEpTVmFs
dWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgfQogICAgIAogICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9B
UlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hvdWxk
VGhyb3cpOwogICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CkBAIC0yMTcsNyArMjI0LDcg
QEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlYwogICAgICAgICByZXR1
cm4gcHV0UmVzdWx0OwogICAgIAogICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0zMzgsMTMgKzM0NSwx
NSBAQCBib29sIEpTVmFsdWU6OmlzVmFsaWRDYWxsZWUoKQogCiBKU1N0cmluZyogSlNWYWx1ZTo6
dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdP
bkVycm9yKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBlcnJvclZhbHVlID0gWyZd
ICgpIC0+IEpTU3RyaW5nKiB7CiAgICAgICAgIGlmIChyZXR1cm5FbXB0eVN0cmluZ09uRXJyb3Ip
CiAgICAgICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfTsKICAgICAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFT
U0VSVCghaXNTdHJpbmcoKSk7CiAgICAgaWYgKGlzSW50MzIoKSkgewogICAgICAgICBhdXRvIGlu
dGVnZXIgPSBhc0ludDMyKCk7CkBAIC0zNjMsNyArMzcyLDcgQEAgSlNTdHJpbmcqIEpTVmFsdWU6
OnRvU3RyaW5nU2xvd0Nhc2UoRXhlYwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogICAgIGlmIChpc1N5bWJv
bCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEg
c3RyaW5nIikpOwogICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOwogICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzMyw4ICs2MzMsMTEg
QEAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9QcmltaXRpdmUoRXhlYwogCiBpbmxpbmUgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc1N0
cmluZygpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJp
bWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5nLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJpbWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5n
LiIpKTsKICAgICAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKICAgICB9CiAKQEAgLTY0OSw3ICs2
NTIsNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJlCiAgICAgaWYg
KFdURjo6ZXF1YWwoaGludFN0cmluZywgInN0cmluZyIpKQogICAgICAgICByZXR1cm4gUHJlZmVy
U3RyaW5nOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0
cmluZycuIikpOworICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1i
ZXInLCAnc3RyaW5nJy4iKSk7CiAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKIH0KIApAQCAtMTAz
MSw5ICsxMDM0LDEyIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkK
IAogQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnJlcXVpcmVPYmplY3RDb2VyY2libGUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFpc1VuZGVmaW5l
ZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAq
dGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDcsMTYgKzQ3LDE4IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBwYXNzZWRCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gcGFzc2VkQnVmZmVyOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVvZih1aW50OF90KSkp
IHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CisgICAgICAgIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0
QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSkpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5
dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBj
b250ZXh0KAogICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgQ29uc3RydWN0aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VSVChjb250ZXh0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDEy
ICsxMjIsMTUgQEAgU3RydWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5
bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRh
VmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAgIAog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0
aGUgYnl0ZU9mZnNldCkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0aGUgYnl0
ZU9mZnNldCkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTE0Myw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nl
c3MiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSkpOwog
CiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CiAgICAgdW5pb24gewpAQCAtMTY3LDEyICsxNzAsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogRW5j
b2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhv
ZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBt
dXN0IGJlIGEgRGF0YVZpZXciKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSki
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQgdmFs
dWUpIikpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CkBAIC0xOTgsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
ICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAg
IHVpbnQ4X3QqIGRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YVZpZXctPnZlY3Rv
cigpKSArIGJ5dGVPZmZzZXQ7CiAKQEAgLTIyMCwyNyArMjI2LDM2IEBAIEVuY29kZWRKU1ZhbHVl
IHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8
IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlz
fCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2aWV3LT5qc0J1ZmZlcihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmll
dyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3Rz
IHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZl
ciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZm
ZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihleGVjLCBleGVjLT5jYWxsZWUoKSkpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNG
dW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTRnVuY3Rpb24pIH07CkBAIC0zMjEsNiArMzIzLDkgQEAgc3RhdGljIEpT
VmFsdWUgcmV0cmlldmVDYWxsZXJGdW5jdGlvbihFeAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0
aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIEpTVmFsdWUgY2FsbGVy
ID0gcmV0cmlldmVDYWxsZXJGdW5jdGlvbihleGVjLCB0aGlzT2JqKTsKQEAgLTMzNSw3ICszNDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoCiAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7CiAgICAgaWYgKGZ1
bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRh
YmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxlcik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxs
ZXIiKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3Ry
aWN0IGNhbGxlciIpKSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNDIzLDYgKzQyOCw5IEBAIHZvaWQgSlNGdW5j
dGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU4KIAogYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogCiAg
ICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBA
IC00MzcsMjUgKzQ0NSwyOCBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3Vj
aCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0
aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX3JhcmVEYXRhKQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xl
YXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAg
IC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBj
bGVhciBtX3JhcmVEYXRhLgogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNP
YmplY3QpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKICAg
ICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSAm
JiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7CiAgICAgICAgIC8v
IFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVkLCBpZiB0aGlzIGlz
IG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0aGlzT2JqZWN0LT5o
YXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9r
YXksIG9rYXkpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAg
fQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgewogICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzT2JqZWN0
LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTQ4MCw2ICs0OTEsOSBAQCBib29sIEpT
RnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
aWZ5Qm91bmROYW1lSWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTQ5MCw3ICs1MDQs
NyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgICAgIC8v
IE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBv
bmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91
dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRh
KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHBy
b3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybiBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
dGhyb3dFeGNlcHRpb24pOwpAQCAtNTIwLDI3ICs1MzQsMjcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAgICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1
cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBp
ZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQo
KSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3Ip
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVz
ZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgaWYgKCF2YWx1ZUNoZWNrKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld19oCiAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgorI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTE2OCwxMiArMTY5LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIHNldEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUgPSB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihleGVjLCBqc1ZhbHVlKTsK
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtODAsOCArODAsMTEgQEAgU3RydWN0dXJlKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdGcm9tSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUg
Zmlyc3QgYXJndW1lbnQgZGlkIG5vdCByZXR1cm4gYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC5JdGVy
YXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdC4iKSk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBzdG9yYWdlOwogICAgIHdoaWxlICh0cnVlKSB7
CkBAIC0xMTgsOCArMTIxLDEwIEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXIKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNp
Z25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCiB7Ci0gICAgSlNWYWx1
ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZpcnN0QXJndW1lbnQpOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZpcnN0QXJndW1l
bnQpOwogCiAgICAgaWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxK
U0FycmF5QnVmZmVyKj4oZmlyc3RWYWx1ZSkpIHsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwpAQCAtMTI5LDcgKzEzNCw3IEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAgICAgICAgIGxlbmd0aCA9IGxl
bmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICgoYnVmZmVy
LT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgVmlld0NsYXNzOjplbGVtZW50U2l6ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsICJBcnJheUJ1ZmZlciBsZW5n
dGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQg
c2l6ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2Nv
cGUsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVs
dGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSIpOwogICAgICAgICAgICAgbGVuZ3RoID0gKGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAvIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAKICAg
ICAgICAgfQpAQCAtMTM5LDcgKzE0NCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXIKICAgICBBU1NFUlQoIW9mZnNldCAmJiAhbGVuZ3RoT3B0KTsKICAgICAKICAg
ICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIEFycmF5
QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQuIikpOwogICAgIAogICAgIC8vIEZvciBldmVy
eXRoaW5nIGJ1dCBEYXRhVmlldywgd2UgYWxsb3cgY29uc3RydWN0aW9uIHdpdGggYW55IG9mOgog
ICAgIC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEgY29weSBvZiB0aGUgb2YgdGhh
dCBhcnJheS4KQEAgLTE3NCw3ICsxNzksNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFyCiAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
ICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9y
RnVuYywgY2FsbERhdGEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1
bWVudCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0
b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKIAogICAgICAg
ICAgICAgICAgICAgICBBcmdMaXN0IGFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBpdGVyYXRvciA9IGNhbGwoZXhlYywgaXRlcmF0b3JGdW5jLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG9iamVjdCwgYXJndW1lbnRzKTsKQEAgLTIwNiwxNSArMjExLDE1IEBAIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICBpZiAoZmlyc3RWYWx1ZS5pc0ludDMy
KCkpCiAgICAgICAgIGxlbmd0aCA9IGZpcnN0VmFsdWUuYXNJbnQzMigpOwogICAgIGVsc2UgaWYg
KCFmaXJzdFZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQiKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGxlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4oZmlyc3RWYWx1ZS5hc051bWJlcigpKTsKICAgICAgICAgaWYg
KGxlbmd0aCAhPSBmaXJzdFZhbHVlLmFzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1
bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCBhcmd1bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsK
ICAgICB9CiAKICAgICBpZiAobGVuZ3RoIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VF
cnJvcihleGVjLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdh
dGl2ZSIpOwogICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxl
bmd0aCk7CiB9CiAKQEAgLTIyNCw2ICsyMjksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEdlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlv
biA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CiAgICAgU3RydWN0dXJlKiBw
YXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1
Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CkBAIC0yMzQsNyArMjQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogCiAgICAgaWYgKCFh
cmdDb3VudCkgewogICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBv
bmUgYXJndW1lbnQuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpOwogICAgIH0KQEAgLTI2OCw3
ICsyNzYsOSBAQCBDb25zdHJ1Y3RUeXBlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3IoZXhlYywgVmlld0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSkpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgVmlld0NsYXNzOjppbmZv
KCktPmNsYXNzTmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIENvbnN0cnVjdGlvbkNvbnRleHQg
Y29udGV4dChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRl
eHQodm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVz
dWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXco
dm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTY0LDE3ICs2NiwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKAogICAgIEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoCi0gICAgICAgIGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCisgICAgICAg
IHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLAog
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0OjpEb250SW5pdGlhbGl6ZSk7CiAgICAgaWYgKCFj
b250ZXh0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAg
ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4oZXhl
Yy0+dm0oKS5oZWFwKSkKLSAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcoZXhlYy0+dm0o
KSwgY29udGV4dCk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAg
ICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+
KHZtLmhlYXApKQorICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7
CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtODMsMjIgKzg3LDI0IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmUKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKLSAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5n
dGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2Yg
YnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKCFBcnJh
eUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkp
IHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkJ5dGUgb2Zmc2V0
IGlzIG5vdCBhbGlnbmVkIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
Q29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpOworICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2
bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgQVNTRVJUKGNv
bnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAgICBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4oZXhlYy0+
dm0oKS5oZWFwKSkKLSAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcoZXhlYy0+dm0oKSwg
Y29udGV4dCk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICAg
ICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZt
LmhlYXApKQorICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7Cisg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTI4LDEwICsxMzQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiAgICAgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoY2FuQWNjZXNzUmFuZ2VRdWlja2x5KG9mZnNldCwgbGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBjb25zaXN0aW5nIG9mIG9mZnNldCBhbmQg
bGVuZ3RoIGFyZSBvdXQgb2YgYm91bmRzIikpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBjb25zaXN0aW5nIG9mIG9mZnNldCBh
bmQgbGVuZ3RoIGFyZSBvdXQgb2YgYm91bmRzIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMjkwLDggKzI5OCwxMCBAQCBBcnJheUJ1ZmZlciogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogRW5jb2RlZEpTVmFsdWUgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRocm93TmV1dGVyZWRUeXBlZEFycmF5VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgb2JqZWN0LCBQcm9wZXJ0eU5hbWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgQVNTRVJUX1VOVVNFRChvYmplY3QsIGpzQ2FzdDxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyo+KEpTVmFsdWU6OmRlY29kZShvYmplY3QpKS0+aXNOZXV0ZXJlZCgpKTsK
LSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3
KiBzcGVjaWVzQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4ZW1wbGFyLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgY29uc3QgRnVuY3RvciYgZGVmYXVsdENvbnN0cnVj
dG9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IGV4ZW1wbGFy
LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTQsNyAr
NTcsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1CiAgICAgaWYg
KGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Q29uc3Ry
dWN0b3IoKTsKICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91
bGQgbm90IGJlIG51bGwiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBub3QgYmUgbnVsbCIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC03MywxMSArNzYsMTEgQEAgaW5s
aW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVzQ29uc3RydQogICAgICAgICBpZiAoIXZpZXct
PmlzTmV1dGVyZWQoKSkKICAgICAgICAgICAgIHJldHVybiB2aWV3OwogCi0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic3BlY2llcyBj
b25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKKyAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJzcGVjaWVzIGNvbnN0cnVjdG9y
IGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3IikpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC05Niw0MyArOTksNDUgQEAgaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBl
ZEluZGV4RnJvbQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1NldChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMuMjIKICAg
ICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qg
b25lIGFyZ3VtZW50IikpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+YXJndW1lbnRDb3VudCgp
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAgICAgdW5zaWduZWQg
b2Zmc2V0OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBk
b3VibGUgb2Zmc2V0TnVtYmVyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnRlZ2Vy
KGV4ZWMpOwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBpZiAob2Zmc2V0TnVtYmVyIDwgMCkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCAiT2Zmc2V0IHNob3VsZCBu
b3QgYmUgbmVnYXRpdmUiKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldE51bWJlciA8IDAp
KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiT2Zm
c2V0IHNob3VsZCBub3QgYmUgbmVnYXRpdmUiKTsKICAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bWluKG9mZnNldE51bWJlciwgc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIG9mZnNldCA9IDA7CiAKLSAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdC0+aXNO
ZXV0ZXJlZCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKLSAgICBpZiAoIXNvdXJjZUFycmF5KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHNob3Vs
ZCBiZSBhbiBvYmplY3QiKSk7CisgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VBcnJheSkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZp
cnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBvYmplY3QiKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGg7CiAgICAgaWYgKGlzVHlwZWRWaWV3KHNvdXJjZUFycmF5LT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlKSkgewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlVmll
dyA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHNvdXJjZUFycmF5KTsKLSAgICAgICAgaWYg
KHNvdXJjZVZpZXctPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICBpZiAoVU5MSUtFTFkoc291cmNlVmlldy0+aXNOZXV0ZXJlZCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgICAgICBsZW5ndGggPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJheSktPmxlbmd0aCgpOwogICAgIH0gZWxz
ZQotICAgICAgICBsZW5ndGggPSBzb3VyY2VBcnJheS0+Z2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgbGVuZ3RoID0gc291
cmNlQXJyYXktPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4
ZWMpOwogCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKICAgICB0aGlzT2JqZWN0LT5zZXQoZXhlYywgb2Zmc2V0LCBzb3VyY2VBcnJh
eSwgMCwgbGVuZ3RoLCBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKQEAgLTE0MCwxMyArMTQ1LDE1
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgLy8gMjIuMi4zLjUKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyog
dGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGxvbmcgbGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CiAgICAgbG9uZyB0byA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoZXhlYywgMCwgbGVuZ3RoKTsKQEAgLTE2NSw3ICsxNzIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgbG9uZyBjb3VudCA9IHN0
ZDo6bWluKGxlbmd0aCAtIHN0ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKIAogICAg
IGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3
Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAg
ICAgbWVtbW92ZShhcnJheSArIHRvLCBhcnJheSArIGZyb20sIGNvdW50ICogdGhpc09iamVjdC0+
ZWxlbWVudFNpemUpOwpAQCAtMTc0LDEyICsxODEsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKy8vICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTE5Myw3ICsyMDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+
aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIGF1dG8gdGFyZ2V0T3B0
aW9uID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24o
dmFsdWVUb0ZpbmQpOwpAQCAtMjE5LDE2ICsyMjgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMuMTMKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTIzOCw3ICsy
NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5
ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICBhdXRvIHRhcmdldE9wdGlvbiA9IFZp
ZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKHZhbHVlVG9G
aW5kKTsKQEAgLTI1NiwxMSArMjY3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSm9pbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogCiAgICAgLy8gMjIuMi4zLjE0CiAgICAgYXV0byBqb2luV2l0aFNlcGFyYXRvciA9IFsm
XSAoU3RyaW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29kZWRKU1ZhbHVlIHsKQEAgLTI4OSwyMSAr
MzAzLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgcmV0dXJuIGpvaW5XaXRoU2VwYXJhdG9y
KHNlcGFyYXRvclN0cmluZy0+dmlldyhleGVjKS5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8g
MjIuMi4zLjE2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0
aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxl
YXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3Qt
Pmxlbmd0aCgpOwogCkBAIC0zMjYsNyArMzQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgYXV0
byB0YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbih2YWx1ZVRvRmluZCk7CiAgICAgaWYgKCF0YXJnZXRPcHRpb24pCkBAIC0zNDUs
NyArMzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAy
Mi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihl
eGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zNTQsNyArMzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aChWTSYsIEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAyMi4yLjMuMTcKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzYzLDcg
KzM3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICAvLyAyMi4yLjMuMgogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xh
c3MqPihleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zNzIsNyArMzg4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRl
T2Zmc2V0KFZNJiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIDIyLjIuMy4zCiAgICAgVmll
d0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKQEAgLTM4MSwxMiArMzk3LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8v
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIxCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVt
ZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHN0ZDo6cmV2
ZXJzZShhcnJheSwgYXJyYXkgKyB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7CkBAIC0zOTUsMTIgKzQx
NCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTb3J0KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyAyMi4yLjMuMjUKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNz
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKICAgICB0aGlzT2JqZWN0LT5zb3J0KCk7CiAKQEAgLTQwOCwxNSArNDMwLDE3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMu
MjYKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgVmlld0NsYXNzKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5zaWduZWQgdGhpc0xlbmd0
aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBAIC00MjgsNyArNDUyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAg
ICAvLyBDbGFtcCBlbmQgdG8gYmVnaW4uCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7
CkBAIC00NDgsNyArNDcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZQogCiAgICAgQVNTRVJUKCFyZXN1bHQtPmlzTmV1dGVyZWQoKSk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIFdlIHJldHVybiBlYXJseSBoZXJl
IHNpbmNlIHdlIGRvbid0IGFsbG9jYXRlIGEgYmFja2luZyBzdG9yZSBpZiBsZW5ndGggaXMgMCBh
bmQgbWVtbW92ZSBkb2VzIG5vdCBsaWtlIG51bGxwdHJzCiAgICAgaWYgKCFsZW5ndGgpCkBAIC00
OTIsMTUgKzUxNiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mdm0sIEV4ZWNTdGF0ZSogZXhl
YykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIzCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4
ZWMtPmNhbGxlZSgpKTsKIAogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3
Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKIAogICAgIC8vIEdldCB0aGUgbGVuZ3RoIGhlcmU7IGxhdGVyIGFzc2VydCB0
aGF0IHRoZSBsZW5ndGggZGlkbid0IGNoYW5nZS4KICAgICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CkBAIC01NTIsNyArNTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4ocmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgInNwZWNpZXMgY29uc3RydWN0b3IgZGlk
IG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5
IFZpZXciKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwMiwxOSArMTIwMiwyMiBAQCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0CiAKIFVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVy
cm9yIGVycm9yOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBo
YXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJ
bmZvKCkuZXZhbENvbnRleHRUeXBlKCk7CiAgICAgCi0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldEV2YWxDb2RlQmxvY2so
Ci0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9y
LCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0uY29kZUNhY2hlKCktPmdldEV2YWxDb2Rl
QmxvY2soCisgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBl
cnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWik7CiAKICAgICBpZiAoaGFz
RGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwg
ZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNz
YWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50b0Vy
cm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTIyMywxNiArMTIyNiwxOSBAQCBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjCiAKIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQogeworICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dl
ck9mZjsKLSAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKLSAgICAg
ICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+
Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dl
ck1vZGUsIGVycm9yKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dl
cigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JP
YmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+
c291cmNlKCkpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAo
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxv
dmljaAogICoKQEAgLTc2LDExICs3NiwxNCBAQCBzdGF0aWMgQml0bWFwPDI1Nj4gbWFrZUNoYXJh
Y3RlckJpdG1hcChjCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIEpT
VmFsdWUgZW5jb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQml0bWFwPDI1Nj4mIGRvTm90RXNj
YXBlLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICAvLyAxOC4yLjYuMS4xIFJ1bnRpbWUgU2VtYW50aWNzOiBFbmNv
ZGUgKCBzdHJpbmcsIHVuZXNjYXBlZFNldCApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hMjYyLyNzZWMtZW5jb2RlCiAKLSAgICBhdXRvIHRocm93RXhjZXB0aW9uID0gW2V4ZWNd
IHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwg
VVRGLTE2IHNlcXVlbmNlLiIpKSk7CisgICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFsmc2NvcGUs
IGV4ZWNdIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBp
bGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOwogICAgIH07CiAKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CkBAIC0xNjMsNiArMTY2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgogQUxXQVlTX0lOTElORQogc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IEJpdG1hcDwyNTY+
JiBkb05vdFVuZXNjYXBlLCBib29sIHN0cmljdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIGludCBrID0gMDsKICAgICBVQ2hhciB1ID0gMDsKQEAg
LTIwMyw3ICsyMDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBj
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hhckxlbiA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHN0cmljdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVUkkgZXJyb3IiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVy
cm9yIikpKTsKICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjYXNlIHdoZXJlIHdlIGRvbid0
IHVzZSAic3RyaWN0IiBtb2RlIGlzIHRoZSAidW5lc2NhcGUiIGZ1bmN0aW9uLgogICAgICAgICAg
ICAgICAgIC8vIEZvciB0aGF0LCBpdCdzIGdvb2QgdG8gc3VwcG9ydCB0aGUgd29ua3kgIiV1IiBz
eW50YXggZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgICAgICBpZiAo
ayA8PSBsZW5ndGggLSA2ICYmIHBbMV0gPT0gJ3UnCkBAIC02NDAsMTMgKzY0NiwxNiBAQCBzdGF0
aWMgZG91YmxlIHBhcnNlRmxvYXQoU3RyaW5nVmlldyBzKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgeCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICgheC5pc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHgpOwogCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIH0KIApAQCAtODQ1LDEyICs4NTQsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICInYXJndW1l
bnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gc3RyaWN0
IG1vZGUuIik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNj
ZXNzZWQgaW4gc3RyaWN0IG1vZGUuIik7CiB9CiAKIGNsYXNzIEdsb2JhbEZ1bmNQcm90b0dldHRl
ckZ1bmN0b3IgewpAQCAtODg3LDggKzkwMCwxMSBAQCBwcml2YXRlOgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZl
cnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZlcnQg
dW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIE5vdFN0cmljdE1vZGUpKTsKIApAQCAtOTQ0LDggKzk2MCwxMSBAQCBib29sIGNoZWNrUHJv
dG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAoZXhl
Yy0+dGhpc1ZhbHVlKCkuaXNVbmRlZmluZWRPck51bGwoKSkgCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQg
b3IgbnVsbCB0byBvYmplY3QiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoZXhlYy0+dGhpc1Zh
bHVlKCkuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3Ig
bnVsbCB0byBvYmplY3QiKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAKQEAgLTk2Miw3ICs5ODEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNQCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7
CiAgICAgdGhpc09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDEx
ICsxMTAsMTQgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleAogCiBi
b29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgLy8gQWxs
IGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCiAgICAgSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZl
SW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgp
KSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOSBAQCB2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0Ojp2aXNpdENoaWxkCiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9k
dWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0eS1wCiAKICAgICBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCo+KGNlbGwpOwpAQCAtMTI5LDcgKzEzMiw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmdldE93blByb3AKICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0
RW52aXJvbm1lbnQgPSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CiAKICAgICAg
ICAgUHJvcGVydHlTbG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IHRh
cmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlT
bG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBv
bGluZVNsb3QpOworICAgICAgICBib29sIGZvdW5kID0gdGFyZ2V0RW52aXJvbm1lbnQtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCBy
ZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CiAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVT
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC0xMzcsNyArMTQwLDcgQEAgYm9v
bCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAogCiAgICAgICAgIC8vIElmIHRo
ZSB2YWx1ZSBpcyBmaWxsZWQgd2l0aCBURFogdmFsdWUsIHRocm93IGEgcmVmZXJlbmNlIGVycm9y
LgogICAgICAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIApAQCAtMTYyLDE2ICsxNjUsMjIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Z2V0T3duUHJvcAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1v
YmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNob3VsZFRocm93KQotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTMsMTcgKzIwMiwyMyBAQCB2b2lkIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWZpbmVvd25w
cm9wZXJ0eS1wLWRlc2MKICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24g
b2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0
eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVj
dFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghb2JqZWN0KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInx0aGlzfCBz
aG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBi
ZSBhIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgb2JqZWN0KSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDYgKzY4MSw5IEBA
IHN0YXRpYyB2b2lkIGdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiAKIAogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQogICAgIGlmICht
X21vZHVsZU5hbWVzcGFjZU9iamVjdCkKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmdldCgpOwpAQCAtNjk0LDExICs2OTcsMTEgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIEpTTW9kdWxlUmVjb3JkOgogICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6UmVzb2x1
dGlvbiByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIG5hbWUuZ2V0KCkpKTsKICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsK
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICci
LCBTdHJpbmcobmFtZS5nZXQoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5n
IG5hbWUgJyIsIFN0cmluZyhuYW1lLmdldCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4
cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIg
ZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBz
Y29wZSwgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3Qg
YmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoK
QEAgLTcxMCwyOSArNzEzLDMzIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJl
Y29yZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNl
dChleGVjLT52bSgpLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1
cmUoKSwgdGhpcywgdW5hbWJpZ3VvdXNOYW1lcykpOworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKICAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuZ2V0KCk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNv
ZGUoKSk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYyk7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIGV4ZWN1dGFibGUpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0
KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKICAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVj
LCBleGVjdXRhYmxlKTsKIH0KIAogdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNs
YXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25p
bnN0YW50aWF0aW9uCiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOwotICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKLQot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxl
RW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJs
ZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKIAogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRp
b24KICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgOS4KQEAgLTc0NSwxNSArNzUyLDE1
IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXQKICAgICAgICAgICAg
IFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0RW50cnku
ZXhwb3J0TmFtZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQg
YmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAi
JyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhl
Yywgc2NvcGUsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICci
LCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQu
IikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVk
IGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhw
b3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBs
KCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5k
aW5ncy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1
bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVk
IGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKQEAgLTc3OSwxNSAr
Nzg2LDE1IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXQKICAgICAg
ICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhw
b3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwogICAgICAgICAgICAgc3dpdGNoIChy
ZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFt
ZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUg
JyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3Vu
ZC4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OkFtYmlndW91czoKLSAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBv
cnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8g
YW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5
bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1l
ICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUg
cmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVy
cm9yOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygi
SW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0
YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQn
IGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsOCBAQCBKU1ZhbHVl
IFN0cmluZ2lmaWVyOjp0b0pTT05JbXBsKEpTVmFsdWUgCiBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IG1fZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICAvLyBDYWxsIHRoZSB0b0pTT04gZnVuY3Rpb24uCiAgICAgdmFsdWUgPSB0b0pTT04odmFsdWUs
IHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpAQCAtMzY4LDcgKzM3MCw3
IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXIKICAgICAvLyBIYW5k
bGUgY3ljbGUgZGV0ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhlIHN0YWNrLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIGlmIChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpTT04uc3RyaW5naWZ5
IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBj
YW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmdpZnlGYWlsZWQ7CiAgICAgICAgIH0KICAgICB9CkBAIC01ODksMTAgKzU5MSwxMyBA
QCBlbnVtIFdhbGtlclN0YXRlIHsgU3RhdGVVbmtub3duLCBBcnJheVN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPYmplY3RTdGFydFN0YXRlLCBPYmplY3RTdGFydFZpc2l0TWVt
YmVyLCBPYmplY3RFbmRWaXNpdE1lbWJlciB9OwogTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgVmVjdG9y
PFByb3BlcnR5TmFtZUFycmF5LCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHByb3BlcnR5U3Rh
Y2s7CiAgICAgVmVjdG9yPHVpbnQzMl90LCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGluZGV4
U3RhY2s7Ci0gICAgTG9jYWxTdGFjazxKU09iamVjdCwgMTY+IG9iamVjdFN0YWNrKG1fZXhlYy0+
dm0oKSk7Ci0gICAgTG9jYWxTdGFjazxKU0FycmF5LCAxNj4gYXJyYXlTdGFjayhtX2V4ZWMtPnZt
KCkpOworICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmplY3RTdGFjayh2bSk7CisgICAg
TG9jYWxTdGFjazxKU0FycmF5LCAxNj4gYXJyYXlTdGFjayh2bSk7CiAgICAgVmVjdG9yPHVuc2ln
bmVkLCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGFycmF5TGVuZ3RoU3RhY2s7CiAgICAgCiAg
ICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHN0YXRlU3Rh
Y2s7CkBAIC02MDcsNyArNjEyLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2Jq
ZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAg
ICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmls
dGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJm
bG93RXJyb3IobV9leGVjKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKG1fZXhlYywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGFycmF5U3RhY2sucHVz
aChhcnJheSk7CkBAIC02NjMsNyArNjY4LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUpKSAm
JiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKEpTQXJyYXk6OmluZm8oKSkpOwogICAgICAg
ICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBhcnJheVN0YWNrLnNpemUoKSA+IG1h
eGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgb2Jq
ZWN0U3RhY2sucHVzaChvYmplY3QpOwpAQCAtNzM2LDMxICs3NDEsMzQgQEAgTkVWRVJfSU5MSU5F
IEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgIH0KICAgICBKU09iamVjdCogZmluYWxI
b2xkZXIgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMpOwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGZpbmFsSG9sZGVyKTsKLSAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUoKS0+cHV0
KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlk
ZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKKyAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUo
KS0+cHV0KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllciwgb3V0VmFsdWUsIHNsb3QpOwogICAgIHJldHVybiBjYWxsUmV2aXZlcihmaW5hbEhvbGRl
ciwganNFbXB0eVN0cmluZyhtX2V4ZWMpLCBvdXRWYWx1ZSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1
IDE1LjEyLjIKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFy
YW1ldGVyIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0
IG9uZSBwYXJhbWV0ZXIiKSkpOwogICAgIEpTU3RyaW5nOjpTYWZlVmlldyBzb3VyY2UgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogCiAgICAgSlNWYWx1ZSB1bmZpbHRlcmVkOwotICAgIExvY2FsU2NvcGUgc2Nv
cGUoZXhlYy0+dm0oKSk7CisgICAgTG9jYWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKICAgICBpZiAo
c291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IGpzb25QYXJz
ZXIoZXhlYywgc291cmNlLmNoYXJhY3RlcnM4KCksIHNvdXJjZS5sZW5ndGgoKSwgU3RyaWN0SlNP
Tik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwog
ICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdl
KCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNv
dXJjZS5jaGFyYWN0ZXJzMTYoKSwgc291cmNlLmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAg
ICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIGlm
ICghdW5maWx0ZXJlZCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOyAgICAg
ICAgCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CiAgICAgfQog
ICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNzcxLDE4ICs3Nzks
MjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodW5maWx0ZXJlZCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXYWxrZXIoZXhlYywg
TG9jYWw8SlNPYmplY3Q+KGV4ZWMtPnZtKCksIGFzT2JqZWN0KGZ1bmN0aW9uKSksIGNhbGxUeXBl
LCBjYWxsRGF0YSkud2Fsayh1bmZpbHRlcmVkKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShXYWxrZXIoZXhlYywgTG9jYWw8SlNPYmplY3Q+KHZtLCBhc09iamVjdChmdW5jdGlvbikpLCBj
YWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOwogfQogCiAvLyBFQ01BLTI2MiB2
NSAxNS4xMi4zCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJp
bmdpZnkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJObyBpbnB1dCB0byBzdHJpbmdpZnkiKSkpOwotICAg
IExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+dm0oKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gdmFsdWUo
ZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIExvY2FsPFVua25v
d24+IHJlcGxhY2VyKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKLSAgICBMb2NhbDxV
bmtub3duPiBzcGFjZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgyKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiTm8gaW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKKyAgICBMb2NhbFNjb3BlIGxvY2FsU2Nv
cGUodm0pOworICAgIExvY2FsPFVua25vd24+IHZhbHVlKHZtLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CisgICAgTG9jYWw8VW5rbm93bj4gcmVwbGFjZXIodm0sIGV4ZWMtPmFyZ3VtZW50
KDEpKTsKKyAgICBMb2NhbDxVbmtub3duPiBzcGFjZSh2bSwgZXhlYy0+YXJndW1lbnQoMikpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gU3RyaW5naWZpZXIoZXhlYywgcmVwbGFjZXIsIHNwYWNlKS5z
dHJpbmdpZnkodmFsdWUpLmdldCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAwNiwgMjAwOCwgMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEyLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMzU0LDYg
KzEzNTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJlY3QoVk0mIHZtCiAKIGJv
b2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKIHsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMsIE5vdFN0cmljdE1vZGUpID09IHRoaXMp
OwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCgpID09IHByb3RvdHlwZSkKQEAg
LTEzNjUsNyArMTM2Niw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWMKIAogICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvd0lm
Q2FudFNldCkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM3NCw3ICsxMzc1LDcgQEAgYm9vbCBKU09iamVj
dDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYm
IG5leHRQcm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9
PSB0aGlzKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90
b19fIHZhbHVlIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0KG5l
eHRQcm90b3R5cGUpLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3RvdHlwZSAhPSBkZWZhdWx0R2V0
UHJvdG90eXBlKSkKQEAgLTE2MTYsMjggKzE2MTcsMzEgQEAgZW51bSBjbGFzcyBUeXBlSGludE1v
ZGUgeyBUYWtlc0hpbnQsIERvZQogdGVtcGxhdGU8VHlwZUhpbnRNb2RlIG1vZGUgPSBUeXBlSGlu
dE1vZGU6OkRvZXNOb3RUYWtlSGludD4KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWl0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU09iamVjdCogb2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhp
bnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQo
ZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKTsKICAgICBpZiAoZnVuY3Rpb24uaXNV
bmRlZmluZWQoKSAmJiBtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgY2FsbEFyZ3M7CiAgICAgaWYgKG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpUYWtlc0hpbnQp
IHsKICAgICAgICAgSlNTdHJpbmcqIGhpbnRTdHJpbmcgPSBudWxscHRyOwogICAgICAgICBzd2l0
Y2ggKGhpbnQpIHsKICAgICAgICAgY2FzZSBOb1ByZWZlcmVuY2U6Ci0gICAgICAgICAgICBoaW50
U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOworICAgICAg
ICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5kZWZhdWx0U3RyaW5nKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQcmVmZXJOdW1iZXI6Ci0gICAgICAgICAgICBo
aW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCk7CisgICAg
ICAgICAgICBoaW50U3RyaW5nID0gdm0uc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJlZmVyU3RyaW5nOgotICAgICAgICAgICAg
aGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpOworICAg
ICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhbGxBcmdzLmFwcGVuZChoaW50
U3RyaW5nKTsKQEAgLTE2NDUsNDAgKzE2NDksNDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBjYWxsVG9QcmltaQogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmplY3QpLCBj
YWxsQXJncyk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7
CisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0
aW9uKCk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbW9kZSA9
PSBUeXBlSGludE1vZGU6OkRvZXNOb3RUYWtlSGludCA/IEpTVmFsdWUoKSA6IHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJpbWl0aXZlIHJldHVybmVkIGFuIG9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFr
ZUhpbnQgPyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0IikpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIC8vIEVDTUEgNy4xLjEKIEpTVmFsdWUgSlNPYmplY3Q6Om9yZGluYXJ5
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQp
IGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciBk
ZWZhdWx0IHZhbHVlIG1ldGhvZHMgdGhlcmUgYXJlIG9uIG9iamVjdCdzIHByb3RvdHlwZSBjaGFp
biBhcmUKICAgICAvLyBiZWluZyB3YXRjaGVkLgotICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zdGFy
dFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnlGb3JFbnRpcmVDaGFpbihleGVj
LT52bSgpKTsKKyAgICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFsUHJv
cGVydGllc0lmTmVjZXNzYXJ5Rm9yRW50aXJlQ2hhaW4odm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZTsKICAgICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpIHsKICAgICAgICAgdmFsdWUgPSBjYWxs
VG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9T
dHJpbmcsIGhpbnQpOworICAgICAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHNjb3Bl
LmV4Y2VwdGlvbigpID09IHZhbHVlLmFzQ2VsbCgpKTsKICAgICAgICAgaWYgKHZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsK
KyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9
PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICB9IGVsc2UgewogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsK
KyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9
PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0
aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGhpbnQpOworICAgICAgICBBU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHNjb3BlLmV4Y2VwdGlvbigpID09IHZhbHVlLmFzQ2Vs
bCgpKTsKICAgICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IH0KIAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVm
YXVsdCB2YWx1ZSIpKTsKIH0KIAogSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0
IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBoaW50KQpAQCAtMTcyNywxMiArMTczOCwxNCBAQCBjb25zdCBIYXNoVGFibGVWYWx1ZSogSlNP
YmplY3Q6OmZpbmRQcm9wCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICAKIAogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmIGhhc0luc3RhbmNlVmFsdWUgIT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSB7CiAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEo
aGFzSW5zdGFuY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rp
b24oZXhlYywgdGhpcykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JoYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTE3NDcsNyArMTc2MCw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXgKICAgICAgICAgcmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1
ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpKTsKICAgICBpZiAo
aW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxl
KHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOwotICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RG
dW5jdGlvbihleGVjLCB0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihleGVjLCB0aGlz
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzYwLDE1ICsxNzczLDE3IEBAIGJvb2wg
SlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBKU09iamVjdDo6ZGVm
YXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90bykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24g
YW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnN0YW5jZW9mIGNh
bGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKQEAgLTIyMzgsNiArMjI1Myw5IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgog
Ym9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykg
PT0gaW5kZXhpbmdTaGFwZSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkp
OwogCkBAIC0yMjQ3LDggKzIyNjUsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuCiAgICAgLy8gb3IgZXF1YWwgdG8gdGhlIHZlY3RvciBsZW5ndGguCiAgICAgQVNT
RVJUKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAog
ICAgICAgICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdo
Rm9yVmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAg
ICAgICAgIHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwg
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKQEAgLTIyNjIsNyArMjI3OCw3IEBAIGJvb2wg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICB9CiAKICAgICBpZiAoIWVu
c3VyZUxlbmd0aCh2bSwgaSArIDEpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQo
KTsKQEAgLTIzMDAsNiArMjMxNiw3IEBAIHRlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmQKIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUg
b2YgdGhlIGN1cnJlbnQgdmVjdG9yLgogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7
CkBAIC0yMzI3LDcgKzIzNDQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvLCBvciBjYW4ndCB1c2UgYSB2ZWN0b3IgdG8gaG9sZCB0aGlzIHByb3Bl
cnR5IC0gYWxsb2NhdGUgYSBzcGFyc2UgbWFwICYgYWRkIHRoZSB2YWx1ZS4KLSAgICAgICAgbWFw
ID0gYWxsb2NhdGVTcGFyc2VJbmRleE1hcChleGVjLT52bSgpKTsKKyAgICAgICAgbWFwID0gYWxs
b2NhdGVTcGFyc2VJbmRleE1hcCh2bSk7CiAgICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yMzM3LDcgKzIz
NTQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgICAg
IC8vIFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUu
CiAgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRl
bnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwpAQCAtMjM0Nyw3ICsyMzY0LDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIFdlIGFy
ZSBjdXJyZW50bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8g
YmUgZG9pbmcgc28uCiAgICAgLy8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1h
cCBpZiBTcGFyc2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3Ig
aWYgYWxsb2NhdGlvbiBmYWlscy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNw
YXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0lu
QXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAg
IGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgs
IG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aCh2bSwgbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VWZWN0b3JM
ZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjk0NCw2ICsyOTYxLDkgQEAg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjUwogYm9vbCB2YWxpZGF0ZUFu
ZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgYm9vbCBpc0V4dGVuc2libGUsCiAgICAgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzQ3VycmVudERlZmluZWQs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgY3VycmVudCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIElmIHdlIGhhdmUgYSBuZXcgcHJvcGVydHkgd2UgY2Fu
IGp1c3QgcHV0IGl0IG9uIG5vcm1hbGx5CiAgICAgLy8gU3RlcCAyLgogICAgIGlmICghaXNDdXJy
ZW50RGVmaW5lZCkgewpAQCAtMjk1MSw3ICsyOTcxLDcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKAogICAgICAgICAvLyBTdGVwIDIuYQogICAgICAgICBpZiAoIWlz
RXh0ZW5zaWJsZSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBk
ZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNp
YmxlLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIW9iamVjdCkKQEAgLTI5NzQsMTIgKzI5OTQsMTIgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewog
ICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29u
ZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBjdXJyZW50
LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29u
ZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI5ODgsNyArMzAwOCw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVBy
b3BlcnR5RGVzY3JpcHRvcigKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkg
Y2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAo
ZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJl
bnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk5OSwxNCArMzAxOSwx
NCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgaWYgKGRl
c2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICE9IGN1cnJlbnQuaXNEYXRhRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNt
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlw
dG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBA
IC0zMDE2LDEzICszMDM2LDEzIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3Jp
dGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSkgewogICAgICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1ZShleGVjLCBjdXJyZW50LnZhbHVl
KCksIGRlc2NyaXB0b3IudmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93
RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVh
ZG9ubHkgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzAzMSw3ICszMDUxLDcgQEAgYm9v
bCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
cmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJy
ZW50KTsKICAgICB9CiAKQEAgLTMwNDEsMTcgKzMwNjEsMTcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFw
cGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LnNl
dHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LnNldHRl
cigpLCBkZXNjcmlwdG9yLnNldHRlcigpKSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiAhKGN1cnJlbnQu
Z2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJlbnQuZ2V0
dGVyKCksIGRlc2NyaXB0b3IuZ2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhj
ZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3Ip
IHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTMwNTksMzMgKzMwNzksMzMgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKAogICAgIC8vIFN0ZXAgMTAvMTEuCiAgICAgaWYgKCFvYmplY3QpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBvYmplY3QtPmdldERp
cmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBv
YmplY3QtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWFjY2Vzc29yKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXI7CiAg
ICAgYm9vbCBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGFjY2Vzc29yLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0
dGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CiAgICAgICAgIGlmIChjdXN0b21H
ZXR0ZXJTZXR0ZXItPnNldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0
ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3Rv
bUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVy
KSk7CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNl
dHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CiAgICAgICAgIGlmIChjdXN0b21HZXR0
ZXJTZXR0ZXItPmdldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdl
dHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7
CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRl
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNT
RVJUKGFjY2Vzc29yLmlzR2V0dGVyU2V0dGVyKCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBh
c0dldHRlclNldHRlcihhY2Nlc3Nvcik7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhT
ZXR0ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9y
LnNldHRlck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53
aXRoU2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3Iuc2V0
dGVyT2JqZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9
CiAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKSB7Ci0gICAgICAgIGdldHRlclNl
dHRlciA9IGdldHRlclNldHRlci0+d2l0aEdldHRlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOworICAgICAgICBnZXR0
ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhHZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CiAgICAgICAgIGdldHRlclNl
dHRlckNoYW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzRXF1
YWwoZGVzY3JpcHRvcikgJiYgIWdldHRlclNldHRlckNoYW5nZWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2ln
bmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGdl
dHRlclNldHRlciwgYXR0cnMgfCBBY2Nlc3Nvcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjMz
LDYgKzMyNTMsOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2luZGV4Lmh0
bWwjc2VjLWdldG1ldGhvZAogSlNWYWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgQ2FsbERhdGEmIGNhbGxEYXRhLCBDYWxsVHlwZSYgY2FsbFR5cGUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgbWV0aG9kID0gZ2V0KGV4ZWMsIGlkZW50KTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMzI0MSwx
MyArMzI2NCwxMyBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRNZXRob2QoRXhlY1N0YXRlKiBlCiAg
ICAgICAgIGlmIChtZXRob2QuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgY2FsbFR5
cGUgPSBtZXRob2QuYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1ldGhvZC5h
c0NlbGwoKSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBA
CiAjaW5jbHVkZSAiUHV0RGlyZWN0SW5kZXhNb2RlLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlT
bG90LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKLQogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTY2LDEwICs2NSwx
MSBAQCBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgVGhyb3dTY29wZTsK
IHN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJik7CiBleHRlcm4gSlNfRVhQT1JUREFUQSBjb25z
dCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3I7CiBleHRlcm4gSlNf
RVhQT1JUREFUQSBjb25zdCBjaGFyKiBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNz
TWVjaGFuaXNtRXJyb3I7CiAKQEAgLTE2NjUsMzcgKzE2NjUsNiBAQCBBTFdBWVNfSU5MSU5FIElk
ZW50aWZpZXIgbWFrZUlkZW50aWZpZXIoCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLS8vIFNlY3Rp
b24gNy4zLjE3IG9mIHRoZSBzcGVjLiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBBZGRGdW5jdGlvbj4g
Ly8gQWRkIGZ1bmN0aW9uIHNob3VsZCBoYXZlIGEgdHlwZSBsaWtlOiAoSlNWYWx1ZSwgUnVudGlt
ZVR5cGUpIC0+IGJvb2wKLXZvaWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50aW1lVHlwZU1hc2sgbGVnYWxUeXBlc0Zp
bHRlciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIEFkZEZ1bmN0aW9uIGFkZEZ1bmN0aW9u
KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgVmVjdG9yPEpTVmFsdWU+IHJlc3Vs
dDsKLSAgICBKU1ZhbHVlIGxlbmd0aFByb3BlcnR5ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMs
IGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgbGVuZ3RoQXNEb3VibGUgPSBsZW5ndGhQ
cm9wZXJ0eS50b0xlbmd0aChleGVjKTsKLSAgICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGhBc0RvdWJsZSA+PSAwLjAgJiYgbGVu
Z3RoQXNEb3VibGUgPT0gc3RkOjp0cnVuYyhsZW5ndGhBc0RvdWJsZSkpOwotICAgIHVpbnQ2NF90
IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhBc0RvdWJsZSk7Ci0gICAgZm9y
ICh1aW50NjRfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAg
IEpTVmFsdWUgIG5leHQgPSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgaW5kZXgpOwotICAgICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUnVu
dGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUobmV4dCk7Ci0gICAgICAgIGlmICgh
KHR5cGUgJiBsZWdhbFR5cGVzRmlsdGVyKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgZXhpdEVhcmx5ID0gYWRkRnVuY3Rpb24obmV4dCwgdHlwZSk7Ci0gICAgICAg
IGlmIChleGl0RWFybHkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGJvb2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGN1cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisvLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUgc3BlYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBZGRG
dW5jdGlvbj4gLy8gQWRkIGZ1bmN0aW9uIHNob3VsZCBoYXZlIGEgdHlwZSBsaWtlOiAoSlNWYWx1
ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wKK3ZvaWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50aW1lVHlwZU1hc2sgbGVn
YWxUeXBlc0ZpbHRlciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIEFkZEZ1bmN0aW9uIGFk
ZEZ1bmN0aW9uKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1
bHQ7CisgICAgSlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBsZW5ndGhBc0RvdWJsZSA9IGxlbmd0aFByb3BlcnR5
LnRvTGVuZ3RoKGV4ZWMpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aEFzRG91YmxlID49IDAuMCAmJiBsZW5ndGhBc0Rv
dWJsZSA9PSBzdGQ6OnRydW5jKGxlbmd0aEFzRG91YmxlKSk7CisgICAgdWludDY0X3QgbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aEFzRG91YmxlKTsKKyAgICBmb3IgKHVpbnQ2
NF90IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHsKKyAgICAgICAgSlNWYWx1
ZSBuZXh0ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMsIGluZGV4KTsKKyAgICAgICAgaWYgKHZt
LmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgUnVu
dGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUobmV4dCk7CisgICAgICAgIGlmICgh
KHR5cGUgJiBsZWdhbFR5cGVzRmlsdGVyKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZXhpdEVhcmx5ID0gYWRkRnVuY3Rpb24obmV4dCwg
dHlwZSk7CisgICAgICAgIGlmIChleGl0RWFybHkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIGlmIChVTkxJS0VMWShwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnVuZGVyc2NvcmVQcm90bykpCkBAIC01NSwxMCArODgsMTIgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0
KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNW
YWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICByZXR1cm4gb3JkaW5hcnlT
ZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1Zh
bHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtNjksMTAgKzEwNCwxMCBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKCiAgICAgICAgIHJldHVybiBwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0
TW9kZSgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZShl
eGVjLCB2bSwgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0
cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8odm0sIHByb3BlcnR5TmFtZSkp
OwogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkgewogICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDEyICs5NiwxMyBAQCB2b2lk
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjphZGRPd25JbnRlcm5hCiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0
ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CiAgICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RydWN0dXJlKiBwcm9taXNlU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
ZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMTQsNyArMTE1LDkgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsUHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsICJQcm9taXNlIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlByb21pc2UiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNQcm9t
aXNlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDkgKzE0MywxMiBAQCBib29sIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om5leHQoRXhlY1N0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
cGVydHlOYW1lSXRlcmF0b3JGdW5jTmV4dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0
ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgUHJvcGVydHlOYW1lSXRlcmF0b3IubmV4dCgp
IG9uIGEgbm9uLVByb3BlcnR5TmFtZUl0ZXJhdG9yIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNhbGwgUHJvcGVydHlOYW1lSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLVByb3Bl
cnR5TmFtZUl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBp
ZiAoaXRlcmF0b3ItPm5leHQoZXhlYywgcmVzdWx0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0y
MDA4LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM4MCwxMSArMzgwLDE0IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNv
bHZlUm9wZVNsb3dDYXNlKFUKIAogdm9pZCBKU1JvcGVTdHJpbmc6Om91dE9mTWVtb3J5KEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNsZWFyRmliZXJzKCk7CiAg
ICAgQVNTRVJUKGlzUm9wZSgpKTsKICAgICBBU1NFUlQobV92YWx1ZS5pc051bGwoKSk7CiAgICAg
aWYgKGV4ZWMpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogSlNWYWx1ZSBKU1N0cmlu
Zzo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRl
ci5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsMTcgKzcxLDE5IEBAIHB1YmxpYzoK
IAogICAgIEpTVmFsdWUgYnVpbGQoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgICAgICBpZiAoIW1fb2theSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgaWYgKG1faXM4Qml0KSB7CiAgICAgICAgICAg
ICBidWZmZXI4LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXI4
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyMTYuc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
aWYgKCFidWZmZXIxNi5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0
KGJ1ZmZlcjE2KSk7CiAgICAgfQogCkBAIC0xMjcsOSArMTI5LDExIEBAIGlubGluZSBKU1ZhbHVl
IGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXgKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUs
IHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPgogaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlh
bFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZ1R5cGUmIHN0cmluZywgY29uc3Qg
U3RyaW5nVHlwZXMmLi4uIHN0cmluZ3MpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RyaW5nIHJlc3Vs
dCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcsIHN0cmluZ3MuLi4pOwogICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
Sm9pbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDYgKzgxLDkgQEAgc3RhdGljIGlubGlu
ZSBTdHJpbmcgam9pblN0cmluZ3MoY29uc3QgVgogCiBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdK
b2luZXI6OmpvaW5lZExlbmd0aChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdHJpbmdzID0gbV9zdHJpbmdzLnNpemUoKTsKICAg
ICBpZiAoIW51bWJlck9mU3RyaW5ncykKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSw3ICs5NCw3
IEBAIGlubGluZSB1bnNpZ25lZCBKU1N0cmluZ0pvaW5lcjo6am9pbmVkTGUKIAogICAgIHVuc2ln
bmVkIHJlc3VsdDsKICAgICBpZiAodG90YWxMZW5ndGguc2FmZUdldChyZXN1bHQpID09IENoZWNr
ZWRTdGF0ZTo6RGlkT3ZlcmZsb3cpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZz
dGF0ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OSw2ICsxMDIs
OSBAQCBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKIEpTVmFsdWUg
SlNTdHJpbmdKb2luZXI6OmpvaW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEFTU0VSVChtX3N0cmluZ3Muc2l6ZSgpIDw9IG1fc3RyaW5ncy5jYXBhY2l0eSgpKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGpvaW5lZExlbmd0aChzdGF0ZSk7CkBAIC0xMTUsNyArMTIx
LDcgQEAgSlNWYWx1ZSBKU1N0cmluZ0pvaW5lcjo6am9pbihFeGVjU3RhdGUmIAogICAgICAgICBy
ZXN1bHQgPSBqb2luU3RyaW5nczxVQ2hhcj4obV9zdHJpbmdzLCBtX3NlcGFyYXRvciwgbGVuZ3Ro
KTsKIAogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmc3RhdGUsIFdURk1vdmUo
cmVzdWx0KSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSm9pbmVyLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCwxNiArNjAs
MjAgQEAgaW5saW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pvaW5lcihFeAogICAgIDogbV9z
ZXBhcmF0b3Ioc2VwYXJhdG9yKQogICAgICwgbV9pc0FsbDhCaXQobV9zZXBhcmF0b3IuaXM4Qml0
KCkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiB9
CiAKIGlubGluZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgTENoYXIgc2VwYXJhdG9yLCB1bnNpZ25lZCBzdHJpbmdDb3VudCkKICAgICA6IG1fc2luZ2xl
Q2hhcmFjdGVyU2VwYXJhdG9yKHNlcGFyYXRvcikKICAgICAsIG1fc2VwYXJhdG9yIHsgJm1fc2lu
Z2xlQ2hhcmFjdGVyU2VwYXJhdG9yLCAxIH0KIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIW1fc3RyaW5ncy50cnlSZXNlcnZlQ2FwYWNpdHkoc3RyaW5nQ291bnQpKSkKLSAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmc3RhdGUsIHNjb3BlKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpTU3RyaW5nSm9p
bmVyOjphcHBlbmQoU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nJiYgc3RyaW5nKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlE
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xNjYsNiArMTY3LDcgQEAgdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5
bWJvbFRhYmxlUAogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYmplY3RU
eXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIFdh
dGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogcmVnOwpAQCAtMTgyLDcgKzE4NCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5
bWJvbFRhYmxlT2IKICAgICAgICAgQVNTRVJUKCFmYXN0RW50cnkuaXNOdWxsKCkpOwogICAgICAg
ICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHB1dFJlc3VsdCA9
IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwMCw5ICsy
MDIsOSBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAgLy8g
dGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRv
bid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICBpZiAo
c3ltYm9sVGFibGVQdXRNb2RlID09IFN5bWJvbFRhYmxlUHV0TW9kZTo6SW52YWxpZGF0ZSkKLSAg
ICAgICAgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldChleGVjLT52bSgpLCBv
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywgc2V0KTsKKyAgICAgICAgc3ltYm9sVGFi
bGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCh2bSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCByZWcsIHNldCk7CiAgICAgZWxzZQotICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0
Y2hwb2ludFNldChleGVjLT52bSgpLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywg
c2V0KTsKKyAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodm0sIG9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwogICAgIHB1dFJlc3VsdCA9IHRydWU7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsOSBAQCBTdHJ1
Y3R1cmUqIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIiVU
eXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCIl
VHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CiB9CiAKIENvbnN0
cnVjdFR5cGUgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI2
ICszOSwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGZ1bmN0aW9uTmFtZSkgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBzd2l0Y2ggKHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZv
KCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU1VpbnQ4Q2xhbXBlZEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1Vp
bnQ4Q2xhbXBlZEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQzMjogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDMyQXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uTmFtZTxKU0ludDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MzI6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5PihleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVGbG9hdDY0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRB
cnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRBcnJheT4odm0sIGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5
cGVGbG9hdDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTxKU0Zsb2F0MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJh
eT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBjYXNlIFR5cGVJbnQ4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTxKU0ludDhBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxK
U0ludDhBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50ODogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQxNjogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MTY6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQx
NkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNl
IE5vdFR5cGVkQXJyYXk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVEYXRhVmlldzog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIpKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTcyLDE0ICs3MiwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBh
cmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxsKCkg
fHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IikpOwogCiAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihhcmd1bWVu
dCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3IikpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5sZW5ndGgoKSkpOwogfQpAQCAt
OTQsMTExICs5NiwxMzkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
VgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
b3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2Jq
ZWN0IikpOworICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwog
ICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hv
dWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9O
KGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0lu
ZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4o
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVj
dCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9H
ZXR0ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUg
YSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dF
TkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jUmV2ZXJzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VO
RVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDExICs1MCwxNiBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiTWFwIikpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIk1hcCIpKTsKIH0KIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm1h
cFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MSwxMSAr
NzYsMTEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENh
bGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERh
dGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7
CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGlmICghbmV4dEl0ZW0u
aXNPYmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBE
YXRhSW5saW5lcy5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBEYXRhSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDkg
QEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0bwogdGVtcGxhdGU8dHlw
ZW5hbWUgRW50cnksIHR5cGVuYW1lIEpTSXRlcmF0b3I+CiBpbmxpbmUgQ2hlY2tlZEJvb2xlYW4g
TWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjplbnN1cmVTcGFjZUZvckFwcGVuZChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAobV9j
YXBhY2l0eSA+IG1fc2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTIxMSw3ICsyMTQs
NyBAQCBpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YUltcGw8RW50cnksCiAgICAgdm9pZCog
bmV3U3RvcmFnZSA9IG51bGxwdHI7CiAgICAgRGVmZXJHQyBkZWZlcigqZXhlYy0+aGVhcCgpKTsK
ICAgICBpZiAoIWV4ZWMtPmhlYXAoKS0+dHJ5QWxsb2NhdGVTdG9yYWdlKG93bmVyLCByZXF1aXJl
ZFNpemUgKiBzaXplb2YoRW50cnkpLCAmbmV3U3RvcmFnZSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEVudHJ5KiBuZXdFbnRy
aWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdTdG9yYWdlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0
ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw5ICs1MCwxMiBAQCB2b2lk
IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXBJdGVyYXRvciogaXRlcmF0b3Ig
PSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBNYXBJdGVyYXRv
ci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBjYWxsIE1hcEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1NYXBJdGVyYXRv
ciBvYmplY3QiKSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5u
ZXh0KGNhbGxGcmFtZSwgcmVzdWx0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsMTMgKzkwLDE2IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0K
IAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJh
bWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNN
YXAqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0aGlzVmFsdWUpOwogICAgIGlmICghbWFw
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBub24tTWFwIG9iamVjdCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIHJldHVybiBtYXA7CkBAIC0xNTUsMjYgKzE1OCwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jVmFsdWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU01hcCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBNYXAgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUt
PnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0
cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBNYXAgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01h
cCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBlbnRyeSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9i
amVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3Jl
YXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
Pm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBlbnRyeSBpdGVyYXRvciBmb3Ig
YSBub24tTWFwIG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBq
c0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0
aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBm
b3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNN
YXBJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVL
ZXkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAga2V5IGl0ZXJh
dG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc01hcChFeGVjU3Rh
dGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTA5LDYgKzEwOSw4IEBAIE1vZHVsZUxvYWRlclByb3RvdHlwZTo6TW9kdWxlTG9h
ZGVyUHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90
eXBlUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgY29u
c3QgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyNyw3ICsxMjksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0LCBKU1BhcnNlckNvbW1lbnRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBl
cnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29k
ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmpl
Y3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIEFTU0VSVCht
b2R1bGVQcm9ncmFtTm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDggKzcyLDExIEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4
ZWNTdGF0ZSogZXgKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJl
dHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
Y2FsbGVySXNTdHJpY3QoZXhlYykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBo
YXMgb25seSBhIGdldHRlciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2V0dGluZyBhIHByb3BlcnR5
IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY0LDE1ICszNjQsMTggQEAgc3RhdGljIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChp
bnQzMl90IAogLy8gdG8gYXJndW1lbnQtcGx1cy1vbmUgc2lnbmlmaWNhbnQgZmlndXJlcykuCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYg
KCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IGRlY2ltYWxQ
bGFjZXNJbkV4cG9uZW50OwogICAgIGJvb2wgaXNVbmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRl
Z2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAsIDIwLCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudCwg
aXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRXhwb25l
bnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8g
SGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpKQpAQCAt
Mzk1LDE1ICszOTgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
bwogLy8gbWV0aG9kIHdpbGwgaW5zdGVhZCBmYWxsYmFjayB0byBjYWxsaW5nIFRvU3RyaW5nLiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRv
VGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICAvLyBHZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgZGVjaW1hbFBsYWNl
czsKICAgICBib29sIGlzVW5kZWZpbmVkOyAvLyBUaGlzIGlzIGlnbm9yZWQ7IHVuZGVmaW5lZCB0
cmVhdGVkIGFzIDAuCiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAs
IDIwLCBkZWNpbWFsUGxhY2VzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQo
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgidG9GaXhlZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CiAK
ICAgICAvLyAxNS43LjQuNS43IHN0YXRlcyAiSWYgeCA+PSAxMF4yMSwgdGhlbiBsZXQgbSA9IFRv
U3RyaW5nKHgpIgogICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgSW5pbml0eSwgYW5kIHN0cnVjdHVy
ZSB0aGUgY2hlY2sgc28gdGhhdCBOYU4KQEAgLTQyOCwxNSArNDM0LDE4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIHdpdGggc21hbGxlciB2YWx1ZXMgY29u
dmVydGVkIHRvIGV4cG9uZW50aWFsIHJlcHJlc2VudGF0aW9uLgogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVj
LT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAv
LyBHZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzOwogICAgIGJv
b2wgaXNVbmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMs
IDEsIDIxLCBzaWduaWZpY2FudEZpZ3VyZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
dG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgidG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MSBhbmQgMjEiKSkpOwogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3Vt
ZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5kZWZpbmVkKQpAQCAtNDg1
LDIyICs0OTQsMjMgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBpbnRlZ2VyVmFsdQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsK
ICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJh
Y3RSYWRpeEZyb21BcmdzKGV4ZWMpOwogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9TdHJpbmcoKSByYWRpeCBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSkpOwogCiAgICAgaW50MzJfdCBpbnRlZ2Vy
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7CiAgICAgaWYgKGludGVn
ZXJWYWx1ZSA9PSBkb3VibGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGludGVnZXJWYWx1ZVRvU3Ry
aW5nKGV4ZWMsIHJhZGl4LCBpbnRlZ2VyVmFsdWUpOwogCi0gICAgaWYgKHJhZGl4ID09IDEwKSB7
Ci0gICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCB2bS0+bnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkp
OwotICAgIH0KKyAgICBpZiAocmFkaXggPT0gMTApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoJnZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoZG91YmxlVmFsdWUpKSk7
CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRv
U3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpKTsKQEAgLTUxMSwxOSArNTIxLDI1IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJl
cihleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9m
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSB4OwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0b1RoaXNOdW1i
ZXIodGhpc1ZhbHVlLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
V1RGOjptYWtlU3RyaW5nKCJ0aGlzTnVtYmVyVmFsdWUgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAi
LCBqc0Nhc3Q8SlNTdHJpbmcqPihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCB0aGlzVmFsdWUp
KS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBh
dGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhp
c1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih4KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE3LDEzICsyMTcsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSBvYmplY3RWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChvYmplY3RWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgSlNWYWx1ZSBwcm90b1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm90
b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9P
YmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMjMyLDcgKzIz
NSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBpZiAo
IWNoZWNrUHJvdG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gdHJ1ZTsKICAgICBib29sIGRp
ZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90b1ZhbHVl
LCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgQVNTRVJUX1VOVVNFRChkaWRTZXRQcm90b3R5
cGUsIHZtLmV4Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CkBAIC0zNDQsOCArMzQ2LDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb3duRW51bWVyYWIKIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2MpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWluLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNj
cmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4g
b2JqZWN0LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCog
ZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0zOTAsNyArMzk0LDcgQEAgYm9vbCB0b1By
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBpZiAoIWdldC5pc1VuZGVm
aW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlm
IChnZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3Qg
YmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00
MDUsNyArNDA5LDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQog
ICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBD
YWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3Qg
YmUgYSBmdW5jdGlvbi4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00MTcsMTIgKzQyMSwxMiBAQCBib29sIHRvUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYg
KGRlc2MudmFsdWUoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9w
ZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxl
JyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVy
dHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVy
LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTQzMCwxOSArNDM0LDI1IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24g
T2JqZWN0cy4iKSk7Ci0gICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAg
ICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGlm
ICghdG9Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0
b3IpKQorICAgIGF1dG8gc3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
ID09IHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwogICAg
IEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgIE8tPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHRydWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTyk7CisgICAgb2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShvYmopOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCkBA
IC00ODUsOCArNDk1LDExIEBAIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0
YXQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBv
biBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVj
dHMuIikpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmogPSBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSk7CiAgICAgSlNPYmplY3QqIHByb3BzID0gZXhlYy0+YXJndW1lbnQoMSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKCFwcm9wcykKQEAgLTQ5NiwxNiArNTA5LDE5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFw
cm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5
IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3Rv
LmlzT2JqZWN0KCkKICAgICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVj
dChwcm90bykpCiAgICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09iamVjdCwgYXNPYmpl
Y3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0xMjcsNiArMTI3LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzQs
NyArMTM3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAg
IEpTVmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgaWYgKGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFs
aWQgZ2V0dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKIAogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDYsMTMgKzE0OSwxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRD
b25maWd1cmFibGUodHJ1ZSk7CiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cisg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MCw3ICsxNjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgSlNWYWx1ZSBzZXQgPSBleGVjLT5hcmd1bWVudCgx
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxs
RGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImludmFsaWQg
c2V0dGVyIHVzYWdlIikpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE3Miw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvCiAgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CiAKICAgICBib29sIHNo
b3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC0yNjksNiArMjc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3Mu
dW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmlu
ZygpKTsKQEAgLTMwMyw3ICszMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICBTdHJpbmcg
bmV3U3RyaW5nID0gV1RGOjp0cnlNYWtlU3RyaW5nKCJbb2JqZWN0ICIsIFdURk1vdmUodGFnKSwg
Il0iKTsKICAgICAgICAgaWYgKCFuZXdTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBuZXdTdHJpbmcpOwogICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFn
U2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIw
MDUtMjAwOSwgMjAxMy0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MCw2ICs0MCw3IEBAIHNpemVfdCBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihDYWxsRnJhbWUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgaW50MzJfdCBsZW5ndGgxID0gczEtPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3Ro
MSkKQEAgLTQ4LDcgKzQ5LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNT
dGF0ZQogICAgIGlmICghbGVuZ3RoMikKICAgICAgICAgcmV0dXJuIHMxOwogICAgIGlmIChzdW1P
dmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMikpCi0gICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKHZt
LCBzMSwgczIpOwogfQpAQCAtNTYsMTMgKzU3LDE0IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgdTIsIGNvbnN0IFN0cmlu
ZyYgdTMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoMSA9IHUxLmxlbmd0
aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMiA9IHUyLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVu
Z3RoMyA9IHUzLmxlbmd0aCgpOwogICAgIAogICAgIGlmIChsZW5ndGgxIDwgMCB8fCBsZW5ndGgy
IDwgMCB8fCBsZW5ndGgzIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgCiAgICAgaWYgKCFsZW5ndGgxKQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywganNTdHJpbmcodm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7CkBAIC03Miw3ICs3NCw3IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MikpOwogCiAg
ICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBsZW5ndGgyLCBsZW5ndGgzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNS
b3BlU3RyaW5nOjpjcmVhdGUoZXhlYy0+dm0oKSwganNTdHJpbmcodm0sIHUxKSwganNTdHJpbmco
dm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7CiB9CkBAIC04MCwxMiArODIsMTMgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZQogQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3Ry
aW5ncywgdW5zaWduZWQgY291bnQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKICAgICBKU1JvcGVTdHJpbmc6
OlJvcGVCdWlsZGVyIHJvcGVCdWlsZGVyKCp2bSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBzdHJpbmdzWy1zdGF0aWNf
Y2FzdDxpbnQ+KGkpXS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmICghcm9wZUJ1aWxkZXIuYXBwZW5k
KHYudG9TdHJpbmcoZXhlYykpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgIH0KIAogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CkBA
IC05NCwxMyArOTcsMTQgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lz
dAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbUFyZ3VtZW50cyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNSb3BlU3Ry
aW5nOjpSb3BlQnVpbGRlciByb3BlQnVpbGRlcigqdm0pOwogICAgIHJvcGVCdWlsZGVyLmFwcGVu
ZCh0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IGV4
ZWMtPmFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3Ry
aW5nKGV4ZWMpKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICB9CiAKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw5IEBAIFByb3h5Q29u
c3RydWN0b3I6OlByb3h5Q29uc3RydWN0b3IoVk0mIHYKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVk
IHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUg
dGFyZ2V0IGFuZCB0aGUgaGFuZGxlciIpKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwpAQCAtODEsNyArODIsOCBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5LnJldm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxl
ZCIpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
KyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQ
cm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxs
ZWQiKSk7CiB9CiAKIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtOTQs
OCArOTYsOSBAQCB2b2lkIFByb3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNCiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKICAgICBpZiAoZXhlYy0+bmV3VGFyZ2V0KCkuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFy
Z2V0IG9mIFByb3h5IGNvbnN0cnVjdCBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgibmV3
LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CiAK
ICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDAp
OwpAQCAtMTExLDcgKzExNCw4IEBAIENvbnN0cnVjdFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3QKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb3h5IikpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5IikpOwogfQogCiBDYWxsVHlwZSBQcm94
eUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpAQCAtNzksMTkgKzgwLDIwIEBAIFN0cnVj
dHVyZSogUHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmcKIAogdm9pZCBQcm94eU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGFyZ2V0LCBK
U1ZhbHVlIGhhbmRsZXIpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQSBQ
cm94eSdzICd0YXJnZXQnIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91
bGQgYmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChQcm94
eU9iamVjdCogdGFyZ2V0QXNQcm94eSA9IGpzRHluYW1pY0Nhc3Q8UHJveHlPYmplY3QqPih0YXJn
ZXQpKSB7CiAgICAgICAgIGlmICh0YXJnZXRBc1Byb3h5LT5oYW5kbGVyKCkuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94
eSdzIGhhbmRsZXIgaXMgYW5vdGhlciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91
bGQgbm90IGhhdmUgYmVlbiByZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94eSdzIGhhbmRsZXIgaXMgYW5vdGhl
ciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91bGQgbm90IGhhdmUgYmVlbiByZXZv
a2VkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgh
aGFuZGxlci5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4gT2JqZWN0IikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBIFByb3h5J3Mg
J2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTExNiw4ICsxMTgsOSBAQCBzdGF0aWMgY29uc3QgY2hhciogc19wcm94eUFscmVhZHlS
ZXZva2VkCiBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm94eU9iamVjdCogcHJveHlPYmplY3QsIEpTVmFsdWUgcmVjZWl2ZXIsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVU
b1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMzUsNyArMTM4LDcgQEAgc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSBwcm94eU9iamVjdC0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVy
cm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtMTU5LDEwICsxNjIs
MTAgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogICAgIGlmICh0
YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAh
ZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHRyYXBS
ZXN1bHQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJh
YmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFz
IHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQn
IHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBz
aG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3BlcnR5IikpOwogICAg
ICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLmdldHRlcigpLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHBy
b3BlcnR5IHdpdGhvdXQgYSBnZXR0ZXIgc2hvdWxkIGJlIHVuZGVmaW5lZCIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNz
b3IgcHJvcGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIikpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xODUsOCArMTg4LDkgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUdldChFeGVjU3RhdGUqIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0
aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNPYmplY3QqIHRhcmdldCA9
IHRoaXMtPnRhcmdldCgpOwpAQCAtMjAwLDcgKzIwNCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1JbnRlcm5hbE1ldGhvZEcKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+
aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicmVzdWx0IG9mICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBhbiBPYmplY3Qg
b3IgdW5kZWZpbmVkIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBjYWxsIHNo
b3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMjM0LDcgKzIzOCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5RGVzY3Jp
cHRvckRlZmluZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghdGFy
Z2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29u
ZmlndXJhYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJXaGVuIHRoZSByZXN1bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgaXMgdW5kZWZpbmVkIHRoZSB0YXJnZXQgbXVzdCBiZSBjb25maWd1cmFibGUiKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IHRoaXMg
ZG9lc24ndCB3b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJveHkuIFdlIGRvbid0IGhhdmUg
aXNFeHRlbnNpYmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgZml0cyB3LyBQcm94eXMuCkBA
IC0yNDYsNyArMjUwLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9k
RwogICAgICAgICAgICAgLy8gRklYTUU6IENvbWUgdXAgd2l0aCBhIHRlc3QgZm9yIHRoaXMgZXJy
b3IuIEknbSBub3Qgc3VyZSBob3cgdG8gYmVjYXVzZQogICAgICAgICAgICAgLy8gT2JqZWN0LnNl
YWwobykgd2lsbCBtYWtlIGFsbCBmaWVsZHMgW1tDb25maWd1cmFibGVdXSBmYWxzZS4KICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzNzYK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXaGVuICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgJ3RhcmdldCcg
b2YgYSBQcm94eSBzaG91bGQgYmUgZXh0ZW5zaWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hv
dWxkIGJlIGV4dGVuc2libGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtMjY0LDEzICsyNjgsMTMgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kRwogICAgIGJvb2wgdmFsaWQgPSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLAogICAgICAg
ICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmlu
ZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlmICgh
dmFsaWQpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJl
c3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGli
bGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Rl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5
RGVzY3JpcHRvckRlZmluZWQgfHwgdGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZp
Z3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3duIHByb3Bl
cnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFyZ2V0JyIp
KTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNv
bmZpZ3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3duIHBy
b3BlcnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFyZ2V0
JyIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI5
MSw4ICsyOTUsOSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwpAQCAtMzA3LDcgKzMxMiw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKIAogICAgIEpTVmFsdWUgaGFu
ZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzM4LDE0ICszNDMsMTQg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaXNQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKSB7
CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycg
bXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7Cisg
ICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydGllcyIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAg
ICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdo
YXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmpl
Y3Qgd2l0aCBhIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3Qg
cmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmplY3Qgd2l0aCBh
IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM1Niw4ICszNjEsMTAgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiBib29sIFByb3h5T2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFleGVjLT52
bSgpLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBzbG90LmRpc2FibGVDYWNo
aW5nKCk7CkBAIC0zOTQsOCArNDAxLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZh
dWx0UHV0RnVuYwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0UHV0KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC00MDQsNyArNDEyLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChF
eGVjU3RhdGUqIAogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7
CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2Up
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC00MzYsMTEgKzQ0NCwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KEV4ZWNTdGF0ZSogCiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmICFk
ZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghc2FtZVZhbHVlKGV4ZWMs
IGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBh
IG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBz
aG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9u
IHRoZSAndGFyZ2V0JyIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBhIG5vbi1jb25m
aWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBzaG91bGQgZWl0
aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9uIHRoZSAndGFy
Z2V0JyIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vz
c29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgaGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3Ig
cHJvcGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDg2LDE0ICs0OTQsMTUg
QEAgYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0
KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0g
anNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxl
clZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2Vk
RXJyb3JNZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVj
dCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC01MzUsMTQgKzU0
NCwxNSBAQCBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQogICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1
ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJl
YWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nh
c3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAt
NTY5LDcgKzU3OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJv
bSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hv
dWxkIGJlIGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKQEAgLTU5MCw4ICs2MDAsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0
ZUZ1bmN0aW9uCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uIHBlcmZv
cm1EZWZhdWx0RGVsZXRlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MDAsNyArNjExLDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MzEsNyArNjQyLDcgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBkZXNjcmlwdG9yOwogICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmICghZGVzY3JpcHRv
ci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91
bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1
cmFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91bGQg
cmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFi
bGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC02
NjYsMTQgKzY3NywxNSBAQCBib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNl
U29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVy
KCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC03MDIsNyArNzE0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bVByZXZlbnRFeHRlbnNpbwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0
YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5J3MgJ3ByZXZlbnRFeHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2gg
aXRzIHRhcmdldCBpcyBleHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTcxOCwx
NCArNzMwLDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2IKIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAg
aWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlB
bHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC03NTcsMTEgKzc3MCwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRl
bnNpYmxlKEV4CiAgICAgaWYgKHRyYXBSZXN1bHRBc0Jvb2wgIT0gaXNUYXJnZXRFeHRlbnNpYmxl
KSB7CiAgICAgICAgIGlmIChpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgICAgIEFTU0VS
VCghdHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5l
ZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0
dXJuZWQgdHJ1ZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5l
ZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0
dXJuZWQgdHJ1ZSIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNU
YXJnZXRFeHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNCb29sKTsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBv
YmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRh
cmdldCBpcyBub24tZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC03NzYsOCArNzg5LDkgQEAgYm9vbCBQcm94eU9i
amVjdDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KgogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURl
ZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC03OTEsNyArODA1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5k
bGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC04MzYsMTEgKzg1MCwxMSBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtRGVmaW5lT3duUHJvcGVyCiAKICAgICBpZiAoIWlzVGFyZ2V0RGVzY3JpcHRvckRlZmlu
ZWQpIHsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0
eScgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1
cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJv
eHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0IGlzIG5vbi1leHRl
bnNpYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGlmIChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSkgewotICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFw
IHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVuIHRob3VnaCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVu
ZGVmaW5lZCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBm
b3IgYSBub24tY29uZmlndXJhYmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIikpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTg1MywxMSArODY3LDExIEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKICAgICBib29sIHRocm93
RXhjZXB0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBpc0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5h
bWUsIHRhcmdldElzRXh0ZW5zaWJsZSwgZGVzY3JpcHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3Vy
cmVudCwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlmICghaXNDb21wYXRpYmxlRGVzY3JpcHRvcikg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAn
ZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFy
Z2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIp
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQ
cm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHRyYXAncyBpbnB1dCBkZXNj
cmlwdG9yIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChzZXR0aW5n
Q29uZmlndXJhYmxlVG9GYWxzZSAmJiB0YXJnZXREZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdk
ZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydHkgb24gaXRzIHRhcmdldCBldmVuIHRob3VnaCB0aGUgaW5wdXQgZGVzY3JpcHRvciB0byB0
aGUgdHJhcCBzYWlkIGl0IG11c3QgZG8gc28iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAg
ZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJnZXQg
ZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBtdXN0
IGRvIHNvIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtODczLDEz
ICs4ODcsMTQgQEAgYm9vbCBQcm94eU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYgogdm9p
ZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgdHJhcFJlc3VsdCwgRW51bWVyYXRpb25Nb2RlIGVudW1lcmF0
aW9uTW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsK
ICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTk2OSw3ICs5ODQsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJv
cGVydHlOCiAKICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Tm9uQ29u
ZmlndXJhYmxlS2V5cykgewogICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tl
ZFJlc3VsdEtleXMoaW1wbCkgPT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyAndGFyZ2V0JyBo
YXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwgIicgdGhh
dCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7CisgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJQcm94eSBv
YmplY3QncyAndGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0
cmluZyhpbXBsKSwgIicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktl
eXMnIHRyYXAiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC05
NzksMTMgKzk5NCwxMyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlO
CiAKICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Q29uZmlndXJhYmxl
S2V5cykgewogICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tlZFJlc3VsdEtl
eXMoaW1wbCkgPT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyBub24tZXh0ZW5zaWJsZSAndGFy
Z2V0JyBoYXMgY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQg
d2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiUHJveHkgb2Jq
ZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSAn
IiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9tIHRoZSAn
b3duS2V5cycgdHJhcCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBt
ZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1leHRl
bnNpYmxlIHRhcmdldCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCByZXR1cm5lZCBh
IGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgbm9uLWV4dGVuc2libGUgdGFyZ2V0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTAyMiwxNCArMTAzNywxNSBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgQVNTRVJUKHByb3RvdHlw
ZS5pc09iamVjdCgpIHx8IHByb3RvdHlwZS5pc051bGwoKSk7CiAKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFs
dWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA1Nyw3ICsx
MDczLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIAog
ICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNh
bnRTZXQpCi0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxk
IG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQg
dG8gc3VjY2VlZCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRp
Y2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlv
biB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTA3MSw3ICsxMDg3LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFBy
b3RvdHlwZShFeAogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3Nl
dFByb3RvdHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1l
eHRlbnNpYmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMg
dGhlIGN1cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxz
ZSIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIGl0cyB0YXJn
ZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDg2
LDE0ICsxMTAyLDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCoK
IEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICB9CiAKQEAgLTExMTUsNyArMTEzMiw3IEBAIEpTVmFsdWUgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKIAogICAg
IGlmICghdHJhcFJlc3VsdC5pc09iamVjdCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVy
J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBv
ciBudWxsIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhl
ciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgfQogCkBAIC0xMTI5LDcgKzExNDYsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0UHJvdG90eXBlCiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHRhcmdldFByb3RvdHlwZSwgdHJh
cFJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRhcmdl
dCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5cGUi
KSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVuc2libGUgdGFyZ2V0
IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3RvdHlwZSIp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUsMjYgKzk1LDI5IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHYKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2Vj
LXJlZmxlY3QuY29uc3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3Ry
dWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKIAog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGU7CiAgICAgaWYgKCF0YXJnZXQuaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3Rv
ciIpKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMik7CiAgICAgICAgIGlmICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBj
b25zdHJ1Y3RvciBpZiBwcmVzZW50IikpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5j
b25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYg
cHJlc2VudCIpKSk7CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwogICAgIEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+YXJndW1lbnQoMSkpOwogICAgIGlmICghYXJndW1lbnRzT2JqZWN0KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAgIGNyZWF0ZUxpc3RGcm9t
QXJyYXlMaWtlKGV4ZWMsIGFyZ3VtZW50c09iamVjdCwgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMs
IEFTQ0lJTGl0ZXJhbCgiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiKSwgWyZdIChKU1Zh
bHVlIHZhbHVlLCBSdW50aW1lVHlwZSkgLT4gYm9vbCB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQodmFsdWUpOwpAQCAtMTI5LDkgKzEzMiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LmRlZmluZXByb3BlcnR5CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxl
Y3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCIpKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NSwyNSArMTUxLDMxIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBSZWZsZWN0
LmRlZmluZVByb3BlcnR5IHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGUgZGVmaW5l
T3duUHJvcGVydHkgb3BlcmF0aW9uIGZhaWxzLgogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSBmYWxz
ZTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93
blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdykpKTsKIH0KIAogLy8gRklYTUU6IFJlZmxlY3QuZW51bWVyYXRlIGlzIHJlbW92
ZWQgaW4gRUNNQSAyMDE2IGRyYWZ0LgogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlZmxlY3QuZW51bWVyYXRlCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RFbnVtZXJhdGUoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5lbnVtZXJhdGUgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVmbGVjdC5lbnVtZXJhdGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZSgpLCBhc09iamVjdCh0YXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVj
dC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJv
cGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTgwLDkg
KzE5MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldG93bnByb3BlcnR5
ZGVzY3JpcHRvcgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgYXV0byBrZXkgPSBleGVjLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE5NCwxOCArMjA5LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamUKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0
cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdl
dFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXRQcm90
b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yo
ZXhlYywgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBh
biBvYmplY3QiKSkpOwogCiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSBhc09iamVjdCh0YXJnZXQp
LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MjE2LDIwICsyMzcsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5vd25rZXlz
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxl
Y3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvd25Qcm9w
ZXJ0eUtleXMoZXhlYywganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9k
ZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2
ZW50ZXh0ZW5zaW9ucwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIGJv
b2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHJldmVudEV4dGVu
c2lvbnMob2JqZWN0LCBleGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwpAQCAtMjM4
LDkgKzI2NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0IHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkp
OwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OwpAQCAtMjU0LDI1ICsyODQsMjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZQogICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFw
cGVuIGluIHN0cmljdCBtb2RlLgogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxz
ZTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXRP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJv
dG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUg
dGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXRQcm90b3R5
cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBK
U1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm90by5pc09iamVj
dCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2Yg
cmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiKSkpOwogCiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKICAgICBpZiAoIWNoZWNrUHJv
dG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZTsKICAgICBib29sIGRpZFNl
dFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90bywgc2hvdWxk
VGhyb3dJZkNhbnRTZXQpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw5IEBAIGlubGluZSBT
dHJ1Y3R1cmUqIGdldFJlZ0V4cFN0cnVjdHVyZShFeGUKIAogaW5saW5lIFJlZ0V4cEZsYWdzIHRv
RmxhZ3MoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZsYWdzKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKGZsYWdzLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBOb0ZsYWdzOwogICAg
IEpTU3RyaW5nKiBmbGFnc1N0cmluZyA9IGZsYWdzLnRvU3RyaW5nKGV4ZWMpOwpAQCAtMjIyLDEz
ICsyMjUsMTUgQEAgaW5saW5lIFJlZ0V4cEZsYWdzIHRvRmxhZ3MoRXhlY1N0YXRlKiBleAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRGbGFnczsK
ICAgICBpZiAocmVzdWx0ID09IEludmFsaWRGbGFncykKLSAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNv
bnN0cnVjdG9yLiIpKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG5ld1RhcmdldCwgSlNWYWx1ZSBwYXR0ZXJuQXJnLCBKU1ZhbHVlIGZsYWdzQXJnKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIHBhdHRlcm4gPSBwYXR0ZXJuQXJnLmlzVW5kZWZpbmVkKCkg
PyBlbXB0eVN0cmluZygpIDogcGF0dGVybkFyZy50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIzOSw3ICsyNDQsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHJlZ0V4cENyZWF0ZShFeGVjU3Rh
dGUqCiAKICAgICBSZWdFeHAqIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBm
bGFncyk7CiAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JN
ZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldFJlZ0V4cFN0cnVjdHVyZShleGVjLCBnbG9iYWxPYmpl
Y3QsIG5ld1RhcmdldCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDggQEAgTWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0
OjptYXRjaChFeGVjU3RhdAogdGVtcGxhdGU8dHlwZW5hbWUgRml4RW5kRnVuYz4KIEpTVmFsdWUg
Y29sbGVjdE1hdGNoZXMoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcs
IGNvbnN0IFN0cmluZyYgcywgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yLCBSZWdFeHAq
IHJlZ0V4cCwgY29uc3QgRml4RW5kRnVuYyYgZml4RW5kKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IGNvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCAwKTsKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtMTk3LDcgKzE5OSw3IEBAIEpT
VmFsdWUgY29sbGVjdE1hdGNoZXMoVk0mIHZtLCBFeGVjU3RhdGUKICAgICAgICAgICAgIE1hdGNo
UmVzdWx0IHNhdmVkUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICAgICAgZG8gewogICAgICAgICAg
ICAgICAgIGlmIChhcnJheS0+bGVuZ3RoKCkgKyBtYXRjaENvdW50ID49IE1BWF9TVE9SQUdFX1ZF
Q1RPUl9MRU5HVEgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVnRXhw
LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKQEAg
LTQzLDIyICs0NCwyOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldExhc3RJbmRleChFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5kZXgpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAg
ICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYm9vbCBzZXRM
YXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRU
aHJvdykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBpZiAoTElLRUxZKG1f
bGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4LnNldChleGVj
LT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNWYWx1
ZSBnZXRMYXN0SW5kZXgoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw5ICs5OCwxMiBAQCB2b2lkIFJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJl
bihKU0NlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVz
dEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhS
ZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMp
OwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTA5LDkgKzExMiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
Z09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyMCw5ICsxMjYsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzMsOSArMTQyLDEyIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgUmVnRXhwKiByZWdFeHA7CiAgICAgSlNW
YWx1ZSBhcmcwID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC0xNDMsNyArMTU1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgIAogICAgIGlmIChhcmcwLmlu
aGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhw
IGZyb20gYW5vdGhlci4iKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3Ry
dWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKTsKICAgICAgICAgcmVnRXhwID0gYXNS
ZWdFeHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmlu
ZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKQEAgLTE1NiwxNSArMTY4LDE1IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+dm0oKSwgcGF0dGVybiwgZmxhZ3Mp
OworICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwog
ICAgIH0KIAogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3Nh
Z2UoKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAKLSAgICBhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5zZXRSZWdFeHAoZXhlYy0+dm0oKSwgcmVnRXhwKTsKKyAgICBh
c1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5zZXRSZWdFeHAodm0sIHJlZ0V4cCk7CiAgICAgYXNS
ZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIH0KQEAgLTIxMiw5ICsyMjQsMTIgQEAgc3Rh
dGljIGlubGluZSBGbGFnc1N0cmluZyBmbGFnc1N0cmluZyhFeAogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsK
IApAQCAtMjIyLDcgKzIzNyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5W
YWx1ZSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgc291cmNlVmFs
dWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0yNDIsMTEgKzI1NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlw
ZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+Z2xvYmFs
KCkpKTsKQEAgLTI1NCwxMSArMjcxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlcklnbm9yZUNhc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0
aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5p
Z25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5p
Z25vcmVDYXNlKCkpKTsKQEAgLTI2NiwxMSArMjg2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwogICAgIH0KIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5tdWx0aWxpbmUoKSkpOwpAQCAtMjc4LDExICszMDEsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuc3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5zdGlja3koKSkpOwpAQCAtMjkwLDExICszMTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT51bmljb2RlKCkpKTsKQEAgLTMwMiw5ICszMzEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiKSk7CiAKICAg
ICBhdXRvIGZsYWdzID0gZmxhZ3NTdHJpbmcoZXhlYywgYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNDIxLDExICs0NTMsMTQgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyUwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkp
KSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5m
bygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
QVNDSUlMaXRlcmFsKCIoPzopIikpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLnNvdXJjZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCIpKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnJlZ0V4cCgpLT5wYXR0ZXJuKCk7CkBAIC01MzksNiArNTc0LDcgQEAgdm9pZCBnZW5l
cmljU3BsaXQoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Nw
bGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBbaGFu
ZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgLy8gMi4g
W2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgpAQCAtNjQ0LDcgKzY4MCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgfSk7CiAgICAgCiAgICAgaWYgKHJl
c3VsdExlbmd0aCArIGRyeVJ1bkNvdW50ID49IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlamVjdC5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOCArMzMsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGlubGluZSBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhy
b3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIG1lc3NhZ2UpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MSArNTEsMTYgQEAgdm9pZCBTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlNldCIpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXQiKSk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRl
cm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0
dXJlKiBzZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUo
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzIsNyArNzcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgQ2FsbERhdGEgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYg
KGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGZvckVh
Y2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTAgKzUwLDEzIEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1
bmNOZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHJlc3VsdDsKICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nh
c3Q8SlNTZXRJdGVyYXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRl
cmF0b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBh
IG5vbi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNhbGwgU2V0SXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLVNldEl0ZXJhdG9yIG9iamVjdCIpKSk7
CiAKICAgICBpZiAoaXRlcmF0b3ItPm5leHQoY2FsbEZyYW1lLCByZXN1bHQpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KGNhbGxGcmFt
ZSwgcmVzdWx0LCBmYWxzZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MyArODQsMTYgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bQogCiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVO
b3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKSk7CisgICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwg
dGhpc1ZhbHVlKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU1NldCog
c2V0ID0ganNEeW5hbWljQ2FzdDxKU1NldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFzZXQpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVy
YXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1TZXQgb2JqZWN0IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
cmV0dXJuIHNldDsKQEAgLTE0MSwxOCArMTQ0LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW4KICAgICAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0
UHJvdG9GdW5jVmFsdWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU1NldCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUt
PnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0
cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU2V0KiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU1Nl
dCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIFNldCBlbnRyeSBpdGVyYXRvciBmb3IgYSBub24tU2V0IG9i
amVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXRJdGVyYXRvcjo6Y3Jl
YXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIFNldCBlbnRyeSBpdGVyYXRvciBmb3Ig
YSBub24tU2V0IG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXRJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc1NldChFeGVjU3RhdGUq
IGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEy
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtOTAsNiArOTAsOCBAQCBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRS
ZXN1bHQgU3BhcnNlQXJyCiAKIGJvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAg
ICAKICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKQEAgLTEwMSw3ICsxMDMs
NyBAQCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTCiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAg
ICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKQEAgLTE0OCwxNCArMTUwLDE3IEBAIHZvaWQgU3BhcnNlQXJyYXlF
bnRyeTo6Z2V0KFByb3BlcnR5RGVzY3IKIAogYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFw
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSkgewogICAgICAgICBpZiAoYXR0cmlidXRlcyAm
IFJlYWRPbmx5KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHNldChleGVjLT52bSgpLCBtYXAsIHZhbHVlKTsKKyAg
ICAgICAgc2V0KHZtLCBtYXAsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC05MCw2ICs5MCw5IEBAIEpTQ2VsbCogSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9t
Q2hhckNvZGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CkBAIC0xMDIsNyArMTA1
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogICAgICAgICB1
aW50MzJfdCBjb2RlUG9pbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29kZVBvaW50QXNEb3Vi
bGUpOwogCiAgICAgICAgIGlmIChjb2RlUG9pbnQgIT0gY29kZVBvaW50QXNEb3VibGUgfHwgY29k
ZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJndW1lbnRzIGNv
bnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyIpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlz
IG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyIpKSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1Q
KGNvZGVQb2ludCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hh
cj4oY29kZVBvaW50KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC02Myw2ICs2Myw5IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUkKIAogYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZ
KGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC03MCw3ICs3Myw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQpAQCAtODAsMTAgKzgzLDEzIEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogYm9vbCBTdHJpbmdP
YmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODksNiArMjg5LDkgQEAgc3RydWN0IFN0cmluZ1JhbmdlIHsKIAogc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBleGVj
LCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
UmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAocmFuZ2VDb3VudCA9PSAxKSB7CiAgICAgICAgIGludCBzb3VyY2VTaXplID0gc291
cmNlLmxlbmd0aCgpOwogICAgICAgICBpbnQgcG9zaXRpb24gPSBzdWJzdHJpbmdSYW5nZXNbMF0u
cG9zaXRpb247CkBAIC0zMTEsNyArMzE0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1NwbGljZVN1YgogICAgICAgICBjb25zdCBMQ2hhciogc291cmNlRGF0YSA9IHNvdXJjZS5j
aGFyYWN0ZXJzOCgpOwogICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOwogICAgICAgICBpZiAoIWltcGwpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAgICAg
aW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3Vu
dDsgaSsrKSB7CkBAIC0zMjksNyArMzMyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1NwbGljZVN1YgogCiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50IGJ1ZmZlclBvcyA9IDA7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsKQEAgLTM0NCw2ICsz
NDcsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAKIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMo
RXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNv
bnN0IFN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKHJhbmdlQ291bnQgPT0gMSAmJiBzZXBhcmF0b3JDb3VudCA9PSAwKSB7CiAg
ICAgICAgIGludCBzb3VyY2VTaXplID0gc291cmNlLmxlbmd0aCgpOwogICAgICAgICBpbnQgcG9z
aXRpb24gPSBzdWJzdHJpbmdSYW5nZXNbMF0ucG9zaXRpb247CkBAIC0zNjQsNyArMzcwLDcgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgICAgICAgICAgYWxs
U2VwYXJhdG9yczhCaXQgPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKHRvdGFsTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAg
ICBpZiAoIXRvdGFsTGVuZ3RoKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsK
QEAgLTM3NSw3ICszODEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3ViCiAKICAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh0b3RhbExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICAgICAgaWYgKCFpbXBs
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
ICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRvckNvdW50KTsK
ICAgICAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CkBAIC00MDAsNyArNDA2LDcgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgIFVDaGFyKiBidWZmZXI7CiAgICAg
YXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0
aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50IG1heENvdW50ID0gc3RkOjptYXgocmFu
Z2VDb3VudCwgc2VwYXJhdG9yQ291bnQpOwogICAgIGludCBidWZmZXJQb3MgPSAwOwpAQCAtNzUy
LDEwICs3NTgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNrT2JqZWN0Q29lcmNpYmxlKAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIEpTU3RyaW5n
KiByZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlJiBleGVjLCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
ciwgdW5zaWduZWQgcmVwZWF0Q291bnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENoYXJhY3RlclR5
cGUqIGJ1ZmZlciA9IG51bGxwdHI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChyZXBlYXRDb3VudCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZleGVjKTsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKCZleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtNzk3LDggKzgwNiwxMCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJl
cGxhY2UoCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2UoCiAgICAgVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHNlYXJjaFZhbHVl
LCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC04NDEsNiAr
ODUyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgLy8gQWxzbyB1c2VkIGZvciB2YWx1ZU9mLgogCkBAIC04NTAsMTQg
Kzg2NCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAg
aWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhTdHJpbmdPYmplY3Q6OmluZm8oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmdPYmplY3QodGhpc1ZhbHVlKS0+aW50ZXJuYWxW
YWx1ZSgpKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmc6OlNhZmVWaWV3IHN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKQEAgLTg3NCw5ICs4OTEsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmc6OlNhZmVWaWV3IHN0cmluZyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKQEAgLTkwMyw5ICs5MjMsMTIg
QEAgc3RhdGljIGlubGluZSBVQ2hhcjMyIGNvZGVQb2ludEF0KGNvbnN0IAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1
ZS50b1dURlN0cmluZyhleGVjKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CkBAIC05MjksMjAgKzk1MiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Q29uY2F0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N0cmluZygp
ICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHRoaXNWYWx1ZSksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSk7CiAKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZ0Zyb21Bcmd1bWVudHMoZXhlYywgdGhpc1ZhbHVl
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQo
MSk7CkBAIC05NzcsOSArMTAwNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
TGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBK
U1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwpAQCAtMTAxNCw5ICsxMDQ2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTIwMSw5ICsxMjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgdW5zaWduZWQgbGVuOwogICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IDA7CiAgICAgU3RyaW5n
IHVTdHJpbmc7CkBAIC0xMjU3LDkgKzEyOTUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBidWlsdGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMjk3LDkgKzEzMzgsMTIgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmlu
ZyBsb3dlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7
CkBAIC0xMzEwLDkgKzEzNTQsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Rv
VXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJj
aWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3Ry
aW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYg
cyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmluZyB1cHBlcmNhc2VkU3RyaW5nID0gcy5j
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7CkBAIC0xMzIzLDkgKzEzNzAsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEzNDAsMTAg
KzEzOTAsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogI2lm
IEVOQUJMRShJTlRMKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3Rh
dGUqIHN0YXRlLCBpbnQzMl90ICgqY29udmVydENhc2UpKFVDaGFyKiwgaW50MzJfdCwgY29uc3Qg
VUNoYXIqLCBpbnQzMl90LCBjb25zdCBjaGFyKiwgVUVycm9yQ29kZSopKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIDEuIExldCBPIGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1
ZSkuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCBzY29wZSk7CiAKICAgICAvLyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICBKU1N0cmlu
Zyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhzdGF0ZSk7CkBAIC0xNDExLDEwICsxNDY0LDEw
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1MKICAgICAgICAgVmVj
dG9yPFVDaGFyPiBidWZmZXIocmVzdWx0TGVuZ3RoKTsKICAgICAgICAgY29udmVydENhc2UoYnVm
ZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2
aWV3TGVuZ3RoLCB1dGY4TG9jYWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKICAgICAgICAgaWYg
KFVfRkFJTFVSRShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKICAgICAgICAgbG93ZXIg
PSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgdV9lcnJvck5hbWUo
ZXJyb3IpKTsKIAogICAgIC8vIDE4LiBSZXR1cm4gTC4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHN0YXRlLCBsb3dlcikpOwpAQCAtMTQzOCw5ICsxNDkxLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCaWcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NDksOSArMTUwNSwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU21hbGwoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NjAsOSArMTUxOSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NzEsOSArMTUzMywxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ4Miw5ICsxNTQ3LDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGaXhlZChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5Myw5ICsxNTYx
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTA0LDkg
KzE1NzUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0cmlrZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUx
NSw5ICsxNTg5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWIoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1
MjYsOSArMTYwMywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3VwKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NTM3LDkgKzE2MTcsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xv
cihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMTU1Myw5ICsxNjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNG
b250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMTYwNSw5ICsxNjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTE2MjEsOSArMTcxMCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTY2Nyw4ICsxNzU5LDExIEBAIGVudW0gewogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUgdHJpbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBpbnQgdHJpbUtpbmQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcg
c3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTcy
MCwyMSArMTgxNSwyMyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1bmNhdGVU
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0
aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIFN0cmluZyBzdHJp
bmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24g
PSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJF
eHByZXNzaW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTc1NiwyMSArMTg1MywyMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAg
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEw
KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUu
ZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQpAQCAtMTgwOCwyMSArMTkwNywyMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
SW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBTdHJp
bmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHBy
ZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhw
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAog
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTg1NSw0MiArMTk1Niw1MSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ0l0ZXJh
dG9yU3RydWN0dXJlKCksIHN0cmluZykpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBub3JtYWxpemUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVQ2hhciogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3Ro
LCBVTm9ybWFsaXphdGlvbk1vZGUgZm9ybSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGludDMyX3Qgbm9ybWFsaXplZFN0cmluZ0xl
bmd0aCA9IHVub3JtX25vcm1hbGl6ZShzb3VyY2UsIHNvdXJjZUxlbmd0aCwgZm9ybSwgMCwgbnVs
bHB0ciwgMCwgJnN0YXR1cyk7CiAKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykgJiYgc3RhdHVz
ICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CiAgICAgICAgIC8vIFRoZSBiZWhhdmlvciBp
cyBub3Qgc3BlY2lmaWVkIHdoZW4gbm9ybWFsaXplIGZhaWxzLgogICAgICAgICAvLyBOb3cgd2Ug
dGhyb3cgYSB0eXBlIGVyb3JyIHNpbmNlIGl0IHNlZW1zIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBzdHJpbmcgYXJlIGludmFsaWQuCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAK
ICAgICBVQ2hhciogYnVmZmVyID0gbnVsbHB0cjsKICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICB1bm9ybV9ub3JtYWxpemUoc291cmNl
LCBzb3VyY2VMZW5ndGgsIGZvcm0sIDAsIGJ1ZmZlciwgbm9ybWFsaXplZFN0cmluZ0xlbmd0aCwg
JnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nOjpTYWZlVmll
dyBzb3VyY2UgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTkxMSw3ICsyMDIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICBlbHNlIGlmIChmb3JtU3RyaW5nID09ICJORktE
IikKICAgICAgICAgICAgIGZvcm0gPSBVTk9STV9ORktEOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlvbiBmb3Jt
IikpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBh
bnkgbm9ybWFsaXphdGlvbiBmb3JtIikpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCBzb3VyY2UuZ2V0KCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCksIHNvdXJjZS5sZW5ndGgoKSwgZm9ybSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlz
aW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxMS0yMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDcgKzI4LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092ZXJm
bG93RXJyb3IoKQogewotICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1f
ZXhlYyk7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihtX2V4ZWMsIHNjb3BlKTsKIH0KIAogSlNWYWx1ZSBTdHJpbmdSZWN1cnNpb25DaGVja2Vy
OjplbXB0eVN0cmluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtODcsNyArODcsOSBAQCBKU09iamVjdCogU3ltYm9sOjp0
b09iamVjdChFeGVjU3RhdGUqIGV4CiAKIGRvdWJsZSBTeW1ib2w6OnRvTnVtYmVyKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgbnVtYmVyIikpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0
IGEgc3ltYm9sIHRvIGEgbnVtYmVyIikpOwogICAgIHJldHVybiAwLjA7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTEwLDE2ICsxMTAsMTkgQEAgY29uc3QgY2hhciog
U3ltYm9sS2V5Rm9yVHlwZUVycm9yID0gIlN5bQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXN5bWJvbFZhbHVlLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgU3ltYm9sS2V5Rm9yVHlwZUVycm9yKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJv
bEtleUZvclR5cGVFcnJvcikpOwogCiAgICAgU3ltYm9sSW1wbCogdWlkID0gYXNTeW1ib2woc3lt
Ym9sVmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpOwogICAgIGlmICghdWlkLT5zeW1ib2xSZWdp
c3RyeSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmZXhlYy0+dm0oKS5zeW1ib2xS
ZWdpc3RyeSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGV4
ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS5rZXlGb3JTeW1ib2woKnVpZCkpKTsKKyAgICBBU1NF
UlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHZtLnN5bWJvbFJlZ2lzdHJ5KCku
a2V5Rm9yU3ltYm9sKCp1aWQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC03MiwxNiArNzIsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFN5
bWJvbFZhbHVlT2ZUeXBlRXJybwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgU3ltYm9sKiBzeW1i
b2wgPSBudWxscHRyOwogICAgIGlmICh0aGlzVmFsdWUuaXNTeW1ib2woKSkKICAgICAgICAgc3lt
Ym9sID0gYXNTeW1ib2wodGhpc1ZhbHVlKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7CiAgICAgICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKICAgICAgICAgaWYg
KCF0aGlzT2JqZWN0LT5pbmhlcml0cyhTeW1ib2xPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9s
VG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbChqc0Nhc3Q8U3lt
Ym9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiAgICAgfQogCkBAIC05
MCwxNiArOTMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzU3ltYm9sKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFN5bWJv
bFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pbmhlcml0
cyhTeW1ib2xPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rocm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzk0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKworI2luY2x1ZGUgIlZNLmgiCisKK25h
bWVzcGFjZSBKU0MgeworICAgIAorI2lmIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04p
CisKK25hbWVzcGFjZSB7CisKKy8vIExvZ3MgYWxsIFRocm93U2NvcGUgYWN0aXZpdHkgdG8gaGVs
cCBkZWJ1ZyB0aGUgc291cmNlIG9mIGEgdmVyaWZpY2F0aW9uIGZhaWx1cmUuCitib29sIHRyYWNl
T24gPSBmYWxzZTsKKworLy8gQSBtb3JlIHZlcmJvc2UgbG9nZ2luZyBvcHRpb24gdG8gZHVtcCB0
aGUgQysrIHN0YWNrIHRyYWNlIGF0IHN0cmF0ZWdpYyBwb2ludHMgdG8gYWlkIGRlYnVnZ2luZy4K
K2Jvb2wgdHJhY2VXaXRoU3RhY2tUcmFjZXMgPSBmYWxzZTsKKworLy8gRGlzYWJsZWQgdGVtcG9y
YXJpbHkgdW50aWwgYWxsIGtub3duIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBhcmUgZml4ZWQuCiti
b29sIHZlcmlmaWNhdGlvbk9uID0gZmFsc2U7CisKK3Vuc2lnbmVkIHRyYWNlQ291bnQgPSAwOwor
fTsKKworLyoKKyAgICBUaHJvd1Njb3BlIHZlcmlmaWNhdGlvbiB3b3JrcyB0byBzaW11bGF0ZSBl
eGNlcHRpb24gdGhyb3dzIGFuZCBjYXRjaCBjYXNlcyB3aGVyZQorICAgIGV4Y2VwdGlvbiBjaGVj
a3MgYXJlIG1pc3NpbmcuIFRoaXMgaXMgaG93IGl0IHdvcmtzOgorCisgMS4gVGhlIFZNIGhhcyBh
IG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCB0aGF0IGluZGljYXRlcyB3aGVyZSBhbiBleGNlcHRp
b24gY2hlY2sgaXMKKyAgICBuZWVkZWQuIFlvdSBjYW4gdGhpbmsgb2YgdGhlIG1fbmVlZEV4Y2Vw
dGlvbkNoZWNrIGJpdCBiZWluZyBzZXQgYXMgYSBzaW11bGF0ZWQKKyAgICB0aHJvdy4KKworIDIu
IEV2ZXJ5IHRocm93IHNpdGUgbXVzdCBkZWNsYXJlIGEgVGhyb3dTY29wZSBpbnN0YW5jZSB1c2lu
ZyBERUNMQVJFX1RIUk9XX1NDT1BFIGF0CisgICAgdGhlIHRvcCBvZiBpdHMgZnVuY3Rpb24gKGFz
IGVhcmx5IGFzIHBvc3NpYmxlKSBlLmcuCisgCisgICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIC4uLik7CisgICAgICAgIH0K
KworICAgIE5vdGU6IFZNOjp0aHJvd0V4Y2VwdGlvbigpIG1ldGhvZHMgYXJlIHByaXZhdGUsIGFu
ZCBvbmx5IGNhbGxlYWJsZWJ5IHRoZSBUaHJvd1Njb3BlCisgICAgZnJpZW5kIGNsYXNzLiBBbGwg
dGhyb3dzIG11c3QgZ28gdGhyb3VnaCBhIFRocm93U2NvcGUuIEhlbmNlLCB3ZSBhcmUgZ3VhcmFu
dGVlZCB0aGF0CisgICAgYW55IGZ1bmN0aW9uIHRoYXQgY2FuIHRocm93IHdpbGwgaGF2ZSBhIFRo
cm93U2NvcGUuCisKKyAgICBOb3RlOiBieSBjb252ZW50aW9uLCBldmVyeSB0aHJvdyBoZWxwZXIg
ZnVuY3Rpb24gbXVzdCB0YWtlIGEgVGhyb3dTY29wZSBhcmd1bWVudAorICAgIGluc3RlYWQgb2Yg
aW5zdGFudGlhdGluZyBpdHMgb3duIFRocm93U2NvcGUuICBUaGlzIGFsbG93cyB0aGUgdGhyb3cg
dG8gYmUgYXR0cmlidXRlZAorICAgIHRvIHRoZSBjbGllbnQgY29kZSByYXRoZXIgdGhhbiB0aGUg
dGhyb3cgaGVscGVyIGl0c2VsZi4KKworIDMuIFZlcmlmaWNhdGlvbiBvZiBuZWVkZWQgZXhjZXB0
aW9uIGNoZWNrcworCisgICAgYS4gT24gY29uc3RydWN0aW9uLCBlYWNoIFRocm93U2NvcGUgd2ls
bCB2ZXJpZnkgdGhhdCBWTTo6bV9uZWVkRXhjZXB0aW9uQ2hlY2sgaXMKKyAgICAgICBub3Qgc2V0
LgorIAorICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBjYWxsZXIgb2YgdGhlIGN1cnJlbnQg
ZnVuY3Rpb24gaGFzIGNoZWNrZWQgZm9yIGV4Y2VwdGlvbnMKKyAgICAgICB3aGVyZSBuZWVkZWQg
YmVmb3JlIGRvaW5nIG1vcmUgd29yayB3aGljaCBsZWQgdG8gY2FsbGluZyB0aGUgY3VycmVudCBm
dW5jdGlvbi4KKworICAgIGIuIE9uIGRlc3RydWN0aW9uLCBlYWNoIFRocm93U2NvcGUgd2lsbCB2
ZXJpZnkgdGhhdCBWTTo6bV9uZWVkRXhjZXB0aW9uQ2hlY2sgaXMKKyAgICAgICBub3Qgc2V0LiBU
aGlzIHZlcmlmaWNhdGlvbiB3aWxsIGJlIHNraXBwZWQgaWYgdGhlIFRocm93U2NvcGUgaGFzIGJl
ZW4gcmVsZWFzZWQKKyAgICAgICAoc2VlICg1KSBiZWxvdykuCisKKyAgICAgICBUaGlzIGVuc3Vy
ZXMgdGhhdCB0aGUgZnVuY3Rpb24gdGhhdCBvd25zIHRoaXMgVGhyb3dTY29wZSBpcyBub3QgbWlz
c2luZyBhbnkKKyAgICAgICBleGNlcHRpb24gY2hlY2tzIGJlZm9yZSByZXR1cm5pbmcuCisgCisg
ICAgYy4gV2hlbiB0aHJvd2luZyBhbiBleGNlcHRpb24sIHRoZSBUaHJvd1Njb3BlIHdpbGwgdmVy
aWZ5IHRoYXQgVk06Om1fbmVlZEV4Y2VwdGlvbkNoZWNrCisgICAgICAgaXMgbm90IHNldCwgdW5s
ZXNzIGl0J3MgYmVlbiBhc2sgdG8gcmV0aHJvdyB0aGUgc2FtZSBFeGNlcHRpb24gb2JqZWN0Lgor
CisgNC4gU2ltdWxhdGVkIHRocm93cworCisgICAgVGhyb3dzIGFyZSBzaW11bGF0ZWQgYnkgc2V0
dGluZyB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0LgorCisgICAgVGhlIGJpdCB3aWxsIG9u
bHkgYmUgc2V0IGluIHRoZSBUaHJvd1Njb3BlIGRlc3RydWN0b3IgZXhjZXB0IHdoZW4gdGhlIFRo
cm93U2NvcGUKKyAgICBkZXRlY3RzIHRoZSBjYWxsZXIgaXMgYSBMTEludCBvciBKSVQgZnVuY3Rp
b24uIExMSW50IG9yIEpJVCBmdW5jdGlvbnMgd2lsbCBhbHdheXMKKyAgICBjaGVjayBmb3IgZXhj
ZXB0aW9ucyBhZnRlciBhIGhvc3QgQysrIGZ1bmN0aW9uIHJldHVybnMgdG8gaXQuIEhvd2V2ZXIs
IHRoZXkgd2lsbAorICAgIG5vdCBjbGVhciB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0Lgor
CisgICAgSGVuY2UsIGlmIHRoZSBUaHJvd1Njb3BlIGRlc3RydWN0b3IgZGV0ZWN0cyB0aGUgY2Fs
bGVyIGlzIGEgTExJbnQgb3IgSklUIGZ1bmN0aW9uLAorICAgIGl0IHdpbGwganVzdCBza2lwIHRo
ZSBzZXR0aW5nIG9mIHRoZSBiaXQuCisKKyAgICBOb3RlOiB0aGVyZSBpcyBubyBuZWVkLCBhbmQg
aXQgaXMgaW5jb3JyZWN0IHRvIHNldCB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0CisgICAg
aW4gdGhlIHRocm93RXhjZXB0aW9uIG1ldGhvZHMuIFRoaXMgaXMgYmVjYXVzZSwgaW4gcHJhY3Rp
Y2UsIHdlIGFsd2F5cyByZXR1cm4KKyAgICBpbW1lZGlhdGVseSBhZnRlciB0aHJvd2luZyBhbiBl
eGNlcHRpb24uIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBzZXQgdGhlIGJpdCBpbgorICAgIHRo
ZSB0aHJvdyBqdXN0IHRvIGhhdmUgdG8gY2xlYXIgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgYmVmb3Jl
IHdlIGRvIHZlcmlmaWNhdGlvbiBpbgorICAgIHRoZSBUaHJvd1Njb3BlIGRlc3RydWN0b3IuCisK
KyA1LiBVc2luZyBUaHJvd1Njb3BlOjpyZWxlYXNlKCkKKworICAgIFRocm93U2NvcGU6OnJlbGVh
c2UoKSBzaG91bGQgb25seSBiZSB1c2VkIGF0IHRoZSBib3R0b20gb2YgYSBmdW5jdGlvbiBpZjoK
KyAKKyAgICBhLiBUaGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGxldCBpdHMgY2FsbGVyIGNoZWNr
IGFuZCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4KKyAKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdvbygpOyAvLyBtYXkgdGhyb3cuCisKKyAgICAg
ICAgICAgIC4uLiAvLyBDbGVhbnVwIGNvZGUgdGhhdCB3aWxsIGFyZSBub3QgYWZmZWN0ZWQgYnkg
YSBwZW5kaW5nIGV4Y2VwdGlvbnMuCisKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsgLy8g
dGVsbCB0aGUgVGhyb3dTY29wZSB0aGF0IHRoZSBjYWxsZXIgd2lsbCBoYW5kbGUgdGhlIGV4Y2Vw
dGlvbi4KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAKKyAgICBiLiBU
aGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGRvIGEgdGFpbCBjYWxsIHRoYXQgbWF5IHRocm93Lgor
CisgICAgICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICAgICAgLi4uCisgICAgICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7IC8vIHRlbGwgdGhlIFRocm93U2NvcGUgdGhhdCB0aGUgY2FsbGVy
IHdpbGwgaGFuZGxlIHRoZSBleGNlcHRpb24uCisgICAgICAgICAgICByZXR1cm4gZ29vKCk7IC8v
IG1heSB0aHJvdy4KKyAgICAgICAgfQorIAorICAgIFRocm93U2NvcGU6OnJlbGVhc2UoKSBzaG91
bGQgbm90IGJlIHVzZWQgaW4gdGhlIGNvZGUgcGF0aHMgdGhhdCBicmFuY2guIEZvciBleGFtcGxl
OgorIAorICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICAgICAgYXV0byByZXN1
bHQgPSBnb28xKCk7IC8vIG1heSB0aHJvdy4KKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsg
Ly8gPD09PT09PT09PT09PT09PT09PT0gdGhlIFdST05HIHdheSAhISEKKyAgICAgICAgICAgIGlm
IChyZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworIAorICAgICAgICAgICAgcmVzdWx0
ID0gZ29vMigpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAKKyAgICBUaGUgYWJvdmUgd2lsbCByZXN1bHQgaW4g
YSB2ZXJpZmljYXRpb24gZmFpbHVyZSBpbiBnb28yKCkncyBUaHJvd1Njb3BlLiAgVGhlIHByb3Bl
ciB3YXkKKyAgICB0byBmaXggdGhpcyB2ZXJpZmljYXRpb24gaXMgdG8gZG8gd2l0aGVyICg2KSBv
ciAoNykgYmVsb3cuCisgCisgIDYuIENoZWNraW5nIGV4Y2VwdGlvbnMgd2l0aCBUaHJvd1Njb3Bl
OjpleGNlcHRpb24oKQorIAorICAgICBUaHJvd1Njb3BlOjpleGNlcHRpb24oKSByZXR1cm5zIHRo
ZSB0aHJvd24gRXhjZXB0aW9uIG9iamVjdCBpZiB0aGVyZSBpcyBvbmUgcGVuZGluZy4KKyAgICAg
RWxzZSBpdCByZXR1cm5zIG51bGxwdHIuCisgCisgICAgIEl0IGFsc28gY2xlYXJzIHRoZSBtX25l
ZWRFeGNlcHRpb25DaGVjayBiaXQgdGhlcmVieSBpbmRpY2F0aW5nIHRoYXQgd2UndmUgc2F0aXNp
ZmVkCisgICAgIHRoZSBuZWVkZWQgZXhjZXB0aW9uIGNoZWNrLgorIAorICAgICBUaGlzIGlzIGhv
dyB3ZSBkbyBpdDoKKyAKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gZ29vMSgpOyAvLyBtYXkgdGhyb3cuCisgICAgICAgICAgICBpZiAoc2Nv
cGUuZXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBy
ZXN1bHQgPSBnb28yKCk7IC8vIG1heSB0aHJvdy4KKyAgICAgICAgICAgIC4uLgorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorIAorICAgIEJ1dCBzb21ldGltZXMsIGZvciBv
cHRpbWl6YXRpb24gcmVhc29ucywgd2UgbWF5IGNob29zZSB0byB0ZXN0IHRoZSByZXN1bHQgb2Yg
dGhlIGNhbGxlZQorICAgIGZ1bmN0aW9uIGluc3RlYWQgZG9pbmcgYSBsb2FkIG9mIHRoZSBWTSBl
eGNlcHRpb24gdmFsdWUuIFNlZSAoNykgYmVsb3cuCisgCisgNy4gQ2hlY2tpbmcgZXhjZXB0aW9u
IGJ5IGNoZWNraW5nIGNhbGxlZSByZXN1bHQKKyAKKyAgICBUaGlzIGFwcHJvYWNoIHNob3VsZCBv
bmx5IGJlIGFwcGxpZWQgd2hlbiBpdCBtYWtlcyBhIGRpZmZlcmVuY2UgdG8gcGVyZm9ybWFuY2Uu
CisgICAgSWYgd2UgbmVlZCB0byBkbyB0aGlzLCB3ZSBzaG91bGQgYWRkIGFuIEFTU0VSVCgpIHRo
YXQgaW52b2tlcyBUaHJvd1Njb3BlOjpleGNlcHRpb24oKQorICAgIGFuZCB2ZXJpZnkgdGhlIHJl
c3VsdC4gU2luY2UgVGhyb3dTY29wZSB2ZXJpZmljYXRpb24gaXMgb25seSBkb25lIG9uIERFQlVH
IGJ1aWxkcywKKyAgICB0aGlzIEFTU0VSVCB3aWxsIHNhdGlzZnkgdGhlIHZlcmlmaWNhdGlvbiBy
ZXF1aXJlbWVudHMgd2hpbGUgbm90IGltcGFjdGluZyBwZXJmb3JtYW5jZS4KKyAKKyAgICBUaGlz
IGlzIGhvdyB3ZSBkbyBpdDoKKworICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAg
ICAgICAgYm9vbCBmYWlsZWQgPSBnb28xKCk7IC8vIG1heSB0aHJvdy4KKyAgICAgICAgICAgIEFT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09IGZhaWxlZCkKKyAgICAgICAgICAgIGlmIChmYWls
ZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICByZXN1bHQgPSBnb28y
KCk7IC8vIG1heSB0aHJvdy4KKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorIAorIDguIERlYnVnZ2luZyB2ZXJpZmljYXRpb24gZmFpbHVyZXMu
CisKKyAgICBhLiBXaGVuIHZlcmlmaWNhdGlvbiBmYWlscywgeW91IHdpbGwgc2VlIGEgaGVscGZ1
bCBtZXNzYWdlIGZvbGxvd2VkIGJ5IGFuIGFzc2VydGlvbiBmYWlsdXJlLgorICAgICAgIEZvciBl
eGFtcGxlOgorIAorICAgIEZBSUxFRCBleGNlcHRpb24gY2hlY2sgdmVyaWZpY2F0aW9uOgorICAg
ICAgICBFeGNlcHRpb24gdGhyb3duIGZyb20gVGhyb3dTY29wZSBbMl0gRXhpdDogc2V0VXBDYWxs
IEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOjEyNDUKKyAgICAgICAgaXMgdW5jaGVja2VkIGluIFRocm93
U2NvcGUgWzFdOiB2YXJhcmdzU2V0dXAgQCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVuU291cmNlL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHA6MTM5OAorCisgICAg
ICAgVGhlIG1lc3NhZ2UgdGVsbHMgeW91IHRoYXQgZmFpbHVyZSB3YXMgZGV0ZWN0ZWQgYXQgaW4g
dmFyYXJnc1NldHVwKCkgQCBMTEludFNsb3dQYXRocy5jcHAKKyAgICAgICBsaW5lIDEzOTgsIGFu
ZCB0aGF0IHRoZSBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVjayBzaG91bGQgaGF2ZSBoYXBwZW5lZCBz
b21ld2hlcmUgYmV0d2VlbgorICAgICAgIHRoZSBjYWxsIHRvIHNldFVwQ2FsbCgpIEAgTExJbnRT
bG93UGF0aHMuY3BwIGxpbmUgMTI0NSBhbmQgaXQuCisKKyAgICAgICBJZiB0aGF0IGlzIGluc3Vm
ZmljaWVudCBpbmZvcm1hdGlvbiwgeW91IGNhbiAuLi4KKworICAgIGIuIFR1cm4gb24gVGhyb3dT
Y29wZSB0cmFjaW5nCisgCisgICAgICAgSnVzdCBzZXQgdHJhY2VPbj10cnVlIGF0IHRoZSB0b3Ag
b2YgVGhyb3dTY29wZS5jcHAsIGFuZCByZWJ1aWxkLiBUaGVyZWFmdGVyLCB5b3Ugc2hvdWxkCisg
ICAgICAgc2VlIGEgdHJhY2Ugb2YgVGhyb3dTY29wZXMgYmVpbmcgZW50ZXJlZCBhbmQgZXhpdGVk
IGFzIHdlbGwgYXMgdGhlaXIgZGVwdGggZS5nLgorCisgICAgVGhyb3dTY29wZSBbMV0gRW50ZXI6
IGxsaW50X3Nsb3dfcGF0aF9qZmFsc2UgQCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVuU291cmNlL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHA6MTAzMgorICAgIFRo
cm93U2NvcGUgWzFdIEV4aXQ6IGxsaW50X3Nsb3dfcGF0aF9qZmFsc2UgQCAvVm9sdW1lcy9EYXRh
L3dzNi9PcGVuU291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHA6MTAzMgorCisgICAgICAgWW91IHdpbGwgYWxzbyBzZWUgdHJhY2VzIG9mIHNpbXVsYXRl
ZCB0aHJvd3MgZS5nLgorCisgICAgVGhyb3dTY29wZSBbMl0gVGhyb3cgZnJvbTogc2V0VXBDYWxs
IEAgL1ZvbHVtZXMvRGF0YS93czYvT3BlblNvdXJjZS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwOjEyNDUKKworICAgICAgIElmIHRoYXQgaXMgaW5zdWZmaWNp
ZW50IGluZm9ybWF0aW9uLCB5b3UgY2FuIC4uLgorCisgICAgYy4gVHVybiBvbiBUaHJvd1Njb3Bl
IHN0YWNrIGR1bXBzCisKKyAgICAgICBKdXN0IHNldCB0cmFjZVdpdGhTdGFja1RyYWNlcz10cnVl
IGF0IHRoZSB0b3Agb2YgVGhyb3dTY29wZS5jcHAsIGFuZCByZWJ1aWxkLgorICAgICAgIFRoZXJl
YWZ0ZXIsIHlvdSBzaG91bGQgc2VlIGEgc3RhY2sgdHJhY2VzIGF0IHZhcmlvdXMgcmVsZXZhbnQg
VGhyb3dTY29wZSBldmVudHMuCisKKyAgICBkLiBVc2luZyB0aHJvd1Njb3BlUHJpbnRJZk5lZWRD
aGVjaygpCisKKyAgICAgICBJZiB5b3UgaGF2ZSBpc29sYXRlZCB0aGUgbWlzc2luZyBleGNlcHRp
b24gY2hlY2sgdG8gYSBmdW5jdGlvbiB0aGF0IGlzIGxhcmdlIGJ1dAorICAgICAgIGlzIHVuc3Vy
ZSB3aGljaCBzdGF0ZW1lbnQgY2FuIHRocm93IGFuZCBpcyBtaXNzaW5nIHRoZSBjaGVjaywgeW91
IGNhbiBzcHJpbmtsZQorICAgICAgIHRoZSBmdW5jdGlvbiB3aXRoIGNhbGxzIHRvIHRocm93U2Nv
cGVQcmludElmTmVlZENoZWNrKCkuCisKKyAgICAgICB0aHJvd1Njb3BlUHJpbnRJZk5lZWRDaGVj
aygpIHdpbGwgbG9nIGEgbGluZSAiTmVlZCBleGNlcHRpb24gY2hlY2sgYXQgLi4uIiB0aGF0Cisg
ICAgICAgaW5sY3VkZXMgdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIG9ubHkgd2hlbiBpdCBzZWUg
dGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIHNldC4KKyAgICAgICBUaGlzIHdpbGwgdGVsbCB5b3Ug
d2hpY2ggc3RhdGVtZW50IHNpbXVsYXRlZCB0aGUgdGhyb3cgdGhhdCBpcyBub3QgYmVpbmcgY2hl
Y2tlZAorICAgICAgIGkuZS4gdGhlIG9uZSB0aGF0IHByZWNlZGVkIHRoZSB0aHJvd1Njb3BlUHJp
bnRJZk5lZWRDaGVjaygpIHRoYXQgcHJpbnRlZCBhIGxpbmUuCisqLworCitUaHJvd1Njb3BlOjpU
aHJvd1Njb3BlKFZNJiB2bSwgVGhyb3dTY29wZUxvY2F0aW9uIGxvY2F0aW9uKQorICAgIDogbV92
bSh2bSkKKyAgICAsIG1fcHJldmlvdXNTY29wZSh2bS5tX3RvcFRocm93U2NvcGUpCisgICAgLCBt
X2xvY2F0aW9uKGxvY2F0aW9uKQorICAgICwgbV9kZXB0aChtX3ByZXZpb3VzU2NvcGUgPyBtX3By
ZXZpb3VzU2NvcGUtPm1fZGVwdGggKyAxIDogMCkKK3sKKyAgICBtX3ZtLm1fdG9wVGhyb3dTY29w
ZSA9IHRoaXM7CisKKyAgICBpZiAodHJhY2VPbikgeworICAgICAgICBkYXRhTG9nKCI8IiwgdHJh
Y2VDb3VudCsrLCAiPiBUaHJvd1Njb3BlIFsiLCBtX2RlcHRoLCAiXSBFbnRlcjogIiwgbG9jYXRp
b24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbG9jYXRpb24uZmlsZSwgIjoiLCBsb2NhdGlvbi5saW5l
KTsKKyAgICAgICAgaWYgKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spCisgICAgICAgICAgICBk
YXRhTG9nKCIsIG5lZWRzIGNoZWNrIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAg
ICAgaWYgKHRyYWNlV2l0aFN0YWNrVHJhY2VzKQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7CisgICAgfQorCisgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQo
U2l0ZTo6U2NvcGVFbnRyeSk7Cit9CisKK1Rocm93U2NvcGU6On5UaHJvd1Njb3BlKCkKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX3ZtLm1fdG9wVGhyb3dTY29wZSk7CisKKyAgICBpZiAoIW1faXNS
ZWxlYXNlZCkKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0
ZTo6U2NvcGVFeGl0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gSWYgd2UgcmVsZWFzZWQgdGhl
IHNjb3BlLCB0aGF0IG1lYW5zIHdlJ3JlIGxldHRpbmcgb3VyIGNhbGxlcnMgZG8gdGhlCisgICAg
ICAgIC8vIGV4Y2VwdGlvbiBjaGVjay4gSG93ZXZlciwgYmVjYXVzZSBvdXIgY2FsbGVyIG1heSBi
ZSBhIExMSW50IG9yIEpJVAorICAgICAgICAvLyBmdW5jdGlvbiAod2hpY2ggYWx3YXlzIGNoZWNr
cyBmb3IgZXhjZXB0aW9ucyBidXQgd29uJ3QgY2xlYXIgdGhlCisgICAgICAgIC8vIG1fbmVlZEV4
Y2VwdGlvbkNoZWNrIGJpdCksIHdlIHNob3VsZCBjbGVhciBtX25lZWRFeGNlcHRpb25DaGVjayBo
ZXJlCisgICAgICAgIC8vIGFuZCBsZXQgY29kZSBiZWxvdyBkZWNpZGUgaWYgd2UgbmVlZCB0byBz
aW11bGF0ZSBhIHJlLXRocm93LgorICAgICAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0g
ZmFsc2U7CisgICAgfQorCisgICAgYm9vbCB3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQgPSBmYWxz
ZTsKKyAgICB2b2lkKiBwcmV2aW91c1Njb3BlID0gbV9wcmV2aW91c1Njb3BlOworICAgIHZvaWQq
IHRvcENhbGxGcmFtZSA9IG1fdm0udG9wQ2FsbEZyYW1lOworICAgIAorICAgIC8vIElmIHRoZSB0
b3BDYWxsRnJhbWUgd2FzIHB1c2hlZCBvbiB0aGUgc3RhY2sgYWZ0ZXIgdGhlIHByZXZpb3VzU2Nv
cGUgd2FzIGluc3RhbnRpYXRlZCwKKyAgICAvLyB0aGVuIHRoaXMgVk1FbnRyeSB0aHJvd1Njb3Bl
IHdpbGwgYmUgcmV0dXJuaW5nIHRvIExMSU5UIG9yIEpJVCBjb2RlIHRoYXQgYWx3YXlzIGRvCisg
ICAgLy8gYW4gZXhjZXB0aW9uIGNoZWNrLiBJbiB0aGF0IGNhc2UsIHNraXAgdGhlIHNpbXVsYXRl
ZCB0aHJvdyBiZWNhdXNlIHRoZSBMTEludCBhbmQgSklUCisgICAgLy8gd2lsbCBiZSBjaGVja2lu
ZyBmb3IgdGhlIGV4Y2VwdGlvbiB0aGVpciBvd24gd2F5IGluc3RlYWQgb2YgY2FsbGluZyB2bS5l
eGNlcHRpb24oKS4KKyAgICBpZiAodG9wQ2FsbEZyYW1lICYmIHByZXZpb3VzU2NvcGUgPiB0b3BD
YWxsRnJhbWUpCisgICAgICAgIHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IHRydWU7CisgICAg
CisgICAgaWYgKCF3aWxsQmVIYW5kbGVCeUxMSW50T3JKSVQpCisgICAgICAgIHNpbXVsYXRlVGhy
b3coKTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNv
dW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIEV4aXQ6ICIsIG1fbG9jYXRpb24u
ZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGlu
ZSk7CisgICAgICAgIGlmICghd2lsbEJlSGFuZGxlQnlMTEludE9ySklUKQorICAgICAgICAgICAg
ZGF0YUxvZygiLCB3aXRoIHJldGhyb3ciKTsKKyAgICAgICAgaWYgKG1fdm0ubV9uZWVkRXhjZXB0
aW9uQ2hlY2spCisgICAgICAgICAgICBkYXRhTG9nKCIsIG5lZWRzIGNoZWNrIik7CisgICAgICAg
IGRhdGFMb2coIlxuIik7CisKKyAgICAgICAgaWYgKHRyYWNlV2l0aFN0YWNrVHJhY2VzKQorICAg
ICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAgfQorCisgICAgbV92bS5tX3RvcFRo
cm93U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7Cit9CisKK3ZvaWQgVGhyb3dTY29wZTo6dGhyb3dF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBp
ZiAobV92bS5leGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlvbikKKyAg
ICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6VGhyb3cpOwor
ICAgIAorICAgIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30KKworSlNW
YWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
ZXJyb3IpCit7CisgICAgaWYgKCFlcnJvci5pc0NlbGwoKSB8fCAhanNEeW5hbWljQ2FzdDxFeGNl
cHRpb24qPihlcnJvci5hc0NlbGwoKSkpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVl
ZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92bS50aHJvd0V4
Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9CisKK0pTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCit7CisgICAgaWYgKCFqc0R5
bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG9iaikpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlvbkNoZWNr
TmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92bS50aHJv
d0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit2b2lkIFRocm93U2NvcGU6OnByaW50SWZOZWVk
Q2hlY2soY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25l
ZCBsaW5lKQoreworICAgIGlmIChtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrKQorICAgICAgICBk
YXRhTG9nKCI8IiwgdHJhY2VDb3VudCsrLCAiPiBOZWVkIGV4Y2VwdGlvbiBjaGVjayBhdCAiLCBm
dW5jdGlvbk5hbWUsICIgQCAiLCBmaWxlLCAiOiIsIGxpbmUsICJcbiIpOworfQorCit2b2lkIFRo
cm93U2NvcGU6OnNpbXVsYXRlVGhyb3coKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fdm0ubV90
b3BUaHJvd1Njb3BlKTsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludExvY2F0aW9uID0g
bV9sb2NhdGlvbjsKKyAgICBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludERlcHRoID0gbV9kZXB0
aDsKKyAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0gdHJ1ZTsKKworICAgIGlmICh0cmFj
ZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUg
WyIsIG1fZGVwdGgsICJdIFRocm93IGZyb206ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAi
IEAgIiwgbV9sb2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIik7CisgICAg
ICAgIGlmICh0cmFjZVdpdGhTdGFja1RyYWNlcykKKyAgICAgICAgICAgIFdURlJlcG9ydEJhY2t0
cmFjZSgpOworICAgIH0KK30KKwordm9pZCBUaHJvd1Njb3BlOjp2ZXJpZnlFeGNlcHRpb25DaGVj
a05lZWRJc1NhdGlzZmllZChUaHJvd1Njb3BlOjpTaXRlIHNpdGUpCit7CisgICAgaWYgKCF2ZXJp
ZmljYXRpb25PbikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKFVOTElLRUxZKG1fdm0ubV9u
ZWVkRXhjZXB0aW9uQ2hlY2spKSB7CisgICAgICAgIGF1dG8gZmFpbERlcHRoID0gbV92bS5tX3Np
bXVsYXRlZFRocm93UG9pbnREZXB0aDsKKyAgICAgICAgYXV0byYgZmFpbExvY2F0aW9uID0gbV92
bS5tX3NpbXVsYXRlZFRocm93UG9pbnRMb2NhdGlvbjsKKworICAgICAgICBhdXRvIHNpdGVOYW1l
ID0gW10gKFNpdGUgc2l0ZSkgLT4gY29uc3QgY2hhciogeworICAgICAgICAgICAgc3dpdGNoIChz
aXRlKSB7CisgICAgICAgICAgICBjYXNlIFNpdGU6OlNjb3BlRW50cnk6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICJFbnRyeSI7CisgICAgICAgICAgICBjYXNlIFNpdGU6OlNjb3BlRXhpdDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIkV4aXQiOworICAgICAgICAgICAgY2FzZSBTaXRlOjpUaHJv
dzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIlRocm93IjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfTsKKworICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgIkZB
SUxFRCBleGNlcHRpb24gY2hlY2sgdmVyaWZpY2F0aW9uOlxuIgorICAgICAgICAgICAgIiAgICBF
eGNlcHRpb24gdGhyb3duIGZyb20gVGhyb3dTY29wZSBbIiwgZmFpbERlcHRoLCAiXSAiLCBzaXRl
TmFtZShzaXRlKSwgIjogIiwgZmFpbExvY2F0aW9uLmZ1bmN0aW9uTmFtZSwgIiBAICIsIGZhaWxM
b2NhdGlvbi5maWxlLCAiOiIsIGZhaWxMb2NhdGlvbi5saW5lLCAiXG4iCisgICAgICAgICAgICAi
ICAgIGlzIHVuY2hlY2tlZCBpbiBUaHJvd1Njb3BlIFsiLCBtX2RlcHRoLCAiXTogIiwgbV9sb2Nh
dGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBtX2xvY2F0aW9uLmZpbGUsICI6IiwgbV9sb2NhdGlv
bi5saW5lLCAiXG4iCisgICAgICAgICAgICAiXG4iKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV92bS5tX25lZWRFeGNlcHRpb25DaGVjayk7CisgICAgfQorfQorCisjZW5kaWYgLy8gRU5B
QkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKyAgICAKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbi5o
IgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7
CitjbGFzcyBKU09iamVjdDsKKworI2lmIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04p
CisKK2NsYXNzIFRocm93U2NvcGUgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklWQVRFIFRo
cm93U2NvcGUoVk0mLCBUaHJvd1Njb3BlTG9jYXRpb24pOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IH5UaHJvd1Njb3BlKCk7CisKKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisK
KyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4
Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24o
RXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKKyAgICBpbmxpbmUgRXhjZXB0
aW9uKiBleGNlcHRpb24oKQorICAgIHsKKyAgICAgICAgbV92bS5tX25lZWRFeGNlcHRpb25DaGVj
ayA9IGZhbHNlOworICAgICAgICByZXR1cm4gbV92bS5leGNlcHRpb24oKTsKKyAgICB9CisKKyAg
ICBpbmxpbmUgdm9pZCByZWxlYXNlKCkgeyBtX2lzUmVsZWFzZWQgPSB0cnVlOyB9CisKKyAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIHNpbXVsYXRlVGhyb3coKTsKKworICAgIGVudW0gY2xhc3MgU2l0ZSB7CisgICAgICAg
IFNjb3BlRW50cnksCisgICAgICAgIFNjb3BlRXhpdCwKKyAgICAgICAgVGhyb3cKKyAgICB9Owor
ICAgIHZvaWQgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZSk7CisKKyAg
ICBWTSYgbV92bTsKKyAgICBUaHJvd1Njb3BlKiBtX3ByZXZpb3VzU2NvcGU7CisgICAgVGhyb3dT
Y29wZUxvY2F0aW9uIG1fbG9jYXRpb247CisgICAgdW5zaWduZWQgbV9kZXB0aDsKKyAgICBib29s
IG1faXNSZWxlYXNlZCB7IGZhbHNlIH07Cit9OworCisjZGVmaW5lIERFQ0xBUkVfVEhST1dfU0NP
UEUodm1fXykgXAorICAgIEpTQzo6VGhyb3dTY29wZSh2bV9fLCBKU0M6OlRocm93U2NvcGVMb2Nh
dGlvbihfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykpCisKKyNkZWZpbmUgdGhyb3dT
Y29wZVByaW50SWZOZWVkQ2hlY2soc2NvcGVfXykgXAorICAgIHNjb3BlX18ucHJpbnRJZk5lZWRD
aGVjayhfX0ZVTkNUSU9OX18sIF9fRklMRV9fLCBfX0xJTkVfXykKKworI2Vsc2UgLy8gbm90IEVO
QUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04pCisKK2NsYXNzIFRocm93U2NvcGUgeworcHVi
bGljOgorICAgIFRocm93U2NvcGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAgeyB9
CisKKyAgICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAgCisgICAgdm9pZCB0
aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IG1f
dm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsgfQorICAgIEpTVmFsdWUgdGhyb3dF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBtX3ZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIHZhbHVlKTsgfQorICAgIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopIHsgcmV0dXJuIG1fdm0udGhyb3dFeGNl
cHRpb24oZXhlYywgb2JqKTsgfQorICAgIAorICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkgeyBy
ZXR1cm4gbV92bS5leGNlcHRpb24oKTsgfQorICAgIHZvaWQgcmVsZWFzZSgpIHsgfQorICAgIAor
cHJpdmF0ZToKKyAgICBWTSYgbV92bTsKK307CisKKyNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09Q
RSh2bV9fKSBcCisgICAgSlNDOjpUaHJvd1Njb3BlKHZtX18pCisKKyNlbmRpZiAvLyBFTkFCTEUo
VEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKQorCitBTFdBWVNfSU5MSU5FIHZvaWQgdGhyb3dFeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgRXhjZXB0aW9uKiBleGNl
cHRpb24pCit7CisgICAgc2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30K
KworQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
VGhyb3dTY29wZSYgc2NvcGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIHNjb3BlLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIHZhbHVlKTsKK30KKworQUxXQVlTX0lOTElORSBKU09iamVjdCog
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgSlNPYmpl
Y3QqIG9iaikKK3sKKyAgICByZXR1cm4gc2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgb2JqKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaHJvd1Njb3BlTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UaHJvd1Njb3BlTG9jYXRpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlTG9jYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgVGhy
b3dTY29wZUxvY2F0aW9uIHsKKyAgICBUaHJvd1Njb3BlTG9jYXRpb24oKSB7IH0KKyAgICBUaHJv
d1Njb3BlTG9jYXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBmaWxl
LCB1bnNpZ25lZCBsaW5lKQorICAgICAgICA6IGZ1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCisg
ICAgICAgICwgZmlsZShmaWxlKQorICAgICAgICAsIGxpbmUobGluZSkKKyAgICB7IH0KKyAgICAK
KyAgICBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUgeyBudWxscHRyIH07CisgICAgY29uc3QgY2hh
ciogZmlsZSB7IG51bGxwdHIgfTsKKyAgICB1bnNpZ25lZCBsaW5lIHsgMCB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlz
aW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKICNp
bmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiVGhy
b3dTY29wZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVk
ZSAiVHlwZWRBcnJheUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWTUVudHJ5UmVjb3JkLmgiCkBA
IC0xMDgsNiArMTA5LDcgQEAgY2xhc3MgU3RydWN0dXJlOwogY2xhc3MgUmVnRXhwOwogI2VuZGlm
CiBjbGFzcyBTeW1ib2w7CitjbGFzcyBUaHJvd1Njb3BlOwogY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2s7CiBjbGFzcyBVbmxpbmtlZEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTsKQEAgLTQ0OSwxMCArNDUxLDYgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbiog
bGFzdEV4Y2VwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEV4Y2VwdGlvbjsgfQogICAgIEpT
Q2VsbCoqIGFkZHJlc3NPZkxhc3RFeGNlcHRpb24oKSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PEpTQ2VsbCoqPigmbV9sYXN0RXhjZXB0aW9uKTsgfQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwot
ICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUq
LCBKU09iamVjdCopOwotCiAgICAgdm9pZCBzZXRGYWlsTmV4dE5ld0NvZGVCbG9jaygpIHsgbV9m
YWlsTmV4dE5ld0NvZGVCbG9jayA9IHRydWU7IH0KICAgICBib29sIGdldEFuZENsZWFyRmFpbE5l
eHROZXdDb2RlQmxvY2soKQogICAgIHsKQEAgLTY0NCw2ICs2NDIsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgbV9sYXN0RXhjZXB0aW9uID0gZXhjZXB0aW9uOwogICAgIH0KIAorICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBK
U1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24o
RXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKKwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAgICAgYm9v
bCBtX2NhblVzZUFzc2VtYmxlcjsKICNlbmRpZgpAQCAtNjY4LDYgKzY3MCwxMyBAQCBwcml2YXRl
OgogCiAgICAgRXhjZXB0aW9uKiBtX2V4Y2VwdGlvbiB7IG51bGxwdHIgfTsKICAgICBFeGNlcHRp
b24qIG1fbGFzdEV4Y2VwdGlvbiB7IG51bGxwdHIgfTsKKyNpZiBFTkFCTEUoVEhST1dfU0NPUEVf
VkVSSUZJQ0FUSU9OKQorICAgIFRocm93U2NvcGUqIG1fdG9wVGhyb3dTY29wZSB7IG51bGxwdHIg
fTsKKyAgICBUaHJvd1Njb3BlTG9jYXRpb24gbV9zaW11bGF0ZWRUaHJvd1BvaW50TG9jYXRpb247
CisgICAgdW5zaWduZWQgbV9zaW11bGF0ZWRUaHJvd1BvaW50RGVwdGggeyAwIH07CisgICAgbXV0
YWJsZSBib29sIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIHsgZmFsc2UgfTsKKyNlbmRpZgorCiAgICAg
Ym9vbCBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrIHsgZmFsc2UgfTsKICAgICBEZWxldGVQcm9wZXJ0
eU1vZGUgbV9kZWxldGVQcm9wZXJ0eU1vZGUgeyBEZWxldGVQcm9wZXJ0eU1vZGU6OkRlZmF1bHQg
fTsKICAgICBib29sIG1fZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3cgeyB0cnVl
IH07CkBAIC02OTAsNiArNjk5LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaGFkb3dDaGlja2VuPiBtX3NoYWRvd0NoaWNrZW47CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk+IG1fYnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTsK
KworICAgIGZyaWVuZCBjbGFzcyBUaHJvd1Njb3BlOwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3Bl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNj
b3BlLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNRW50cnlTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBWTUVudHJ5U2NvcGUoVk0mLCBKU0dsb2JhbE9iamVjdCop
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5WTUVudHJ5U2NvcGUoKTsKIAorICAgIFZNJiB2bSgp
IGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KIAogICAgIHZvaWQgYWRkRGlkUG9w
TGlzdGVuZXIoc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxNiBAQCB2b2lkIFdlYWtNYXBD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWFrTWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBl
RXJyb3IoZXhlYywgIldlYWtNYXAiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiV2Vha01hcCIpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiB3ZWFr
TWFwU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
ZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha01hcFN0cnVjdHVyZSgp
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02OSwxMSArNzQsMTEgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENhbGxEYXRhIGFkZGVy
RnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlm
IChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBmb3JF
YWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGlmICghbmV4dEl0ZW0uaXNPYmplY3QoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDE1ICs1NiwxOCBA
QCB2b2lkIFdlYWtNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNCiAKIHN0YXRpYyBXZWFr
TWFwRGF0YSogZ2V0V2Vha01hcERhdGEoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxs
ZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBub24tb2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAg
ZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCiAgICAgaWYgKEpTV2Vha01hcCogd2Vha01hcCA9IGpzRHluYW1pY0Nhc3Q8SlNXZWFrTWFw
Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gd2Vha01hcC0+d2Vha01hcERhdGEoKTsKIAotICAg
IHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFr
TWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0IikpOworICAgIHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBm
dW5jdGlvbiBvbiBhIG5vbi1XZWFrTWFwIG9iamVjdCIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtOTksMTMgKzEwMiwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBy
b3RvRnVuY1dlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha01h
cFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgV2Vh
a01hcERhdGEqIG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIGlmICgha2V5LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVk
IHRvIHNldCBhIG5vbi1vYmplY3Qga2V5IGluIGEgV2Vha01hcCIpKSk7Ci0gICAgbWFwLT5zZXQo
Y2FsbEZyYW1lLT52bSgpLCBhc09iamVjdChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IHNjb3BlLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVkIHRvIHNldCBhIG5vbi1vYmplY3Qg
a2V5IGluIGEgV2Vha01hcCIpKSk7CisgICAgbWFwLT5zZXQodm0sIGFzT2JqZWN0KGtleSksIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsMTEgKzQ4LDE2IEBAIHZvaWQgV2Vha1NldENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbigKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbFdlYWtTZXQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVj
LCAiV2Vha1NldCIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsICJXZWFrU2V0IikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1cmUqIHdlYWtTZXRTdHJ1Y3R1
cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVj
LT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT53ZWFrU2V0U3RydWN0dXJlKCkpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTY5LDcgKzc0LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENhbGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxs
RGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShh
ZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChhZGRlckZ1bmN0
aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBmb3JFYWNoSW5JdGVyYWJs
ZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRW
YWx1ZSkgewogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1NldFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCwxNSArNTQsMTggQEAgdm9pZCBX
ZWFrU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTQogCiBzdGF0aWMgV2Vha01hcERhdGEq
IGdldFdlYWtNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtT
ZXQgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9u
IG9uIG5vbi1vYmplY3QiKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAg
IGlmIChKU1dlYWtTZXQqIHdlYWtTZXQgPSBqc0R5bmFtaWNDYXN0PEpTV2Vha1NldCo+KHZhbHVl
KSkKICAgICAgICAgcmV0dXJuIHdlYWtTZXQtPndlYWtNYXBEYXRhKCk7CiAKLSAgICB0aHJvd1R5
cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5j
dGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVjdCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24g
b24gYSBub24tV2Vha1NldCBvYmplY3QiKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAg
LTg2LDEzICs4OSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dl
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2Vha1NldEFkZChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgV2Vha01hcERhdGEq
IG1hcCA9IGdldFdlYWtNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgSlNWYWx1ZSBrZXkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlm
ICgha2V5LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGVkIHRvIGFkZCBh
IG5vbi1vYmplY3Qga2V5IHRvIGEgV2Vha1NldCIpKSk7Ci0gICAgbWFwLT5zZXQoY2FsbEZyYW1l
LT52bSgpLCBhc09iamVjdChrZXkpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJ
TGl0ZXJhbCgiQXR0ZW1wdGVkIHRvIGFkZCBhIG5vbi1vYmplY3Qga2V5IHRvIGEgV2Vha1NldCIp
KSk7CisgICAgbWFwLT5zZXQodm0sIGFzT2JqZWN0KGtleSksIGpzVW5kZWZpbmVkKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA4LTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIFRocm93U2NvcGUgYW5kIGZvcmNlIGV2
ZXJ5IHRocm93IHNpdGUgdG8gaW5zdGFudGlhdGUgYSBUaHJvd1Njb3BlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMTcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAg
ICAgICAgLSBJbnRyb2R1Y2VkIHRoZSBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OKSBm
bGFnLgorCiAyMDE2LTA4LTI3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVVJMUGFyc2VyIHNob3VsZCBwYXJzZSByZWxhdGl2ZSBVUkxzCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5MTgsMTAgQEAKICNkZWZpbmUgRU5BQkxF
X01BU01fUFJPQkUgMAogI2VuZGlmCiAKKyNpZm5kZWYgRU5BQkxFX1RIUk9XX1NDT1BFX1ZFUklG
SUNBVElPTgorI2RlZmluZSBFTkFCTEVfVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OICghZGVmaW5l
ZChOREVCVUcpKQorI2VuZGlmCisKIC8qIFBpY2sgd2hpY2ggYWxsb2NhdG9yIHRvIHVzZTsgd2Ug
b25seSBuZWVkIGFuIGV4ZWN1dGFibGUgYWxsb2NhdG9yIGlmIHRoZSBhc3NlbWJsZXIgaXMgY29t
cGlsZWQgaW4uCiAgICBPbiBub24tV2luZG93cyB4ODYtNjQsIGlPUywgYW5kIEFSTTY0IHdlIHVz
ZSBhIHNpbmdsZSBmaXhlZCBtbWFwLCBvbiBvdGhlciBwbGF0Zm9ybXMgd2UgbW1hcCBvbiBkZW1h
bmQuICovCiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
NTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc1OSBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBz
aXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgb25s
eSBhbiBpbnRlcm5hbCBBUEkgY2hhbmdlLiBJZiBpdCBidWlsZHMsIGl0IHNob3VsZCBiZSBnb29k
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNBcHBsZVBheVNlc3Npb246OmNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQ
YXlTZXNzaW9uOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RK
U0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGlj
dGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25h
cnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQWVz
Q2JjUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFlc0tleUdlblBhcmFtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUhtYWNLZXlQYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUnNhS2V5R2VuUGFy
YW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYU9hZXBQYXJhbXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlUnNhU3NhUGFyYW1zKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Ny
eXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0bzo6Z2V0UmFuZG9tVmFs
dWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNBcnJheUZyb21KU09OKToKKyAgICAgICAgKFdl
YkNvcmU6OmdldFN0cmluZ0Zyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvb2xlYW5G
cm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04p
OgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpKU0NyeXB0
b0tleVNlcmlhbGl6YXRpb25KV0spOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6dHJ5
SldLS2V5T3BzVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0
aW9uSldLOjpyZWNvbmNpbGVVc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlT
ZXJpYWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGFSU0FDb21wb25lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRKV0tBbGdvcml0aG1Ub0pTT04pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpYWxpemUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRD
dXN0b21FbGVtZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50
UmVnaXN0cnk6OmRlZmluZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNldERPTUV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjplbmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9TbWFsbGVySW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvU21hbGxlclVJbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuQWNjZXNz
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6dGhyb3dOb3RTdXBwb3J0ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJv
d0ludmFsaWRTdGF0ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93U2VjdXJpdHlFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRocm93QXJndW1lbnRUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
dGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dDb25zdHJ1Y3RvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93U2VxdWVuY2VUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dOb25GaW5pdGVU
eXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dHZXR0ZXJUeXBlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6dGhyb3dTZXR0ZXJUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
dGhyb3dUaGlzVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxUaHJvd1R5cGVFcnJv
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJD
b3JlOjp0b0pTU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRpdmVBcnJh
eSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2ZUFycmF5KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0RPTUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUNvbnN0cnVj
dG9yTm90Q29uc3RydWN0YWJsZTo6Y2FsbFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjYWxsQ29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydFdyYXBwZXJUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjppdGVyYXRvckNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpp
dGVyYXRvckZvckVhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01JdGVyYXRvclByb3RvdHlw
ZTxKU1dyYXBwZXI+OjpuZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xv
dFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpzZXRJ
bnRlcnZhbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTRGF0YUN1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6Y29u
dmVydFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
SlNGaWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246Oml0ZW0pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxDYW52YXNFbGVtZW50Ojpwcm9iYWJseVN1cHBvcnRzQ29udGV4dCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6Om9wZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1M
RWxlbWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxl
bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNl
bGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2V0
U2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50Ojpz
ZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRT
ZWxlY3Rpb25FbmQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxl
Y3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRTZWxlY3Rpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIaXN0b3J5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cHVzaFN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbWFnZUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6OmdldFNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxNZXNz
YWdlUG9ydEFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
Lmg6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjp0b0RlY2lzaW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U01vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01vZHVsZUxvYWRlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U05vZGU6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlcGxhY2VD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Tm9kZUZpbHRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OmFj
Y2VwdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3Jz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFt
RGVmYXVsdFJlYWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnNldFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldE9iamVjdFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmYpOgorICAgICAg
ICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uaSk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rp
b25NYXRyaXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3Vi
dGxlQ3J5cHRvOjp2ZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlw
dG86OmRpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2Vu
ZXJhdGVLZXkpOgorICAgICAgICAoV2ViQ29yZTo6aW1wb3J0S2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjppbXBvcnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhwb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpleHBv
cnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnVud3JhcEtleSk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3RydWN0SlNXb3JrZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyR2xv
YmFsU2NvcGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9iYWxTY29w
ZTo6c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpz
ZXRJbnRlcnZhbCk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyOjppbnZva2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZUJhc2U6OnRocm93U3RhY2tPdmVy
Zmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6dGhyb3dWYWxpZGF0
aW9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXli
ZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVt
ZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0
aW9uQ29udGVudCk6CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcyk6CisgICAgICAgIChHZW5lcmF0ZUFyZ3VtZW50c0NvdW50
Q2hlY2spOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNJbnRlcmZh
Y2VOYW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNJbnRlcmZhY2VOYW1l
Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2Jq
ZWN0RXhjaXRpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdFBy
b3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVu
Y3Rpb25Bbm90aGVyRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RF
dmVudENvbnN0cnVjdG9yQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRDb25z
dHJ1Y3RvckF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlv
bkl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXhjZXB0aW9uTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVj
dEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xv
YmFsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0UmVndWxhckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxP
YmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25SZWd1bGFyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVu
dHNTdGF0aWNSZWFkT25seUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRzU3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1
cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdElu
dGVyZmFjZUltcGxlbWVudHNTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudHNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNv
bnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBs
ZW1lbnRzTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0
aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blN1cHBsZW1lbnRhbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dEl0ZXJhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVz
dEF0dHJpYnV0ZVJXQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vZGVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9kZU5hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
V3JpdGVhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0
dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlz
dGljQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNHZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlRnVuY3Rpb25Ob25kZXRl
cm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVzdE9iajo6
RW51bVR5cGU+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVzdE9iajo6T3B0aW9uYWw+
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8QWx0ZXJuYXRlRW51bU5hbWU+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVzdE9iajo6RW51bUE+KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnQ8VGVzdE9iajo6RW51bUI+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVz
dE9iajo6RW51bUM+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVzdE9iajo6S2luZD4p
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxUZXN0T2JqOjpTaXplPik6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkNvbmZpZGVuY2U+KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9s
ZXJhdGVOdWxsPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2Jq
OjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbD4pOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRlRGljdGlvbmFyeU5hbWU+KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpSZWFkT25seVN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVhZE9u
bHlUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0
YXRpY1JlYWRPbmx5TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aWNTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0
cnVjdG9yVGVzdFN1Yk9iaik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakJ5dGVBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak9jdGV0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2xhbXBlZFNob3J0
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialVuc2lnbmVkTG9u
Z0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialN0cmluZ0F0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVXN2c3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0
TnVsbGFibGVPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxlbmllbnRUZXN0
T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSW1wbGVtZW50
YXRpb25FbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpYTUxPYmpBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alJlZmxlY3RlZFVTVlN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVm
bGVjdGVkSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3Rl
ZFVuc2lnbmVkSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxl
Y3RlZEJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVS
TEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkVVNWVVJMQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDdXN0b21BdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iak9uZm9vKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak9ud2Via2l0
Zm9vKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakFueUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb250
ZW50RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTXV0YWJsZVBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSWQpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqSGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZXBs
YWNlYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZURv
dWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFi
bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVsbGFibGVVU1ZTdHJp
bmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbnN0
cnVjdG9yU3RhdGljU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpU
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakJ5
dGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9jdGV0QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQ2xhbXBlZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9u
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpUZXN0T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpUZXN0TnVsbGFi
bGVPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxlbmllbnRUZXN0T2Jq
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVc3ZzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9ialhNTE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakN1c3Rv
bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqT25mb28pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqT253ZWJraXRmb28pOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBbnlBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialN0cmF3YmVycnkpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqSWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJp
bmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxs
YWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhv
ZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqSW5zdGFuY2VG
dW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBh
dGhOU1Jlc29sdmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdT
cGVjaWFsTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERl
ZmF1bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxl
VVNWU3RyaW5nQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZh
dGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25B
ZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWQpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmopOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhEb2N1bWVudEFyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25h
bEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFVTVlN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1
bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0lzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNO
dWxsKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU4pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxGbG9hdElzTmFOKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lz
WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNa
ZXJvKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29s
ZWFuKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1
bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q3KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDgpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kOSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDEyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVu
c2lnbmVkTG9uZ1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFi
bGVTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uR2V0U1ZHRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29udmVydDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0NCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y05vZGVNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25BbnkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJn
dW1lbnRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xUHJvbWlzZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0
aW9uMlByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvblByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0
aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOZWVkc0N1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29uZGl0aW9uYWxPdmVybG9hZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czEpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczIpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczMpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczQpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNl
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1l
ZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VQb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZz
VW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNJ
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmopOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y1dpdGhDbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VG
dW5jdGlvbjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNhdHRyaWJ1dGVSZWFkb25seSk6CisgICAgICAgIChXZWJDb3JlOjpq
c2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTYXR0cmlidXRl
Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRv
bmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzcmVhZG9ubHlDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJyaWRn
ZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpt
b3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
Q0luc3RhbmNlOjppbnZva2VNZXRob2QpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3Rh
bmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0
YW5jZTo6aW52b2tlQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJbnN0YW5j
ZTo6dG9KU1ByaW1pdGl2ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRl
KToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKiBicmlk
Z2Uvb2JqYy9vYmpjX3J1bnRpbWUubW06CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjRmll
bGQ6OnZhbHVlRnJvbUluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVs
ZDo6c2V0VmFsdWVUb0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNBcnJh
eTo6c2V0VmFsdWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQXJyYXk6OnZhbHVl
QXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09iamVjdCk6Cisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lmg6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6dGhyb3dFcnJvcik6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpSdW50
aW1lQXJyYXk6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0
KToKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXRCeUluZGV4KToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9tZXRob2QuY3BwOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9kOjps
ZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpjYWxsUnVudGltZU1ldGhvZCk6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1
bnRpbWVPYmplY3Q6OmZhbGxiYWNrT2JqZWN0R2V0dGVyKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVyKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6
OlJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRlcik6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpS
dW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6UnVudGltZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVP
YmplY3Q6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRp
bWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVu
dGltZV9vYmplY3QuaDoKKwogMjAxNi0wOC0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMDUx
NjEKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FwcGxl
UGF5U2Vzc2lvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTUgKzQwLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0FwcGxl
UGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlz
VmFsdWUoKTsKICAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVy
cm9yKHN0YXRlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24iKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uIikpOwogCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkg
PCAzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIHVpbnQxNl90IHN0YXR1cyA9IGNvbnZlcnQ8dWludDE2X3Q+KHN0YXRlLCBzdGF0ZS5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC03MCwxNSArNzMsMTggQEAgSlNWYWx1
ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlT
ZXNzaW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFs
dWUoKTsKICAgICBKU0FwcGxlUGF5U2Vzc2lvbiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNBcHBsZVBheVNlc3Npb24qPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9y
KHN0YXRlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJv
cihzdGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTQXBwbGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgdWludDE2X3Qgc3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTEwNCwxNSArMTEwLDE4IEBAIEpTVmFs
dWUgSlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHAKIAogSlNWYWx1ZSBKU0FwcGxlUGF5
U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1
ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Io
c3RhdGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
IikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uIikpOwogCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U0FwcGxlUGF5U2Vzc2lvbjo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IERpY3Rpb25hcnkgbmV3VG90YWwgPSB7ICZzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCkgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC02MywxMiArNjQsMTUgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTRE9NR2xvYgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTQmxvYihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIERPTUNvbnN0cnVj
dG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4o
ZXhlYy5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3RydWN0b3IpOwogCiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0
cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIkJsb2Ii
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0
VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkJsb2IiKTsKIAogICAgIGlmICghZXhlYy5h
cmd1bWVudENvdW50KCkpIHsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVf
RE9NX1dSQVBQRVIoanNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIEJsb2IsIEJsb2I6OmNy
ZWF0ZSgpKSk7CkBAIC04Nyw3ICs5MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0SlMKICAgICAgICAgSlNWYWx1ZSBibG9iUHJvcGVydHlCYWdWYWx1ZSA9IGV4ZWMu
dW5jaGVja2VkQXJndW1lbnQoMSk7CiAKICAgICAgICAgaWYgKCFibG9iUHJvcGVydHlCYWdWYWx1
ZS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMs
ICJTZWNvbmQgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIE9iamVj
dCIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAi
U2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBPYmplY3Qi
KTsKIAogICAgICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVzdCwgdGhpcyB3aWxsIGFsd2F5cyB5
aWVsZCBhbiBvYmplY3QuCiAgICAgICAgIEpTT2JqZWN0KiBibG9iUHJvcGVydHlCYWdPYmplY3Qg
PSBibG9iUHJvcGVydHlCYWdWYWx1ZS50b09iamVjdCgmZXhlYyk7CkBAIC0xMDIsNyArMTA2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgICAgIGlm
IChjb250YWluc0VuZGluZ3MpIHsKICAgICAgICAgICAgIGlmIChlbmRpbmdzICE9ICJ0cmFuc3Bh
cmVudCIgJiYgZW5kaW5ncyAhPSAibmF0aXZlIikKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcigmZXhlYywgIlRoZSBlbmRpbmdzIHByb3BlcnR5IG11c3QgYmUgZWl0aGVy
IFwidHJhbnNwYXJlbnRcIiBvciBcIm5hdGl2ZVwiIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVz
dCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwibmF0aXZlXCIiKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IHRoZSB0eXBlIHByb3BlcnR5LgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0OCw4ICszNDgsMTEgQEAgYm9vbCBKU0NTU1N0
eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKAogCiBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBTdHJpbmcgcHJvcGVydHlOYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3Jp
dGhtRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU0LDYgKzU0LDkgQEAgZW51bSBjbGFzcyBIYXNoUmVxdWlyZW1lbnQgewogCiBib29sIEpTQ3J5
cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmllcihFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXImIGFsZ29yaXRo
bUlkZW50aWZpZXIpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyB0eXBlZGVmIChBbGdvcml0aG0g
b3IgRE9NU3RyaW5nKSBBbGdvcml0aG1JZGVudGlmaWVyOwogCiAgICAgU3RyaW5nIGFsZ29yaXRo
bU5hbWU7CkBAIC04MSw3ICs4NCw3IEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5
OjpnZXRBbGcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFhbGdvcml0aG1OYW1l
LmNvbnRhaW5zT25seUFTQ0lJKCkpIHsKLSAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTEyMiw4ICsxMjUsMTEgQEAgc3RhdGljIGJvb2wgZ2V0SGFzaEFs
Z29yaXRobShKU0RpY3Rpb25hcgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+IGNyZWF0ZUFlc0NiY1BhcmFtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNDAsNyArMTQ2LDcgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogICAgIH0KIAogICAgIGlm
IChpdkRhdGEuc2Vjb25kICE9IDE2KSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkFFUy1DQkMgaW5pdGlhbGl6YXRpb24gZGF0YSBt
dXN0IGJlIDE2IGJ5dGVzIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgIkFFUy1DQkMgaW5pdGlhbGl6YXRpb24gZGF0YSBtdXN0IGJlIDE2
IGJ5dGVzIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1MSw4ICsx
NTcsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0
aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUFlc0tleUdlblBhcmFt
cyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTE2OSw4ICsxNzgsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+IGNyZWF0ZUhtYWNQYXJhbXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODcsOCArMTk5
LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGlj
IFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVIbWFjS2V5UGFyYW1zKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMjA5LDggKzIyNCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4gY3JlYXRlUnNhS2V5R2VuUGFyYW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjMyLDcgKzI1
MCw3IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogICAgIFJl
ZlB0cjxVaW50OEFycmF5PiBwdWJsaWNFeHBvbmVudEFycmF5ID0gdG9VaW50OEFycmF5KHB1Ymxp
Y0V4cG9uZW50VmFsdWUpOwogICAgIGlmICghcHVibGljRXhwb25lbnRBcnJheSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsICJFeHBlY3RlZCBhIFVpbnQ4QXJyYXkgaW4gcHVibGlj
RXhwb25lbnQiKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgIkV4cGVj
dGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVudCIpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAgICAgcmVzdWx0LT5wdWJsaWNFeHBvbmVudC5hcHBlbmQocHVibGljRXhw
b25lbnRBcnJheS0+ZGF0YSgpLCBwdWJsaWNFeHBvbmVudEFycmF5LT5ieXRlTGVuZ3RoKCkpOwpA
QCAtMjUwLDggKzI2OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUnNh
T2FlcFBhcmFtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yODQsOCArMzA1LDExIEBAIHN0YXRpYyBSZWZQdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FTc2FQYXJhbXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zNywxMyArMzgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBK
U1ZhbHVlIGJ1ZmZlciA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IGFycmF5QnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlcik7CiAgICAg
aWYgKCFhcnJheUJ1ZmZlclZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVkKCkuZ2V0UmFuZG9tVmFsdWVzKGFy
cmF5QnVmZmVyVmlldy5nZXQoKSwgZWMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNl
cmlhbGl6YXRpb25KV0suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw2ICs1Miw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgSlNBcnJheSomIHJlc3VsdCkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywga2V5KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChqc29uLCBQcm9w
ZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKIApAQCAtNjEsNyArNjQsNyBAQCBz
dGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CiAgICAgQVNTRVJUKCFleGVjLT5o
YWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3RlZCBhbiBhcnJheSBmb3Ig
XCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVzXCIgSlNPTiBr
ZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTcyLDYgKzc1
LDkgQEAgc3RhdGljIGJvb2wgZ2V0SlNBcnJheUZyb21KU09OKEV4ZWNTdGF0ZQogCiBzdGF0aWMg
Ym9vbCBnZXRTdHJpbmdGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBj
b25zdCBjaGFyKiBrZXksIFN0cmluZyYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpHZXQpOwogCkBAIC04NCw3ICs5MCw3IEBAIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21K
U09OKEV4ZWNTdGF0ZSoKICAgICAgICAgLy8gQ2FuIGdldCBhbiBvdXQgb2YgbWVtb3J5IGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmc6OmZvcm1hdCgi
RXhwZWN0ZWQgYSBzdHJpbmcgdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3Rl
ZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05Myw2ICs5OSw5IEBAIHN0YXRpYyBib29sIGdldFN0
cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSoKIAogc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09O
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgYm9vbCYg
cmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpz
b24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC0xMDIsNyAr
MTExLDcgQEAgc3RhdGljIGJvb2wgZ2V0Qm9vbGVhbkZyb21KU09OKEV4ZWNTdGF0ZQogICAgIEpT
VmFsdWUganNWYWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnRpZmllcik7CiAgICAgQVNT
RVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CiAgICAgaWYgKCFqc1ZhbHVlLmlzQm9vbGVhbigp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3Rl
ZCBhIGJvb2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3RlZCBhIGJv
b2xlYW4gdmFsdWUgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTEyLDE3ICsxMjEsMjAgQEAgc3RhdGljIGJvb2wgZ2V0Qm9v
bGVhbkZyb21KU09OKEV4ZWNTdGF0ZQogCiBzdGF0aWMgYm9vbCBnZXRCaWdJbnRlZ2VyVmVjdG9y
RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5
LCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBi
YXNlNjR1cmxFbmNvZGVkTnVtYmVyOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04oZXhlYywg
anNvbiwga2V5LCBiYXNlNjR1cmxFbmNvZGVkTnVtYmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoYmFzZTY0dXJsRW5jb2RlZE51bWJlciwgcmVz
dWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5v
dCBkZWNvZGUgYmFzZTY0dXJsIGtleSBkYXRhIGluIEpXSyIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNlNjR1cmwg
a2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
aWYgKHJlc3VsdFswXSA9PSAwKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXplIHRoZSBtaW5pbXVtIG51bWJlciBv
ZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXpl
IHRoZSBtaW5pbXVtIG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTMyLDE2ICsxNDQsMTkgQEAgc3Rh
dGljIGJvb2wgZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKAogSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0soRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIGpzb25TdHJpbmcpCiAgICAgOiBtX2V4ZWMoZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUganNvblZhbHVlID0gSlNPTlBhcnNlKGV4ZWMsIGpzb25TdHJpbmcp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFqc29uVmFsdWUgfHwgIWpzb25WYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fanNvbi5zZXQobV9leGVjLT52bSgpLCBhc09iamVjdChqc29uVmFsdWUpKTsKKyAgICBtX2pz
b24uc2V0KHZtLCBhc09iamVjdChqc29uVmFsdWUpKTsKIH0KIAogSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjp+SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKCkKQEAgLTE2NSw2ICsxODAs
OSBAQCBzdGF0aWMgUmVmPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyCiAKIE9wdGlvbmFs
PENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25j
aWxlQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobSogc3VnZ2VzdGVkQWxnb3JpdGhtLCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzKiBzdWdnZXN0ZWRQYXJhbWV0ZXJzKSBjb25zdAogeworICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09OKG1fZXhlYywgbV9qc29uLmdldCgp
LCAiYWxnIiwgbV9qd2tBbGdvcml0aG1OYW1lKSkgewogICAgICAgICAvLyBBbGdvcml0aG0gaXMg
b3B0aW9uYWwgaW4gSldLLgogICAgICAgICByZXR1cm4gQ3J5cHRvQWxnb3JpdGhtUGFpciB7IHN1
Z2dlc3RlZEFsZ29yaXRobSwgc3VnZ2VzdGVkUGFyYW1ldGVycyB9OwpAQCAtMjE2LDcgKzIzNCw3
IEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2UKICAgICAgICAgYWxn
b3JpdGhtID0gYWxnb3JpdGhtUmVnaXN0eS5jcmVhdGUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
cjo6QUVTX0tXKTsKICAgICAgICAgcGFyYW1ldGVycyA9IGFkb3B0UmVmKCpuZXcgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
bV9leGVjLCAiVW5zdXBwb3J0ZWQgSldLIGFsZ29yaXRobSAiICsgbV9qd2tBbGdvcml0aG1OYW1l
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIlVuc3VwcG9ydGVkIEpX
SyBhbGdvcml0aG0gIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVybiBOdWxs
b3B0OwogICAgIH0KIApAQCAtMjU0LDkgKzI3MiwxMiBAQCBPcHRpb25hbDxDcnlwdG9BbGdvcml0
aG1QYWlyPiBKU0NyeXB0b0tlCiAKIHN0YXRpYyBib29sIHRyeUpXS0tleU9wc1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgQ3J5cHRvS2V5VXNhZ2UmIHVzYWdlcywgY29uc3QgU3RyaW5nJiBvcGVyYXRp
b24sIGNvbnN0IFN0cmluZyYgdHJ5T3BlcmF0aW9uLCBDcnlwdG9LZXlVc2FnZSB0cnlVc2FnZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChvcGVyYXRpb24gPT0gdHJ5T3BlcmF0aW9uKSB7CiAg
ICAgICAgIGlmICh1c2FnZXMgJiB0cnlVc2FnZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250YWlucyBhIGR1cGxpY2F0ZSBv
cGVyYXRpb24iKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250YWlucyBhIGR1cGxpY2F0ZSBvcGVyYXRpb24iKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgdXNhZ2VzIHw9
IHRyeVVzYWdlOwpAQCAtMjY2LDYgKzI4Nyw5IEBAIHN0YXRpYyBib29sIHRyeUpXS0tleU9wc1Zh
bHVlKEV4ZWNTdGF0ZSoKIAogdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29u
Y2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZSYgc3VnZ2VzdGVkVXNhZ2VzKSBjb25zdAogeworICAg
IFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBDcnlwdG9LZXlVc2FnZSBqd2tVc2FnZXMgPSAwOwogCiAgICAgSlNB
cnJheSoga2V5T3BzOwpAQCAtMjc1LDcgKzI5OSw3IEBAIHZvaWQgSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjpyZWNvbmMKICAgICAgICAgICAgIFN0cmluZyBvcGVyYXRpb247CiAgICAgICAg
ICAgICBpZiAoIWpzVmFsdWUuZ2V0U3RyaW5nKG1fZXhlYywgb3BlcmF0aW9uKSkgewogICAgICAg
ICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGF0dHJp
YnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOworICAgICAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGF0dHJp
YnV0ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghdHJ5SldLS2V5T3BzVmFsdWUobV9leGVj
LCBqd2tVc2FnZXMsIG9wZXJhdGlvbiwgQVNDSUlMaXRlcmFsKCJzaWduIiksIENyeXB0b0tleVVz
YWdlU2lnbikpCkBAIC0zMTAsNyArMzM0LDcgQEAgdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OnJlY29uYwogICAgICAgICBlbHNlIGlmIChqd2tVc2VTdHJpbmcgPT0gInNpZyIpCiAg
ICAgICAgICAgICBqd2tVc2FnZXMgfD0gKENyeXB0b0tleVVzYWdlU2lnbiB8IENyeXB0b0tleVVz
YWdlVmVyaWZ5KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBcIiIgKyBqd2tVc2VTdHJpbmcg
KyAiXCIiKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsICJVbnN1
cHBvcnRlZCBKV0sga2V5IHVzZSB2YWx1ZSBcIiIgKyBqd2tVc2VTdHJpbmcgKyAiXCIiKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTM2MiwyMSArMzg2LDI0IEBA
IGJvb2wgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlTaXoKIAogc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YU9j
dGV0U2VxdWVuY2UoKSBjb25zdAogeworICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcga2V5QmFz
ZTY0VVJMOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCks
ICJrIiwga2V5QmFzZTY0VVJMKSkgewogICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2Vj
cmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlzIEpXSyIpKTsKKyAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2VjcmV0IGtleSBkYXRhIGlz
IG5vdCBwcmVzZW50IGlzIEpXSyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG9jdGV0U2VxdWVuY2U7CiAgICAgaWYgKCFiYXNlNjRVUkxE
ZWNvZGUoa2V5QmFzZTY0VVJMLCBvY3RldFNlcXVlbmNlKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRh
dGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBkYXRhIGluIEpXSyIpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKCFrZXlTaXplSXNWYWxpZChv
Y3RldFNlcXVlbmNlLnNpemUoKSAqIDgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhl
YywgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsICJLZXkgc2l6ZSBpcyBub3QgdmFs
aWQgZm9yICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKQEAgLTM4NSwyNCArNDEyLDI3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhPiBKU0NyeXB0b0sKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRv
S2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVudHMoKSBjb25zdAogeworICAg
IFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBWZWN0b3I8dWludDhfdD4gbW9kdWx1czsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZXhwb25lbnQ7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHByaXZhdGVFeHBvbmVudDsKIAog
ICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgbV9qc29uLmdldCgp
LCAibiIsIG1vZHVsdXMpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJl
ZCBKV0sgXCJuXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBcIm5cIiBtZW1i
ZXIgaXMgbWlzc2luZyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAg
aWYgKCFrZXlTaXplSXNWYWxpZChtb2R1bHVzLnNpemUoKSAqIDgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKG1fZXhlYywgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandrQWxn
b3JpdGhtTmFtZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsICJLZXkg
c2l6ZSBpcyBub3QgdmFsaWQgZm9yICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0b3JGcm9t
SlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImUiLCBleHBvbmVudCkpIHsKICAgICAgICAgaWYg
KCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9l
eGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBcImVcIiBtZW1iZXIgaXMgbWlzc2luZyIp
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQ1OCwyMiArNDg4LDIyIEBAIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sKICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKCFlbGVtZW50
LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlM
aXRlcmFsKCJKV0sgXCJvdGhcIiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldL
IFwib3RoXCIgYXJyYXkgbWVtYmVyIGlzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0
b3JGcm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAiciIsIGluZm8ucHJpbWVGYWN0
b3IpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQg
cHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNh
bm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIp
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICgh
Z2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJk
IiwgaW5mby5mYWN0b3JDUlRFeHBvbmVudCkpIHsKICAgICAgICAgICAgIGlmICghbV9leGVjLT5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9uZW50IGZvciBhIHByaW1lIGlu
IFwib3RoXCIgZGljdGlvbmFyeSIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBleHBvbmVu
dCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0b3JG
cm9tSlNPTihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAidCIsIGluZm8uZmFjdG9yQ1JUQ29l
ZmZpY2llbnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5v
dCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rp
b25hcnkiKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgY29lZmZpY2llbnQgZm9yIGEgcHJp
bWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICAgICAgb3RoZXJQcmltZUluZm9zLmFwcGVuZChpbmZvKTsKQEAgLTQ4
NCwxMCArNTE0LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sK
IAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSzo6a2V5RGF0YSgpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBqd2tL
ZXlUeXBlOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCks
ICJrdHkiLCBqd2tLZXlUeXBlKSkgewogICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVx
dWlyZWQgSldLIFwia3R5XCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBcImt0
eVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTQ5Nyw3ICs1MzAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlND
cnlwdG9LCiAgICAgaWYgKGp3a0tleVR5cGUgPT0gIlJTQSIpCiAgICAgICAgIHJldHVybiBrZXlE
YXRhUlNBQ29tcG9uZW50cygpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiVW5zdXBw
b3J0ZWQgSldLIGtleSB0eXBlICIgKyBqd2tLZXlUeXBlKTsKKyAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGtleSB0eXBlICIgKyBqd2tLZXlUeXBlKTsK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtNTYwLDYgKzU5Myw5IEBAIHN0YXRpYyB2b2lk
IGFkZEJvb2xUb0pTT04oRXhlY1N0YXRlKiBleGUKIAogc3RhdGljIHZvaWQgYWRkSldLQWxnb3Jp
dGhtVG9KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IENyeXB0b0tl
eSYga2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3a0FsZ29yaXRobTsKICAgICBz
d2l0Y2ggKGtleS5hbGdvcml0aG1JZGVudGlmaWVyKCkpIHsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OkhNQUM6CkBAIC02NTIsNyArNjg4LDcgQEAgc3RhdGljIHZvaWQgYWRk
SldLQWxnb3JpdGhtVG9KU09OKEV4ZWNTdAogCiAgICAgaWYgKGp3a0FsZ29yaXRobS5pc051bGwo
KSkgewogICAgICAgICAvLyBUaGUgc3BlYyBkb2Vzbid0IGN1cnJlbnRseSB0ZWxsIHdoZXRoZXIg
ZXhwb3J0IHNob3VsZCBmYWlsLCBvciBqdXN0IHNraXAgImFsZyIgKHdoaWNoIGlzIGFuIG9wdGlv
bmFsIGtleSBpbiBKV0spLgotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldLIGFsZ29yaXRo
bSBpZGVudGlmaWVyIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJLZXkgYWxnb3JpdGhtIGFuZCBzaXplIGRvIG5vdCBtYXAgdG8gYW55IEpXSyBh
bGdvcml0aG0gaWRlbnRpZmllciIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjg5
LDEwICs3MjUsMTMgQEAgc3RhdGljIHZvaWQgYWRkVXNhZ2VzVG9KU09OKEV4ZWNTdGF0ZSogZQog
CiBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpYWxpemUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBDcnlwdG9LZXkmIGtleSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBrZXlEYXRhID0ga2V5LmV4cG9ydERhdGEoKTsKICAg
ICBpZiAoIWtleURhdGEpIHsKICAgICAgICAgLy8gVGhpcyBnZW5lcmFsbHkgc2hvdWxkbid0IGhh
cHBlbiBhcyBsb25nIGFzIGFsbCBrZXkgdHlwZXMgaW1wbGVtZW50IGV4cG9ydERhdGEoKSwgYnV0
IGFzIHVuZGVybHlpbmcgbGlicmFyaWVzIHJldHVybiBlcnJvcnMsIHRoZXJlIG1heSBiZSBzb21l
IHJhcmUgZmFpbHVyZSBjb25kaXRpb25zLgotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkNvdWxkbid0IGV4cG9ydCBrZXkgbWF0ZXJpYWwiKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvdWxkbid0IGV4cG9ydCBr
ZXkgbWF0ZXJpYWwiKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAgLTcx
Myw3ICs3NTIsNyBAQCBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpCiAg
ICAgZWxzZSBpZiAoaXM8Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM+KCprZXlEYXRhKSkKICAg
ICAgICAgYnVpbGRKU09ORm9yUlNBQ29tcG9uZW50cyhleGVjLCBkb3duY2FzdDxDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpLCByZXN1bHQpOwogICAgIGVsc2UgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIktleSBkb2Vzbid0IHN1cHBvcnQg
ZXhwb3J0S2V5IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJLZXkgZG9lc24ndCBzdXBwb3J0IGV4cG9ydEtleSIpKTsKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0
YS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDEyICszNiwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgcmVz
dWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKEFycmF5QnVmZmVyKiBidWZmZXIgPSB0b0Fy
cmF5QnVmZmVyKHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIGVsc2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZlclZpZXcgPSB0b0FycmF5
QnVmZmVyVmlldyh2YWx1ZSkpCiAgICAgICAgIHJlc3VsdCA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRp
Y19jYXN0PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygpKSwgYnVmZmVyVmlldy0+
Ynl0ZUxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJPbmx5IEFycmF5QnVmZmVyIGFuZCBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0
cyBjYW4gYmUgcGFzc2VkIGFzIENyeXB0b09wZXJhdGlvbkRhdGEiKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5k
IEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9u
RGF0YSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
OSw3ICsxMDksOSBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dXBncmFkZUVsCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+
dm0oKSk7CisgICAgVk0mIHZtID0gbV9pc29sYXRlZFdvcmxkLT52bSgpOworICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBpZiAoIW1fY29uc3RydWN0b3IpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NCw3ICsx
NDYsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dXBncmFkZUVsCiAKICAgICBF
bGVtZW50KiB3cmFwcGVkRWxlbWVudCA9IEpTRWxlbWVudDo6dG9XcmFwcGVkKHJldHVybmVkRWxl
bWVudCk7CiAgICAgaWYgKCF3cmFwcGVkRWxlbWVudCB8fCB3cmFwcGVkRWxlbWVudCAhPSAmZWxl
bWVudCkgewotICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKCpzdGF0ZSwgIkN1c3RvbSBl
bGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0byB1cGdyYWRlIGFuIGVsZW1lbnQiKTsKKyAgICAg
ICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcigqc3RhdGUsIHNjb3BlLCAiQ3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHdyYXBwZWRFbGVtZW50LT5zZXRDdXN0b21FbGVtZW50SXNSZXNvbHZl
ZCgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRSZWdpc3RyeUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEzICs0MSwxNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBKU09iamVjdCogZ2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTT2JqZWN0JiBwcm90b3R5cGUsIGNvbnN0IElkZW50aWZpZXImIGlkKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IHByb3RvdHlwZS5nZXQoJnN0
YXRlLCBpZCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBpZiAoY2FsbGJhY2suaXNVbmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKCFjYWxsYmFjay5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkEgY3VzdG9tIGVsZW1lbnQgY2FsbGJh
Y2sgbXVzdCBiZSBhIGZ1bmN0aW9uIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkEgY3VzdG9tIGVsZW1lbnQgY2FsbGJhY2sgbXVzdCBiZSBh
IGZ1bmN0aW9uIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJu
IGNhbGxiYWNrLmdldE9iamVjdCgpOwpAQCAtNTYsOCArNTksMTEgQEAgc3RhdGljIEpTT2JqZWN0
KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhYwogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy8jZG9tLWN1c3RvbWVsZW1lbnRyZWdpc3RyeS1kZWZpbmUKIEpTVmFsdWUgSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OmRlZmluZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBB
dG9taWNTdHJpbmcgbG9jYWxOYW1lKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5n
KCZzdGF0ZSktPnRvQXRvbWljU3RyaW5nKCZzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS5oYWRFeGNlcHRpb24oKSkpCkBAIC02NSw3ICs3MSw3IEBAIEpTVmFsdWUgSlNDdXN0b21FbGVt
ZW50UmVnaXN0cnk6OmRlZmluZSgKIAogICAgIEpTVmFsdWUgY29uc3RydWN0b3JWYWx1ZSA9IHN0
YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGlmICghY29uc3RydWN0b3JWYWx1ZS5pc0Nv
bnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlRoZSBzZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIGNvbnN0cnVjdG9yIikpOwogICAgIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yVmFsdWUuZ2V0T2JqZWN0KCk7CiAKICAgICAv
LyBGSVhNRTogVGhyb3cgYSBUeXBlRXJyb3IgaWYgY29uc3RydWN0b3IgZG9lc24ndCBpbmhlcml0
IGZyb20gSFRNTEVsZW1lbnQuCkBAIC03NSwxMSArODEsMTEgQEAgSlNWYWx1ZSBKU0N1c3RvbUVs
ZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0
aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDdXN0b21FbGVtZW50
TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM6Ci0gICAgICAg
IHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxl
bWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBvZiB0aGUgYnVpbHRpbiBlbGVtZW50cyIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBiZSBzYW1lIGFzIG9uZSBvZiB0aGUg
YnVpbHRpbiBlbGVtZW50cyIpKTsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlv
blN0YXR1czo6Tm9IeXBoZW46Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIG11c3QgY29udGFpbiBhIGh5cGhl
biIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIG11c3QgY29udGFpbiBhIGh5cGhlbiIpKTsK
ICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Q29udGFpbnNVcHBl
ckNhc2U6Ci0gICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJDdXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWluIGFuIHVwcGVyIGNhc2UgbGV0
dGVyIikpOworICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIg
Y2FzZSBsZXR0ZXIiKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IENoZWNrIHJlLWVudHJhbmN5
IGhlcmUuCkBAIC04NywyMSArOTMsMjAgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3Ry
eTo6ZGVmaW5lKAogCiAgICAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5JiByZWdpc3RyeSA9IHdyYXBw
ZWQoKTsKICAgICBpZiAocmVnaXN0cnkuZmluZEludGVyZmFjZShsb2NhbE5hbWUpKSB7Ci0gICAg
ICAgIHRocm93Tm90U3VwcG9ydGVkRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRl
ZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSIpKTsK
KyAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSB0
YWcgbmFtZSIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAg
aWYgKHJlZ2lzdHJ5LmNvbnRhaW5zQ29uc3RydWN0b3IoY29uc3RydWN0b3IpKSB7Ci0gICAgICAg
IHRocm93Tm90U3VwcG9ydGVkRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlZmlu
ZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBjbGFzcyIpKTsKKyAgICAg
ICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fu
bm90IGRlZmluZSBtdWx0aXBsZSBjdXN0b20gZWxlbWVudHMgd2l0aCB0aGUgc2FtZSBjbGFzcyIp
KTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCi0gICAgYXV0byYgdm0g
PSBnbG9iYWxPYmplY3QoKS0+dm0oKTsKICAgICBKU1ZhbHVlIHByb3RvdHlwZVZhbHVlID0gY29u
c3RydWN0b3ItPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ICAgICBpZiAoIXByb3RvdHlwZVZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3IncyBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IGNv
bnN0cnVjdG9yJ3MgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IikpOwogICAgIEpTT2JqZWN0
JiBwcm90b3R5cGVPYmplY3QgPSAqYXNPYmplY3QocHJvdG90eXBlVmFsdWUpOwogCiAgICAgUXVh
bGlmaWVkTmFtZSBuYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIEhUTUxOYW1lczo6eGh0bWxOYW1l
c3BhY2VVUkkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMTggKzMzOCwyNCBAQCBKU1Zh
bHVlIGNyZWF0ZURPTUV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4CiAKIHZvaWQgc2V0RE9NRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uQ29kZSBlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZURPTUV4Y2Vw
dGlvbihleGVjLCBlYykpOwogfQogCiB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmICghZWMuY29kZSB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVET01F
eGNlcHRpb24oZXhlYywgZWMuY29kZSwgZWMubWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMuY29kZSwgZWMubWVzc2Fn
ZSkpOwogfQogCiAjdW5kZWYgVFJZX1RPX0NSRUFURV9FWENFUFRJT04KQEAgLTQzMCwxMyArNDM2
LDE2IEBAIHN0YXRpYyBTdHJpbmcgcmFuZ2VFcnJvclN0cmluZyhkb3VibGUgdmEKIAogc3RhdGlj
IGRvdWJsZSBlbmZvcmNlUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSwgZG91YmxlIHgsIGRvdWJsZSBt
aW5pbXVtLCBkb3VibGUgbWF4aW11bSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGQ6Omlz
bmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0pKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBtYXhp
bXVtKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICB4ID0gdHJ1bmMoeCk7CiAgICAg
aWYgKHggPCBtaW5pbXVtIHx8IHggPiBtYXhpbXVtKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBtYXhpbXVtKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11
bSwgbWF4aW11bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIHg7CkBA
IC00NzUsNiArNDg0LDkgQEAgc3RydWN0IEludFR5cGVMaW1pdHM8dWludDE2X3Q+IHsKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z
aWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAiU2hvdWxkIG9u
bHkgYmUgdXNlZCBmb3Igc2lnbmVkIGludGVncmFsIHR5cGVzIik7CiAKICAgICB0eXBlZGVmIElu
dFR5cGVMaW1pdHM8VD4gTGltaXRzVHJhaXQ7CkBAIC00ODcsNyArNDk5LDcgQEAgc3RhdGljIGlu
bGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUmIAogICAgICAgICBjYXNlIE5vcm1hbENvbnZl
cnNpb246CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFbmZvcmNlUmFuZ2U6Ci0g
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2Fz
ZSBDbGFtcDoKICAgICAgICAgICAgIHJldHVybiBkIDwgTGltaXRzVHJhaXQ6Om1pblZhbHVlID8g
TGltaXRzVHJhaXQ6Om1pblZhbHVlIDogTGltaXRzVHJhaXQ6Om1heFZhbHVlOwpAQCAtNTIxLDYg
KzUzMyw5IEBAIHN0YXRpYyBpbmxpbmUgVCB0b1NtYWxsZXJJbnQoRXhlY1N0YXRlJiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogc3RhdGljIGlubGluZSBUIHRvU21hbGxlclVJbnQoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24pCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dW5zaWduZWQ8VD46OnZhbHVlICYmIHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAiU2hvdWxk
IG9ubHkgYmUgdXNlZCBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVk
ZWYgSW50VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTUzMyw3ICs1NDgsNyBAQCBzdGF0
aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmCiAgICAgICAgIGNhc2UgTm9ybWFs
Q29udmVyc2lvbjoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihkKTsKICAgICAg
ICAgY2FzZSBFbmZvcmNlUmFuZ2U6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBDbGFtcDoKICAgICAgICAgICAgIHJldHVybiBMaW1p
dHNUcmFpdDo6bWF4VmFsdWU7CkBAIC03NjIsNiArNzc3LDkgQEAgRE9NV2luZG93JiBmaXJzdERP
TVdpbmRvdyhFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuQWNjZXNzRG9j
dW1lbnQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBEb2N1bWVudCogdGFyZ2V0RG9jdW1lbnQsIFNl
Y3VyaXR5UmVwb3J0aW5nT3B0aW9uIHJlcG9ydGluZ09wdGlvbikKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoIXRhcmdldERvY3VtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc3
Miw3ICs3OTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY2FuQWNjZXNzRG9jdW1lbnQoSlNDCiAK
ICAgICBzd2l0Y2ggKHJlcG9ydGluZ09wdGlvbikgewogICAgIGNhc2UgVGhyb3dTZWN1cml0eUVy
cm9yOgotICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRlLCB0YXJnZXREb2N1bWVudC0+
ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZSkpOworICAg
ICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKnN0YXRlLCBzY29wZSwgdGFyZ2V0RG9jdW1lbnQtPmRv
bVdpbmRvdygpLT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmUpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBMb2dTZWN1cml0eUVycm9yOgogICAgICAgICBwcmludEVycm9y
TWVzc2FnZUZvckZyYW1lKHRhcmdldERvY3VtZW50LT5mcmFtZSgpLCB0YXJnZXREb2N1bWVudC0+
ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZSkpOwpAQCAt
Nzk5LDkgKzgxNyw5IEBAIGJvb2wgQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1QK
ICAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCAmdGFyZ2V0LT5k
b2N1bWVudCgpLCBMb2dTZWN1cml0eUVycm9yKTsKIH0KICAgICAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSB0aHJvd1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRocm93VHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBlcnJv
ck1lc3NhZ2UpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIGVy
cm9yTWVzc2FnZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50TXVzdEJlKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFy
Z3VtZW50TmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lKQpAQCAtODM2LDc1ICs4NTQsNzUgQEAgdm9pZCByZXBvcnREZXByZWNhdGVkU2V0dGVy
RXJyb3IoSlNDOjpFeAogICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkRlcHJlY2F0ZWQgYXR0ZW1w
dCB0byBzZXQgcHJvcGVydHkgJyIsIGF0dHJpYnV0ZU5hbWUsICInIG9uIGEgbm9uLSIsIGludGVy
ZmFjZU5hbWUsICIgb2JqZWN0LiIpKTsKIH0KIAotdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9y
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKK3ZvaWQgdGhyb3dO
b3RTdXBwb3J0ZWRFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5oYWRFeGNl
cHRpb24oKSk7CiAgICAgU3RyaW5nIG1lc3NhZ2VTdHJpbmcobWVzc2FnZSk7Ci0gICAgc3RhdGUu
dm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIE5P
VF9TVVBQT1JURURfRVJSLCAmbWVzc2FnZVN0cmluZykpOworICAgIHRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIE5PVF9TVVBQT1JURURfRVJS
LCAmbWVzc2FnZVN0cmluZykpOwogfQogCi12b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCB0aHJvd0ludmFs
aWRTdGF0ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlv
bigpKTsKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdlKTsKLSAgICBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJ
RF9TVEFURV9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICZt
ZXNzYWdlU3RyaW5nKSk7CiB9CiAKLXZvaWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCB0aHJvd1NlY3VyaXR5RXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5oYWRFeGNlcHRpb24oKSk7Ci0g
ICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigm
c3RhdGUsIFNFQ1VSSVRZX0VSUiwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmc3RhdGUsIFNFQ1VSSVRZX0VSUiwgbWVzc2Fn
ZSkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBj
aGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgs
IGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVz
KQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBhcHBlbmRBcmd1bWVudE11c3RC
ZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVudE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgZnVuY3Rpb25OYW1lKTsKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIm9uZSBvZjog
Iik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRWYWx1ZXMpOwotICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJn
dW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWdu
ZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50
SW5kZXgsIGFyZ3VtZW50TmFtZSwgaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoImEgZnVuY3Rpb24iKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAotSlNDOjpF
bmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25z
dCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICBhcHBlbmRBcmd1bWVudE11c3RCZShidWlsZGVyLCBhcmd1bWVudEluZGV4LCBhcmd1bWVu
dE5hbWUsIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKTsKICAgICBidWlsZGVy
LmFwcGVuZExpdGVyYWwoImFuIGluc3RhbmNlIG9mICIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGV4
cGVjdGVkVHlwZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBidWlsZGVy
LnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUs
IGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLXZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQordm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAg
dGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBBcnJheSBlbGVtZW50
IHR5cGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlIikpOwogfQogCi12b2lkIHRocm93QXR0cmlidXRl
VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQor
dm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkKIHsKLSAgICB0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0
cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAiLCBleHBlY3Rl
ZFR5cGUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIG1ha2VTdHJpbmcoIlRo
ZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgYXR0cmlidXRlIG11c3Qg
YmUgYW4gaW5zdGFuY2Ugb2YgIiwgZXhwZWN0ZWRUeXBlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSkKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRV
bmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKCZzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoJnN0YXRlLCBtYWtlU3RyaW5nKGludGVy
ZmFjZU5hbWUsICIgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1
bmF2YWlsYWJsZSIpKSk7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmc3RhdGUsIHNjb3BlLCBj
cmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNlTmFtZSwgIiBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikp
KTsKIH0KIAotdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSkKK3ZvaWQgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CisgICAgdGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlZhbHVlIGlzIG5vdCBhIHNlcXVlbmNlIikpOwog
fQogCi12b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSYgc3RhdGUpCit2b2lk
IHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlRo
ZSBwcm92aWRlZCB2YWx1ZSBpcyBub24tZmluaXRlIikpOworICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1maW5p
dGUiKSk7CiB9CiAKIFN0cmluZyBtYWtlR2V0dGVyVHlwZUVycm9yTWVzc2FnZShjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQpAQCAtOTEyLDE0ICs5
MzAsMTQgQEAgU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IAogICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1dGVOYW1l
LCAiIGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRlcmZhY2VO
YW1lKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0dldHRlclR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGF0dHJpYnV0ZU5hbWUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9y
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hh
ciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsKLSAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGlu
dGVyZmFjZU5hbWUsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cigmc3RhdGUsIHNjb3BlLCBtYWtlR2V0dGVyVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1l
LCBhdHRyaWJ1dGVOYW1lKSk7CiB9CiAKLWJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBh
dHRyaWJ1dGVOYW1lKQorYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIg
c2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUp
KTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIG1ha2VTdHJpbmcoIlRoZSAiLCBp
bnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgc2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTkyOCw5ICs5NDYsOSBAQCBTdHJpbmcgbWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdl
KGNvbnN0IGNoCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNhbiBvbmx5IGNhbGwgIiwgaW50ZXJm
YWNlTmFtZSwgJy4nLCBmdW5jdGlvbk5hbWUsICIgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFj
ZU5hbWUpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNUeXBlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUpCitFbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNUeXBlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKHN0YXRlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rp
b25OYW1lKSk7CisgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVRo
aXNUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSkpOwogfQogCiB2
b2lkIGNhbGxGdW5jdGlvbldpdGhDdXJyZW50QXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU09iamVjdCYgdGhpc09iamVjdCwgSlNDOjpKU0Z1bmN0aW9uJiBmdW5jdGlvbikK
QEAgLTk1NSw3ICs5NzMsOSBAQCB2b2lkIERPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0Ojp2
aXNpCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxUaHJvd1R5cGVF
cnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvciIpKTsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDb25zdHJ1
Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvciIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVsbCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjUgKzExMywyNSBAQCBE
T01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEpTQzo6RXhlY1N0YXRlCiBXRUJDT1JFX0VYUE9SVCBK
U0M6OkVuY29kZWRKU1ZhbHVlIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoSlND
OjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRy
aWJ1dGVOYW1lKTsKIAotdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRl
JiwgY29uc3QgY2hhciogbWVzc2FnZSk7Ci12b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlND
OjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKLXZvaWQgdGhyb3dBcnJheUVsZW1l
bnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOwotV0VCQ09SRV9FWFBP
UlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci1XRUJDT1JF
X0VYUE9SVCBib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JF
X0VYUE9SVCB2b2lkIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7Ci12
b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7Ci0KLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVu
dE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgs
IGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVz
KTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
SlNDOjpFeGVjU3RhdGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1
bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgs
IGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7
Ci1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0VW5hdmFpbGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUpOwordm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogbWVzc2FnZSk7Cit2b2lkIHRocm93SW52YWxpZFN0
YXRlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBt
ZXNzYWdlKTsKK3ZvaWQgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OlRocm93U2NvcGUmKTsKK3ZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBj
b25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpOworV0VC
Q09SRV9FWFBPUlQgdm9pZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpUaHJvd1Njb3BlJik7CitXRUJDT1JFX0VYUE9SVCBib29sIHRocm93U2V0dGVyVHlwZUVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lk
IHRocm93Tm9uRmluaXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3Bl
Jik7Cit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dT
Y29wZSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFy
Z3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OlRocm93U2NvcGUmLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBh
cmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhy
b3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIHVu
c2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hh
ciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0
IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUpOwogCiBTdHJpbmcg
bWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29u
c3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiBTdHJpbmcgbWFrZVRoaXNUeXBlRXJyb3JNZXNzYWdl
KGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwog
Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9y
KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciog
YXR0cmlidXRlTmFtZSk7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93
VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRK
U1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Nj
b3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFt
ZSk7CitXRUJDT1JFX0VYUE9SVCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSk7CiAKIFdFQkNPUkVfRVhQT1JUIEpTQzo6
U3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBjb25z
dCBKU0M6OkNsYXNzSW5mbyopOwogV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUqIGNhY2hl
RE9NU3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJ1Y3R1cmUqLCBjb25zdCBK
U0M6OkNsYXNzSW5mbyopOwpAQCAtNDkwLDkgKzQ5MCwxMiBAQCBpbmxpbmUgaW50MzJfdCBmaW5p
dGVJbnQzMlZhbHVlKEpTQzo6SlNWCiAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVj
dCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEzIG9mIHRoZSBXZWJJREwgc3Bl
Yy4KIGlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUmIGV4
ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkKIHsKKyAgICBKU0M6OlZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAg
ICBpZiAoIW9iamVjdCkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC01MDEsNyArNTA0LDcgQEAgaW5saW5lIEpTQzo6SlNP
YmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHRocm93U2Vx
dWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTcxOCwyNSAr
NzIxLDMzIEBAIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGRvdWIKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0
ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7
CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPj4oKTsK
ICAgICB9CiAKICAgICBWZWN0b3I8UmVmUHRyPFQ+PiByZXN1bHQ7Ci0gICAgZm9yRWFjaEluSXRl
cmFibGUoJmV4ZWMsIHZhbHVlLCBbJnJlc3VsdF0oSlNDOjpWTSYsIEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIGpzVmFsdWUpIHsKKyAgICBmb3JFYWNoSW5JdGVyYWJsZSgmZXhl
YywgdmFsdWUsIFsmcmVzdWx0XShKU0M6OlZNJiB2bSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0M6OkpTVmFsdWUganNWYWx1ZSkgeworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICAgICAgaWYgKGpzVmFsdWUuaW5oZXJpdHMoSlNUOjppbmZvKCkp
KQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChKU1Q6OnRvV3JhcHBlZChqc1ZhbHVlKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpzdGF0
ZSk7CisgICAgICAgICAgICB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcigqc3RhdGUsIHNjb3Bl
KTsKICAgICB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1Zh
bHVlIHZhbHVlKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMpOworICAgICAgICB0aHJv
d1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIFZlY3RvcjxU
PigpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ1LDcgKzQ2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQogICAgIHsKLSAgICAgICAgSlNDOjp0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgY29uc3RydWN0b3IiKSk7CisgICAg
ICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgY29uc3RydWN0b3IiKSk7CiAgICAgICAgIHJldHVy
biBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0M6OmpzTnVsbCgpKTsKICAgICB9CiAKQEAgLTIyNiw4
ICsyMjksMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6RQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0J1
aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU09iamVjdCogb2JqZWN0KQogeworICAgIEpTQzo6Vk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
aWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0
aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Ioc3RhdGUsIGluZm8oKS0+Y2xhc3NOYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFp
bGFibGVFcnJvcihzdGF0ZSwgc2NvcGUsIGluZm8oKS0+Y2xhc3NOYW1lKTsKICAgICByZXR1cm4g
Y2FsbENvbnN0cnVjdG9yKHN0YXRlLCAqb2JqZWN0KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Myw5ICs3MywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgRW5hYmxlSWZGbG9hCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gaW5saW5lIFQqIGNvbnZlcnRXcmFw
cGVyVHlwZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSXNOdWxs
YWJsZSBpc051bGxhYmxlKQogeworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgVCogb2JqZWN0ID0gSlNU
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmICghb2JqZWN0ICYmIChpc051bGxhYmxlID09IElz
TnVsbGFibGU6Ok5vIHx8ICF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSkKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29w
ZSk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIApAQCAtMjc1LDkgKzI3NywxMSBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8dWludDY0X3Q+IDogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQ29udmVydGVyPFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRp
bmdfcG9pbnQ8VD46OnZhbHVlPjo6dHlwZT4gOiBEZWZhdWx0Q29udmVydGVyPFQ+IHsKICAgICBz
dGF0aWMgVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKICAgICB7CisgICAgICAgIEpTQzo6Vk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUudG9OdW1iZXIoJnN0YXRlKTsKICAg
ICAgICAgaWYgKGFsbG93ID09IFNob3VsZEFsbG93Tm9uRmluaXRlOjpObyAmJiBVTkxJS0VMWSgh
c3RkOjppc2Zpbml0ZShudW1iZXIpKSkKLSAgICAgICAgICAgIHRocm93Tm9uRmluaXRlVHlwZUVy
cm9yKHN0YXRlKTsKKyAgICAgICAgICAgIHRocm93Tm9uRmluaXRlVHlwZUVycm9yKHN0YXRlLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihudW1iZXIpOwogICAgIH0KIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01JdGVyYXRvci5oCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IENhbm9uLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMzAsOSArMTMxLDEyIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgaXRlcmF0
b3JGb3JFYWNoKEpTQzoKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgaXRlcmF0b3JDcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBJdGVyYXRpb25L
aW5kIGtpbmQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgYXV0byB3cmFwcGVyID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTV3JhcHBlcio+KHN0YXRl
LnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZXIpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1l
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwgcHJvcGVydHlOYW1lKTsKICAg
ICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0ID0gKndyYXBwZXItPmdsb2JhbE9iamVj
dCgpOwogICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShKU0RPTUl0ZXJhdG9yPEpTV3Jh
cHBlcj46OmNyZWF0ZShnbG9iYWxPYmplY3Qudm0oKSwgZ2V0RE9NU3RydWN0dXJlPEpTRE9NSXRl
cmF0b3I8SlNXcmFwcGVyPj4oZ2xvYmFsT2JqZWN0LnZtKCksIGdsb2JhbE9iamVjdCksICp3cmFw
cGVyLCBraW5kKSk7CiB9CkBAIC0xODAsOSArMTg0LDEyIEBAIGFwcGVuZEZvckVhY2hBcmd1bWVu
dHMoSlNDOjpFeGVjU3RhdGUmIHMKIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4KIEpTQzo6
RW5jb2RlZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgY2hhciogcHJvcGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIHdy
YXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkp
OwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBKU1dy
YXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOwogCiAgICAgSlNDOjpKU1Zh
bHVlIGNhbGxiYWNrID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwpAQCAtMTkwLDcgKzE5Nyw3IEBAIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgaXRlcmF0b3JGb3JFYWNoKEpTQzoKICAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRh
OwogICAgIEpTQzo6Q2FsbFR5cGUgY2FsbFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGNhbGxiYWNr
LCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgYXV0byBpdGVyYXRvciA9IHdy
YXBwZXItPndyYXBwZWQoKS5jcmVhdGVJdGVyYXRvcigpOwogICAgIHdoaWxlIChhdXRvIHZhbHVl
ID0gaXRlcmF0b3IubmV4dCgpKSB7CkBAIC0yMjYsOSArMjMzLDEyIEBAIEpTQzo6SlNWYWx1ZSBK
U0RPTUl0ZXJhdG9yPEpTV3JhcHBlcj46Om4KIHRlbXBsYXRlPHR5cGVuYW1lIEpTV3JhcHBlcj4K
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RPTUl0ZXJhdG9yUHJvdG90eXBl
PEpTV3JhcHBlcj46Om5leHQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIEpTQzo6Vk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgYXV0byBpdGVyYXRvciA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUl0ZXJh
dG9yPEpTV3JhcHBlcj4qPihzdGF0ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRlcmF0b3Ip
Ci0gICAgICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0
ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkgb24gYSBub24tSXRlcmF0b3Igb2Jq
ZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBuZXh0KCkgb24gYSBu
b24tSXRlcmF0b3Igb2JqZWN0IikpKTsKIAogICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29k
ZShpdGVyYXRvci0+bmV4dCgqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNET01XaW5k
b3dXZWJLaXQoCiAKIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVz
dHJpY3RlZEFjY2VzcyhKU0RPTVdpbmRvdyogdGhpc09iamVjdCwgRnJhbWUqIGZyYW1lLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBXZSBkb24n
dCB3YW50IGFueSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3NlIiBhbmQgImNsb3NlZCIgb24g
YSBmcmFtZWxlc3Mgd2luZG93CiAgICAgLy8gKGkuZS4gb25lIHdob3NlIHBhZ2UgZ290IGNsb3Nl
ZCwgb3Igd2hvc2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAvLyBGSVhNRTogVGhpcyBoYW5k
bGluZyBmb3IgZnJhbWVsZXNzIHdpbmRvd3MgZHVwbGljYXRlcyBzaW1pbGFyIGJlaGF2aW91ciBm
b3IgY3Jvc3Mtb3JpZ2luCkBAIC0xMzUsNyArMTM4LDcgQEAgc3RhdGljIGJvb2wganNET01XaW5k
b3dHZXRPd25Qcm9wZXJ0eVNsbwogICAgICAgICAvLyBGb3IgYW55IG90aGVyIGVudHJpZXMgaW4g
dGhlIHN0YXRpYyBwcm9wZXJ0eSB0YWJsZSwgZGVueSBhY2Nlc3MuIChFYXJseSByZXR1cm4gYWxz
byBwcmV2ZW50cwogICAgICAgICAvLyBuYW1lZCBnZXR0ZXIgZnJvbSByZXR1cm5pbmcgZnJhbWVz
IHdpdGggbWF0Y2hpbmcgbmFtZXMgLSB0aGlzIHNlZW1zIGEgbGl0dGxlIHF1ZXN0aW9uYWJsZSwg
c2VlCiAgICAgICAgIC8vIEZJWE1FIGNvbW1lbnQgb24gcHJvdG90eXBlIHNlYXJjaCBiZWxvdy4p
Ci0gICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAg
ICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAg
ICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTQ5LDcgKzE1Miw3IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG8K
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGhyb3dTZWN1cml0eUVycm9yKCpl
eGVjLCBlcnJvck1lc3NhZ2UpOworICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgc2NvcGUs
IGVycm9yTWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTIzMCw2ICsyMzMsOSBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUluCiAKIGJvb2wgSlNET01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU0RPTVdpbmRvdyo+KGNlbGwpOwogICAgIGlmICghdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0Myw3ICsyNDksNyBAQCBi
b29sIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHB1dFJlc3VsdDsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQot
ICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
IHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQzNCw4ICs0NDAsMTEgQEAgaW5saW5lIEpTVmFs
dWUgRGlhbG9nSGFuZGxlcjo6cmV0dXJuVmFsdQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93
TW9kYWxEaWFsb2coRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgU3RyaW5nIHVy
bFN0cmluZyA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soJnN0YXRlLCBz
dGF0ZS5hcmd1bWVudCgwKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNDU1
LDggKzQ2NCwxMSBAQCBKU1ZhbHVlIEpTRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coRXhlCiAK
IHN0YXRpYyBKU1ZhbHVlIGhhbmRsZVBvc3RNZXNzYWdlKERPTVdpbmRvdyYgaW1wbCwgRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1
bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgTWVzc2FnZVBvcnRBcnJheSBtZXNzYWdlUG9y
dHM7CiAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlcnM7CkBAIC01MDIsOCArNTE0LDEx
IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNTdGEKIAogSlNWYWx1ZSBK
U0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHdyYXBwZWQo
KS5kb2N1bWVudCgpID8gd3JhcHBlZCgpLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3Js
ZCgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kpOwpAQCAtNTI0LDggKzUzOSwxMSBAQCBKU1ZhbHVl
IEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6
OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBlZCgpLmRvY3VtZW50
KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxs
cHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVk
dWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGNvbnRl
bnRTZWN1cml0eVBvbGljeSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rh
dGFDdWVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGF0YUN1ZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDEwICs0
OSwxMyBAQCB2b2lkIEpTRGF0YUN1ZTo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNEYXRhQ3VlKEV4ZWNTdGF0ZSYgZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NF
UlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBkb3VibGUgc3RhcnRU
aW1lKGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9OdW1iZXIoJmV4ZWMpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy5oYWRFeGNlcHRpb24oKSkpCkBAIC02NCwxMyArNjcsMTMgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIkRhdGFDdWUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFi
bGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFDdWUiKTsKIAogICAgIFN0cmluZyB0eXBlOwogI2lm
IEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogICAgIGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSA+IDMp
IHsKICAgICAgICAgaWYgKCFleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDMpLmlzU3RyaW5nKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAzLCAidHlwZSIs
ICJEYXRhQ3VlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDMsICJ0eXBlIiwgIkRhdGFDdWUiLCBu
dWxscHRyLCAiRE9NU3RyaW5nIik7CiAgICAgICAgIHR5cGUgPSBleGVjLnVuY2hlY2tlZEFyZ3Vt
ZW50KDMpLmdldFN0cmluZygmZXhlYyk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE3OSw5ICsxNzksMTIgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVj
U3RhdAogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUs
IEpTVmFsdWUgdmFsdWUsIFJlZlB0cjxET01XaW5kb3c+JiByZXN1bHQpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgYXV0byogd2luZG93ID0gSlNET01XaW5kb3c6OnRvV3JhcHBlZCgqc3RhdGUsIHZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXdpbmRvdykgJiYgIXZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgIkRpY3Rpb25hcnkgbWVt
YmVyIGlzIG5vdCBvZiB0eXBlIFdpbmRvdyIpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgIkRpY3Rpb25hcnkgbWVtYmVyIGlzIG5vdCBvZiB0eXBlIFdpbmRvdyIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHJlc3VsdCA9IHdpbmRvdzsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzAsMTIgKzEzMCwxNSBAQCBK
U1ZhbHVlIEpTRG9jdW1lbnQ6OmFwcGVuZChFeGVjU3RhdGUmIHN0CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIHRvdWNoTGlzdCA9IFRvdWNoTGlzdDo6
Y3JlYXRlKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRlLmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CiAgICAgICAgIGF1dG8qIGl0ZW0gPSBKU1RvdWNoOjp0b1dyYXBwZWQoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIGks
ICJ0b3VjaGVzIiwgIkRvY3VtZW50IiwgImNyZWF0ZVRvdWNoTGlzdCIsICJUb3VjaCIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihz
dGF0ZSwgc2NvcGUsIGksICJ0b3VjaGVzIiwgIkRvY3VtZW50IiwgImNyZWF0ZVRvdWNoTGlzdCIs
ICJUb3VjaCIpKTsKIAogICAgICAgICB0b3VjaExpc3QtPmFwcGVuZCgqaXRlbSk7CiAgICAgfQpA
QCAtMTQ1LDggKzE0OCwxMSBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdChF
eGVjCiAKIEpTVmFsdWUgSlNEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dChKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgNCkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICBhdXRvIGNvbnRleHRJZCA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDE3ICs0MywyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNGaWxlKEV4ZWNTdGF0ZSYg
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byogY29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9N
Q29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY29uc3RydWN0
b3IpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGNvbnN0cnVjdG9y
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKGV4ZWMsICJGaWxlIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgc2NvcGUsICJGaWxlIik7CiAg
ICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBKU1ZhbHVlIGFyZyA9IGV4
ZWMuYXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAwLCAiZmlsZUJpdHMiLCAiRmls
ZSIsIG51bGxwdHIsICJzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcihleGVjLCBzY29wZSwgMCwgImZpbGVCaXRzIiwgIkZpbGUiLCBudWxscHRyLCAic2Vx
dWVuY2UiKTsKIAogICAgIHVuc2lnbmVkIGJsb2JQYXJ0c0xlbmd0aCA9IDA7CiAgICAgSlNPYmpl
Y3QqIGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZShleGVjLCBhcmcsIGJsb2JQYXJ0c0xlbmd0aCk7
CkBAIC02Myw3ICs2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlMKIAogICAgIGFyZyA9IGV4ZWMuYXJndW1lbnQoMSk7CiAgICAgaWYgKGFyZy5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAxLCAiZmls
ZW5hbWUiLCAiRmlsZSIsIG51bGxwdHIsICJET01TdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgc2NvcGUsIDEsICJmaWxlbmFtZSIsICJGaWxlIiwg
bnVsbHB0ciwgIkRPTVN0cmluZyIpOwogCiAgICAgU3RyaW5nIGZpbGVuYW1lID0gYXJnLnRvV1RG
U3RyaW5nKCZleGVjKS5yZXBsYWNlKCcvJywgJzonKTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRp
b24oKSkKQEAgLTc2LDcgKzc5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKUwogICAgIGlmICghYXJnLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgSlNP
YmplY3QqIGZpbGVQcm9wZXJ0eUJhZ09iamVjdCA9IGFyZy5nZXRPYmplY3QoKTsKICAgICAgICAg
aWYgKCFmaWxlUHJvcGVydHlCYWdPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihleGVjLCAyLCAib3B0aW9ucyIsICJGaWxlIiwgbnVsbHB0ciwgIkZpbGVQ
cm9wZXJ0eUJhZyIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIDIsICJvcHRpb25zIiwgIkZpbGUiLCBudWxscHRyLCAiRmlsZVByb3BlcnR5
QmFnIik7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBkaWN0aW9uYXJ5IHdyYXBwZXIgZnJvbSB0
aGUgaW5pdGlhbGl6ZXIgb2JqZWN0LgogICAgICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeSgm
ZXhlYywgZmlsZVByb3BlcnR5QmFnT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xs
ZWN0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0LDggKzEwNCwxMSBAQCBib29sIEpT
SFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlCiAKIEpTVmFsdWUgSlNIVE1MQWxsQ29s
bGVjdGlvbjo6aXRlbShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3Rh
dGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcg
YXJndW1lbnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUp
OwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KCphcmd1bWVu
dC5pbXBsKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFz
RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTcxLDggKzcxLDExIEBAIHN0YXRpYyB2b2lkIGdldDNEQ29udGV4
dEF0dHJpYnV0ZXMoRXhlY1MKIAogSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250
ZXh0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50
JiBjYW52YXMgPSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwpAQCAtOTQsOCArOTcs
MTEgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0KAogCiBKU1ZhbHVl
IEpTSFRNTENhbnZhc0VsZW1lbnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMgPSB3cmFw
cGVkKCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDctMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Miw2ICsxNTIsOSBAQCBzdGF0aWMg
RG9jdW1lbnQqIGZpbmRDYWxsaW5nRG9jdW1lbnQoRXhlCiAKIEpTVmFsdWUgSlNIVE1MRG9jdW1l
bnQ6Om9wZW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIEZvciBj
b21wYXRpYmlsaXR5IHdpdGggb3RoZXIgYnJvd3NlcnMsIHBhc3Mgb3BlbiBjYWxscyB3aXRoIG1v
cmUgdGhhbiAyIHBhcmFtZXRlcnMgdG8gdGhlIHdpbmRvdy4KICAgICBpZiAoc3RhdGUuYXJndW1l
bnRDb3VudCgpID4gMikgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZy
YW1lKCkpIHsKQEAgLTE2MSw3ICsxNjQsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpvcGVu
KEV4ZWNTdGF0ZSYgCiAgICAgICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAg
ICAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSA6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CiAgICAgICAgICAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBKU0M6OmNhbGwoJnN0YXRlLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB3cmFwcGVyLCBBcmdMaXN0KCZzdGF0ZSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDMw
ICs0MywzMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTSFRNTEVsZW1lbnQo
RXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiBqc0NvbnN0cnVjdG9y
ID0ganNDYXN0PERPTUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAgICAgQVNT
RVJUKGpzQ29uc3RydWN0b3IpOwogCiAgICAgYXV0byogY29udGV4dCA9IGpzQ29uc3RydWN0b3It
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJl
dHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJy
b3IoZXhlYywgIkhUTUxFbGVtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgc2NvcGUsICJIVE1M
RWxlbWVudCIpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogCiAgICAgYXV0
byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwogCiAgICAgYXV0byog
d2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAgICAgaWYgKCF3aW5kb3cpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQg
aXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJuZXcudGFy
Z2V0IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIikpOwogCiAgICAg
YXV0byogcmVnaXN0cnkgPSB3aW5kb3ctPmN1c3RvbUVsZW1lbnRSZWdpc3RyeSgpOwogICAgIGlm
ICghcmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJ
SUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3Ry
dWN0b3IiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJuZXcudGFyZ2V0IGlzIG5vdCBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IGNv
bnN0cnVjdG9yIikpOwogCi0gICAgVk0mIHZtID0gZXhlYy52bSgpOwogICAgIEpTVmFsdWUgbmV3
VGFyZ2V0VmFsdWUgPSBleGVjLnRoaXNWYWx1ZSgpOwogICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQg
PSBuZXdUYXJnZXRWYWx1ZS5nZXRPYmplY3QoKTsKICAgICBhdXRvKiBlbGVtZW50SW50ZXJmYWNl
ID0gcmVnaXN0cnktPmZpbmRJbnRlcmZhY2UobmV3VGFyZ2V0KTsKICAgICBpZiAoIWVsZW1lbnRJ
bnRlcmZhY2UpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBBU0NJSUxp
dGVyYWwoIm5ldy50YXJnZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJuZXcudGFyZ2V0IGRvZXMgbm90IGRlZmluZSBhIGN1c3RvbSBlbGVtZW50IikpOwogCiAgICAg
aWYgKCFlbGVtZW50SW50ZXJmYWNlLT5pc1VwZ3JhZGluZ0VsZW1lbnQoKSkgewogICAgICAgICBh
dXRvKiBnbG9iYWxPYmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKQEAgLTg0
LDcgKzg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAg
ICAgRWxlbWVudCogZWxlbWVudFRvVXBncmFkZSA9IGVsZW1lbnRJbnRlcmZhY2UtPmxhc3RFbGVt
ZW50SW5Db25zdHJ1Y3Rpb25TdGFjaygpOwogICAgIGlmICghZWxlbWVudFRvVXBncmFkZSkgewot
ICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0cyBvd24gY29uc3RyY3V0b3Ig
ZHVyaW5nIHVwZ3JhZGVzIikpOworICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBpbnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50
IGluc2lkZSBpdHMgb3duIGNvbnN0cmN1dG9yIGR1cmluZyB1cGdyYWRlcyIpKTsKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC01Niw4ICs1NiwxMSBAQCBib29sIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246Om5hbWVHCiAKIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEpTVmFsdWUg
dmFsdWUgPSBuYW1lZEl0ZW1zKHN0YXRlLCB0aGlzLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUo
JnN0YXRlKSkpOwogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8ganNOdWxsKCkgOiB2
YWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzUsNTQgKzM1LDcyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU0hU
TUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsK
ICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKIAogICAgIHJldHVybiBqc051bWJlcihpbnB1dC5zZWxlY3Rpb25TdGFydCgpKTsK
IH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rp
b24oKSkKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpbnB1dC5zZXRTZWxlY3Rpb25TdGFydCh2YWx1
ZS50b0ludDMyKCZzdGF0ZSkpOwogfQogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2Vs
ZWN0aW9uRW5kKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBI
VE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhh
dmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVy
biBqc051bWJlcihpbnB1dC5zZWxlY3Rpb25FbmQoKSk7CiB9CiAKIHZvaWQgSlNIVE1MSW5wdXRF
bGVtZW50OjpzZXRTZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgp
OwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAog
ICAgIGlucHV0LnNldFNlbGVjdGlvbkVuZCh2YWx1ZS50b0ludDMyKCZzdGF0ZSkpOwogfQogCiBK
U1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1
dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgm
c3RhdGUsIGlucHV0LnNlbGVjdGlvbkRpcmVjdGlvbigpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1
dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3
cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkxLDEyICsxMDksMTUgQEAgdm9p
ZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcgogCiBKU1ZhbHVlIEpTSFRNTElu
cHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAg
ICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFp
bnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAK
ICAgICBpbnQgc3RhcnQgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0
ZSk7CiAgICAgaW50IGVuZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoJnN0
YXRlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTUsOSArNTUsMTIgQEAgSlNWYWx1
ZSBKU0hpc3Rvcnk6OnN0YXRlKEV4ZWNTdGF0ZSYgc3RhdAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6
cHVzaFN0YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGFy
Z0NvdW50ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3Vu
dCA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksIDAsIDApOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTg2LDkgKzg5LDEyIEBAIEpTVmFsdWUg
SlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiAKIAogSlNWYWx1ZSBKU0hpc3Rvcnk6OnJl
cGxhY2VTdGF0ZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBh
cmdDb3VudCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoVU5MSUtFTFkoYXJnQ291
bnQgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSgmc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLCAwLCAwKTsK
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEy
IE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4ay5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtNDcsOCArNDgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgU3RyaW5nIG5hbWUgPSBzdGF0ZS5hcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52
YWx1ZSgmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTU2LDcgKzYw
LDcgQEAgSlNWYWx1ZSBKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZQogCiAgICAgSlNW
YWx1ZSBvcHRpb25zVmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgxKTsKICAgICBpZiAoIW9wdGlvbnNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFvcHRpb25zVmFsdWUuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgIk5vdCBhbiBvYmplY3QuIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiTm90IGFuIG9iamVj
dC4iKTsKIAogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIGF1dG9JbmNyZW1lbnQg
PSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0
ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNC0yMDA4LCAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ2LDEwICs0NiwxMyBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNJbWFnZUNvbnN0cnVjdG9yOjpwCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNJ
bWFnZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU0ltYWdlQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNJ
bWFnZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBqc0NvbnN0cnVjdG9yLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKHN0YXRl
LCAiSW1hZ2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBpcyB1bmF2YWlsYWJsZSIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKHN0YXRlLCAiSW1hZ2UgY29uc3RydWN0b3IgYXNzb2NpYXRlZCBkb2N1bWVudCBp
cyB1bmF2YWlsYWJsZSIpKTsKIAogICAgIC8vIENhbGxpbmcgdG9KUyBvbiB0aGUgZG9jdW1lbnQg
Y2F1c2VzIHRoZSBKUyBkb2N1bWVudCB3cmFwcGVyIHRvIGJlCiAgICAgLy8gYWRkZWQgdG8gdGhl
IHdpbmRvdyBvYmplY3QuIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCBKU0RvY3VtZW50Ojp2
aXNpdApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBKU0xvY2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3RE
ZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEZyYW1lKiBmcmFtZSA9IHdyYXBw
ZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgc2xvdC5zZXRVbmRlZmlu
ZWQoKTsKQEAgLTU1LDEzICs1OCwxNiBAQCBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5
U2xvdERlbGVnCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHRocm93U2VjdXJp
dHlFcnJvcigqZXhlYywgbWVzc2FnZSk7CisgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBz
Y29wZSwgbWVzc2FnZSk7CiAgICAgc2xvdC5zZXRVbmRlZmluZWQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wm
IHB1dFJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHB1dFJlc3VsdCA9IGZhbHNlOwogICAg
IEZyYW1lKiBmcmFtZSA9IHdyYXBwZWQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC03
OCw3ICs4NCw3IEBAIGJvb2wgSlNMb2NhdGlvbjo6cHV0RGVsZWdhdGUoRXhlY1N0YXRlKiAKICAg
ICAvLyBidXQgbm90IHdoZW4gYXNzaWduaW5nIHRoZSBpbmRpdmlkdWFsIHBpZWNlcywgc2luY2Ug
dGhhdCBtaWdodCBpbmFkdmVydGVudGx5CiAgICAgLy8gZGlzY2xvc2Ugb3RoZXIgcGFydHMgb2Yg
dGhlIG9yaWdpbmFsIGxvY2F0aW9uLgogICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmhyZWYpIHsKLSAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBl
cnJvck1lc3NhZ2UpOworICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIHNjb3BlLCBl
cnJvck1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFE
ZXZpY2VzQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgs
OCArMzU4LDExIEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29uc3RyYWludHMoY29uc3QgRGljdGkKIAog
SlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgYXV0byBjb25zdHJhaW50c0RpY3Rpb25hcnkgPSBEaWN0aW9uYXJ5KCZzdGF0ZSwgc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsMTAgKzQxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0U2V0dGluZ3MoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUudGhpc1ZhbHVlKCk7CiAgICAgSlNNZWRpYVN0cmVhbVRyYWNrKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU01lZGlhU3RyZWFtVHJhY2sqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dU
aGlzVHlwZUVycm9yKHN0YXRlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAiTWVkaWFTdHJlYW1UcmFjayIsICJnZXRTZXR0aW5ncyIpKTsKIAogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0xMDIsMTAgKzEwNSwxMyBAQCBzdGF0aWMg
SlNWYWx1ZSBjYXBhYmlsaXR5VmFsdWUoY29uc3QgQ2FwCiAKIEpTQzo6SlNWYWx1ZSBKU01lZGlh
U3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBK
U01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJl
YW1UcmFjayo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJN
ZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJNZWRpYVN0cmVhbVRy
YWNrIiwgImdldFNldHRpbmdzIikpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KCZzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2Fn
ZVBvcnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01OSw2ICs1OSw5IEBA
IEpTQzo6SlNWYWx1ZSBKU01lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSgKIAogdm9pZCBmaWxsTWVz
c2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwg
TWVzc2FnZVBvcnRBcnJheSYgcG9ydEFycmF5LCBBcnJheUJ1ZmZlckFycmF5JiBhcnJheUJ1ZmZl
cnMpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBDb252ZXJ0IGZyb20gdGhlIHBhc3NlZC1pbiBK
UyBhcnJheS1saWtlIG9iamVjdCB0byBhIE1lc3NhZ2VQb3J0QXJyYXkuCiAgICAgLy8gQWxzbyB2
YWxpZGF0ZXMgdGhlIGVsZW1lbnRzIHBlciBzZWN0aW9ucyA0LjEuMTMgYW5kIDQuMS4xNSBvZiB0
aGUgV2ViSURMIHNwZWMgYW5kIHNlY3Rpb24gOC4zLjMgb2YgdGhlIEhUTUw1IHNwZWMuCiAgICAg
aWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKQEAgLTk1LDcgKzk4LDcgQEAgdm9pZCBm
aWxsTWVzc2FnZVBvcnRBcnJheShKU0M6OkV4ZWNTdGF0ZQogICAgICAgICAgICAgaWYgKFJlZlB0
cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHZhbHVlKSkKICAgICAg
ICAgICAgICAgICBhcnJheUJ1ZmZlcnMuYXBwZW5kKFdURk1vdmUoYXJyYXlCdWZmZXIpKTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5oCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtNTAsOCArNTEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIGlubGluZSBKU0M6OkpTVmFsdWUgaGFuZGxl
UG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBUKiBpbXBsKQogICAgIHsKKyAgICAg
ICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgICAgICBNZXNzYWdlUG9ydEFycmF5IHBv
cnRBcnJheTsKICAgICAgICAgQXJyYXlCdWZmZXJBcnJheSBhcnJheUJ1ZmZlckFycmF5OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgSlNWYWx1ZSBKU01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OmRlYwogCiB2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSB7IGNvbnZlcnQ8dWludDhfdD4oc3Rh
dGUsIHZhbHVlLCBFbmZvcmNlUmFuZ2UpIH07CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm47CkBAIC03NCw3ICs3Nyw3IEBAIHZvaWQgSlNNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzZXREZWMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQoIiV1IGlzIG5vdCBhIHZhbGlkIGRlY2lz
aW9uUG9pbnQgdmFsdWUuIiwgbmF0aXZlVmFsdWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb25Qb2lu
dCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUgdG9K
U1ZhbHVlKERlY2lzaW9uIGRlY2lzaW9uKQpAQCAtOTEsNiArOTQsOSBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUgdG9KU1ZhbHVlKERlY2lzaW9uCiAKIHN0YXRpYyBpbmxpbmUgRGVjaXNpb24gdG9E
ZWNpc2lvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgdWludDhfdCBuYXRpdmVWYWx1ZSB7IGNvbnZlcnQ8dWludDhfdD4oc3RhdGUsIHZhbHVl
LCBFbmZvcmNlUmFuZ2UpIH07CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gRGVjaXNpb246OkFsbG93OwpAQCAtMTAyLDcgKzEwOCw3IEBAIHN0YXRpYyBpbmxp
bmUgRGVjaXNpb24gdG9EZWNpc2lvbihFeGVjU3QKICAgICAgICAgcmV0dXJuIGRlY2lzaW9uOwog
ICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgU3RyaW5nOjpmb3JtYXQoIiV1IGlz
IG5vdCBhIHZhbGlkIGRlY2lzaW9uIHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CisgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIiV1IGlzIG5vdCBhIHZhbGlk
IGRlY2lzaW9uIHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7CiAgICAgcmV0dXJuIERlY2lzaW9uOjpB
bGxvdzsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2R1bGVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9kdWxl
TG9hZGVyLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNb2R1bGVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsNiArMTAzLDkgQEAgSlND
OjpKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1bGVMb2FkZXI6OgogCiBKU0M6OkpTVmFsdWUgSlNN
b2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1
ZSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlKQogeworICAgIEpTQzo6Vk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBvbmx5IHN1cHBvcnQgSlNNb2R1bGVSZWNvcmQu
CiAgICAgLy8gT25jZSB0aGUgcmVmbGVjdGl2ZSBwYXJ0IG9mIHRoZSBtb2R1bGUgbG9hZGVyIGlz
IHN1cHBvcnRlZCwgd2Ugd2lsbCBoYW5kbGUgYXJiaXRyYXJ5IHZhbHVlcy4KICAgICAvLyBodHRw
czovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNyZWdpc3RyeS1wcm90b3R5cGUtcHJvdmlkZQpA
QCAtMTE2LDEwICsxMTksMTAgQEAgSlNDOjpKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0
ZShKUwogICAgIGVsc2UgaWYgKG1vZHVsZUtleVZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHNv
dXJjZVVybCA9IFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZShleGVj
KSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJvbCBvciBTdHJpbmcuIikpOworICAg
ICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJNb2R1bGUga2V5IGlzIG5vdCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKIAogICAgIGlmICghc291
cmNlVXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJNb2R1bGUga2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKKyAgICAg
ICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
TW9kdWxlIGtleSBpcyBhbiBpbnZhbGlkIFVSTC4iKSk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGV2YWx1YXRpbmcgbW9kdWxlIGNvZGUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00NCwxOSArNDUsMjIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTTXV0YXRp
b25PYnNlcnZlcihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChleGVj
LmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoJmV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
ZXhlYykpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQo
MCkuZ2V0T2JqZWN0KCk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgaWYgKCFvYmplY3Qg
fHwgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSA9
PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
ZXhlYywgMCwgImNhbGxiYWNrIiwgIk11dGF0aW9uT2JzZXJ2ZXIiLCBudWxscHRyLCAiTXV0YXRp
b25DYWxsYmFjayIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVj
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIk11dGF0aW9uT2JzZXJ2ZXIiLCBudWxscHRyLCAiTXV0
YXRpb25DYWxsYmFjayIpOwogCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0
b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBh
dXRvIGNhbGxiYWNrID0gSlNNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBqc0NvbnN0
cnVjdG9yLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGpzT2JzZXJ2ZXIgPSBhc09i
amVjdCh0b0pTTmV3bHlDcmVhdGVkKCZleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KSwgTXV0YXRpb25PYnNlcnZlcjo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2spKSkpOwogICAgIFBy
aXZhdGVOYW1lIHByb3BlcnR5TmFtZTsKLSAgICBqc09ic2VydmVyLT5wdXREaXJlY3QoanNDb25z
dHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCktPnZtKCksIHByb3BlcnR5TmFtZSwgb2JqZWN0KTsKKyAg
ICBqc09ic2VydmVyLT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgb2JqZWN0KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzT2JzZXJ2ZXIpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOS0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEyLDEzICsxMTIsMTYgQEAgYm9vbCBKU05vZGVP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUgogCiBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVm
b3JlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEpTVmFsdWUgbmV3Q2hpbGRW
YWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApOwogICAgIGF1dG8qIG5ld0NoaWxkID0g
SlNOb2RlOjp0b1dyYXBwZWQobmV3Q2hpbGRWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZXdD
aGlsZCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVF
cnJvcihzdGF0ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJpbnNlcnRCZWZvcmUiLCAiTm9kZSIpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJpbnNlcnRCZWZvcmUiLCAiTm9kZSIpKTsK
IAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlZCgp
Lmluc2VydEJlZm9yZSgqbmV3Q2hpbGQsIEpTTm9kZTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDEpKSwgZWMpKSkgewpAQCAtMTMyLDE2ICsxMzUsMTkgQEAgSlNWYWx1ZSBKU05v
ZGU6Omluc2VydEJlZm9yZShFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTTm9kZTo6cmVwbGFjZUNo
aWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8qIG5ld0NoaWxkID0g
SlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIEpTVmFs
dWUgb2xkQ2hpbGRWYWx1ZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgIGF1dG8q
IG9sZENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQob2xkQ2hpbGRWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFuZXdDaGlsZCB8fCAhb2xkQ2hpbGQpKSB7CiAgICAgICAgIGlmICghbmV3Q2hpbGQp
Ci0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJy
b3Ioc3RhdGUsIDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7Ci0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0
ZSwgMSwgImNoaWxkIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7CisgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAwLCAibm9kZSIsICJOb2RlIiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUs
IHNjb3BlLCAxLCAiY2hpbGQiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKICAg
ICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTE1NiwxMCArMTYyLDEzIEBAIEpT
VmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiAKIAogSlNWYWx1ZSBKU05vZGU6
OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIGNoaWxkVmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBhdXRvKiBjaGlsZCA9IEpT
Tm9kZTo6dG9XcmFwcGVkKGNoaWxkVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2hpbGQpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3Rh
dGUsIDAsICJjaGlsZCIsICJOb2RlIiwgInJlbW92ZUNoaWxkIiwgIk5vZGUiKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2Nv
cGUsIDAsICJjaGlsZCIsICJOb2RlIiwgInJlbW92ZUNoaWxkIiwgIk5vZGUiKSk7CiAKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZWQoKS5yZW1vdmVD
aGlsZCgqY2hpbGQsIGVjKSkpIHsKQEAgLTE3MywxMCArMTgyLDEzIEBAIEpTVmFsdWUgSlNOb2Rl
OjpyZW1vdmVDaGlsZChFeGVjU3RhdGUmIHMKIAogSlNWYWx1ZSBKU05vZGU6OmFwcGVuZENoaWxk
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIG5ld0NoaWxk
VmFsdWUgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBhdXRvIG5ld0NoaWxkID0gSlNOb2RlOjp0
b1dyYXBwZWQobmV3Q2hpbGRWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZXdDaGlsZCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0
ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJhcHBlbmRDaGlsZCIsICJOb2RlIikpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCAwLCAibm9kZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwgIk5vZGUiKSk7CiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoVU5MSUtFTFkoIXdyYXBwZWQoKS5hcHBlbmRDaGls
ZCgqbmV3Q2hpbGQsIGVjKSkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUZpbHRlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Miw3ICs0Miw5IEBAIHVpbnQxNl90IEpTTm9kZUZpbHRlcjo6YWNjZXB0Tm9kZShOb2RlKiAK
IHsKICAgICBSZWY8SlNOb2RlRmlsdGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIEpT
TG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOworICAgIFZNJiB2
bSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEV4
ZWNTdGF0ZSogc3RhdGUgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKQEAgLTU0LDcgKzU2LDcgQEAgdWludDE2X3Qg
SlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKE5vZGUqIAogICAgIEpTVmFsdWUgdmFsdWUgPSBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1
bmN0aW9uT3JPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJhY2NlcHROb2Rl
IiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgLy8gUmV0aHJvdyBleGNlcHRpb24uCi0gICAgICAgIHN0YXRlLT52bSgpLnRocm93RXhj
ZXB0aW9uKHN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KHN0YXRlLCBzY29wZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogCiAgICAgICAgIHJldHVybiBOb2Rl
RmlsdGVyOjpGSUxURVJfUkVKRUNUOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDA4LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTk2LDEw
ICs5NiwxMiBAQCBKU09iamVjdCogcGx1Z2luU2NyaXB0T2JqZWN0KEV4ZWNTdGF0ZSogCiAgICAg
CiBFbmNvZGVkSlNWYWx1ZSBwbHVnaW5FbGVtZW50UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0hUTUxFbGVtZW50KiB0aGlzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU0hUTUxFbGVtZW50Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU09i
amVjdCogc2NyaXB0T2JqZWN0ID0gcGx1Z2luU2NyaXB0T2JqZWN0KGV4ZWMsIHRoaXNPYmplY3Qp
OwogICAgIGlmICghc2NyaXB0T2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zNiwxNCArMzcsMTkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gUHVibGljIEpTIFJlYWRhYmxlU3RyZWFtUmVkZXIgYW5kIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29uc3RydWN0b3IgY2FsbGJhY2tzLgogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIoRXhlY1N0YXRlJiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KCZleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgY29u
c3RydWN0b3Igc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CisgICAgVk0mIHZtID0g
ZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNh
bGxlZCBkaXJlY3RseSIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlcihFeGVjU3RhdGUmIGV4ZWMpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICAKICAgICBKU1JlYWRhYmxlU3RyZWFtKiBzdHJlYW0gPSBqc0R5bmFtaWND
YXN0PEpTUmVhZGFibGVTdHJlYW0qPihleGVjLmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXN0cmVh
bSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoZXhlYywgMCwgInN0cmVh
bSIsICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsIG51bGxwdHIsICJSZWFkYWJsZVN0cmVhbSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMCwgInN0
cmVhbSIsICJSZWFkYWJsZVN0cmVhbVJlYWRlciIsIG51bGxwdHIsICJSZWFkYWJsZVN0cmVhbSIp
OwogCiAgICAgSlNWYWx1ZSBqc0Z1bmN0aW9uID0gc3RyZWFtLT5nZXQoJmV4ZWMsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJmV4ZWMsICJnZXRSZWFkZXIiKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTQ3LDEzICs0OCwxNiBAQCBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVj
U3RhdGUmIHN0CiAKIHZvaWQgSlNTVkdMZW5ndGg6OnNldFZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAod3JhcHBlZCgpLmlzUmVh
ZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJ
T05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCF2YWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICF2YWx1ZS5pc051bWJlcigpICYmICF2YWx1ZS5pc0Jv
b2xlYW4oKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTcyLDYgKzc2LDkgQEAgdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRlJiBz
dAogCiBKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhFeGVjU3Rh
dGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHdyYXBwZWQoKS5pc1JlYWRPbmx5
KCkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04MCw3ICs4Nyw3
IEBAIEpTVmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFUKICAgICBTVkdMZW5n
dGgmIHBvZEltcCA9IHdyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5jZSgpOwogCiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IHVuaXRU
eXBlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoJnN0YXRlKTsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dlYkdMMlJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wy
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsOCArOTcsMTEgQEAg
SlNWYWx1ZSBKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN5bgogCiBKU1ZhbHVlIEpTV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW5kZXhlZFBhcmFtZXRlcihFeGVjU3RhdGUmIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChleGVjLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAg
ICAgICByZXR1cm4gZXhlYy52bSgpLnRocm93RXhjZXB0aW9uKCZleGVjLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JmV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOwogCiAg
ICAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCA9IHdyYXBwZWQoKTsKICAgICB1bnNp
Z25lZCBwbmFtZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmZXhlYyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTcwLDggKzE3MCwxMSBAQCBlbnVtIE9iamVjdFR5cGUg
ewogCiBzdGF0aWMgSlNWYWx1ZSBnZXRPYmplY3RQYXJhbWV0ZXIoSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiBvYmosIEV4ZWNTdGF0ZSYgc3RhdGUsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAg
ICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQgPSBvYmotPndyYXBwZWQoKTsKQEAgLTI3MCwxMyArMjczLDE2IEBA
IHZvaWQgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2aXNpdEEKIAogSlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEF0dGFjaGVkU2hhZGVycyhFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEp
Ci0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9
IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkdMU2hhZGVyPj4gc2hhZGVyczsKICAgICBib29sIHN1Y2NlZWQgPSBjb250ZXh0Lmdl
dEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBzaGFkZXJzLCBlYyk7CiAgICAgaWYgKGVjKSB7CkBA
IC0yOTMsOCArMjk5LDExIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldEV4dGVuc2lvbihF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGNvbnN0IFN0cmluZyBuYW1lID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKQEAgLTMxMSw4
ICszMjAsMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAogCiBK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
c3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBl
ZCgpOwpAQCAtMzM1LDggKzM0NywxMSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJh
bWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CkBA
IC0zNTMsMTQgKzM2OCwxNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFy
YW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUu
YXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwog
ICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBwZWQoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvSW50MzIoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMzc5LDEzICszOTcsMTYgQEAgSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0U2hhZGVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAg
IHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAg
ICAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIGlmICghc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCku
aW5oZXJpdHMoSlNXZWJHTFNoYWRlcjo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKICAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gSlNXZWJHTFNoYWRlcjo6dG9XcmFwcGVk
KHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCkBAIC00MTcsMTcgKzQzOCwyMCBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
c3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0ID0gd3JhcHBl
ZCgpOwogICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IEpTV2ViR0xQcm9ncmFtOjp0b1dyYXBw
ZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBK
U1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MSkpOwogICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgV2Vi
R0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LmdldFVuaWZvcm0ocHJvZ3JhbSwgbG9jYXRpb24sIGVj
KTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgZWMpOwpA
QCAtNDg4LDggKzUxMiwxMSBAQCBzdGF0aWMgYm9vbCBmdW5jdGlvbkZvclVuaWZvcm0oRGF0YUZ1
bmN0CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uZihEYXRhRnVuY3Rpb25Ub0Nh
bGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAh
PSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gMDsK
ICAgICBsb25nIGluZGV4ID0gLTE7CkBAIC00OTcsNyArNTI0LDcgQEAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFGdQogICAgIGlmIChmdW5jdGlvbkZvclVuaWZvcm0oZikp
IHsKICAgICAgICAgbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQo
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBpZiAoIWxvY2F0aW9uICYmICFz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGluZGV4ID0g
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMigmc3RhdGUpOwogICAgIApAQCAtNTQz
LDcgKzU3MCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uZihEYXRhRnUKICAg
ICAKICAgICBWZWN0b3I8ZmxvYXQsIDY0PiBhcnJheTsKICAgICBpZiAoIXRvVmVjdG9yKHN0YXRl
LCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSwgYXJyYXkpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAgIGNhc2UgZl91bmlmb3JtMXY6
CkBAIC01NzgsMTIgKzYwNSwxNSBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYo
RGF0YUZ1CiAKIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnVuY3Rpb25U
b0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQo
KSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0g
SlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICBpZiAoIWxvY2F0aW9uICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIAog
ICAgIFJlZlB0cjxJbnQzMkFycmF5PiB3ZWJHTEFycmF5ID0gdG9JbnQzMkFycmF5KHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICAKQEAgLTYxMyw3ICs2NDMsNyBAQCBzdGF0aWMgSlND
OjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmkoRGF0YUZ1CiAgICAgCiAgICAgVmVjdG9yPGludCwgNjQ+
IGFycmF5OwogICAgIGlmICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBhcnJheSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgc3dp
dGNoIChmKSB7CiAgICAgY2FzZSBmX3VuaWZvcm0xdjoKQEAgLTYzOCwxMiArNjY4LDE1IEBAIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShEYXRhRnUKIAogc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgoRGF0YUZ1bmN0aW9uTWF0cml4VG9DYWxsIGYsIEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMykKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
ICAgIAogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3Jt
TG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAKICAgICBib29sIHRyYW5z
cG9zZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvQm9vbGVhbigmc3RhdGUpOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTY3MSw3ICs3MDQsNyBAQCBzdGF0aWMgSlND
OjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChECiAgICAgCiAgICAgVmVjdG9yPGZsb2F0LCA2
ND4gYXJyYXk7CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMiksIGFycmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAKICAgICBz
d2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5pZm9ybU1hdHJpeDJmdjoKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRsZUNyeXB0b0N1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsNiArNzcs
OSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlQWxnCiAKIHN0YXRpYyBi
b29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUsIENyeXB0b0tleUZvcm1hdCYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3Ry
aW5nIGtleUZvcm1hdFN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0
ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC04OSw3ICs5Miw3IEBAIHN0YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVl
KEUKICAgICBlbHNlIGlmIChrZXlGb3JtYXRTdHJpbmcgPT0gImp3ayIpCiAgICAgICAgIHJlc3Vs
dCA9IENyeXB0b0tleUZvcm1hdDo6SldLOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBrZXkgZm9ybWF0IikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVua25vd24ga2V5
IGZvcm1hdCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTk3LDggKzEwMCwxMSBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNW
YWx1ZShFCiAKIHN0YXRpYyBib29sIGNyeXB0b0tleVVzYWdlc0Zyb21KU1ZhbHVlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIENyeXB0b0tleVVzYWdlJiByZXN1bHQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzMiw4ICsxMzgsMTEgQEAgc3RhdGlj
IGJvb2wgY3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoRQogCiBKU1ZhbHVlIEpTV2ViS2l0U3Vi
dGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0
aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0xNDksNyArMTU4LDcgQEAgSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeAogCiAgICAgUmVmUHRyPENyeXB0
b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAg
ICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlRW5jcnlwdCkpIHsKICAgICAgICAgd3Jh
cHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1
ZGUgJ2VuY3J5cHQnIikpOwpAQCAtMTg1LDggKzE5NCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3Vi
dGxlQ3J5cHRvOjplbmNyeXB0KEV4CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRl
Y3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFs
Z29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTIwMiw3ICsyMTQsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0
U3VidGxlQ3J5cHRvOjpkZWNyeXB0KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBK
U0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBp
ZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICgha2V5LT5h
bGxvd3MoQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZGVjcnlwdCci
KSk7CkBAIC0yMzcsOCArMjQ5LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRl
Y3J5cHQoRXgKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFs
dWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRo
bSkgewpAQCAtMjU0LDcgKzI2OSw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNp
Z24oRXhlY1MKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dy
YXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlV
c2FnZVNpZ24pKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFs
KCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdzaWduJyIpKTsKQEAgLTI4OSw4ICszMDQsMTEg
QEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjUwogCiBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KQotICAgICAgICByZXR1cm4g
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRv
IGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTMwNiw3ICszMjQs
NyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlCiAKICAgICBSZWZQ
dHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSB7CiAgICAg
ICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5v
dCBpbmNsdWRlICd2ZXJpZnknIikpOwpAQCAtMzQ3LDggKzM2NSwxMSBAQCBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjp2ZXJpZnkoRXhlCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlw
dG86OmRpZ2VzdChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3Jl
YXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDAp
KTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMzg5LDggKzQxMCwxMSBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmdlbmVyYXRlS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0
aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC00NDUsNiArNDY5LDkgQEAgSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZQogCiBzdGF0aWMgdm9pZCBpbXBv
cnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgQ3J5cHRv
T3BlcmF0aW9uRGF0YSBkYXRhLCBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBhbGdvcml0aG0sIFJl
ZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSBrZXlVc2FnZXMsIENyeXB0b0FsZ29yaXRobTo6S2V5Q2FsbGJh
Y2sgY2FsbGJhY2ssIENyeXB0b0FsZ29yaXRobTo6Vm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFj
aykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlTZXJpYWxp
emF0aW9uPiBrZXlTZXJpYWxpemF0aW9uOwogICAgIHN3aXRjaCAoa2V5Rm9ybWF0KSB7CiAgICAg
Y2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlJhdzoKQEAgLTQ1Myw3ICs0ODAsNyBAQCBzdGF0aWMgdm9p
ZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6
OkpXSzogewogICAgICAgICBTdHJpbmcgandrU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChkYXRh
LmZpcnN0LCBkYXRhLnNlY29uZCk7CiAgICAgICAgIGlmIChqd2tTdHJpbmcuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJKV0sgSlNP
TiBzZXJpYWxpemF0aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIpKTsKKyAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEpTT04gc2VyaWFsaXph
dGlvbiBpcyBub3QgdmFsaWQgVVRGLTgiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAga2V5U2VyaWFsaXphdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uSldLPigmc3RhdGUsIGp3a1N0cmluZyk7CkBAIC00NjIsNyArNDg5LDcg
QEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgZGVmYXVsdDoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9ydCIpKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRl
ZCBrZXkgZm9ybWF0IGZvciBpbXBvcnQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQ3MSw3ICs0OTgsNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwg
CiAgICAgT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gcmVjb25jaWxlZFJlc3VsdCA9IGtl
eVNlcmlhbGl6YXRpb24tPnJlY29uY2lsZUFsZ29yaXRobShhbGdvcml0aG0uZ2V0KCksIHBhcmFt
ZXRlcnMuZ2V0KCkpOwogICAgIGlmICghcmVjb25jaWxlZFJlc3VsdCkgewogICAgICAgICBpZiAo
IXN0YXRlLmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCBBU0NJSUxpdGVyYWwoIkFsZ29yaXRobSBzcGVjaWZpZWQgaW4ga2V5IGlzIG5vdCBjb21wYXRp
YmxlIHdpdGggb25lIHBhc3NlZCB0byBpbXBvcnRLZXkgYXMgYXJndW1lbnQiKSk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkFsZ29yaXRo
bSBzcGVjaWZpZWQgaW4ga2V5IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggb25lIHBhc3NlZCB0byBp
bXBvcnRLZXkgYXMgYXJndW1lbnQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNDgwLDcgKzUwNyw3IEBAIHN0YXRpYyB2b2lkIGlt
cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBhbGdvcml0aG0gPSByZWNvbmNpbGVkUmVz
dWx0LT5hbGdvcml0aG07CiAgICAgcGFyYW1ldGVycyA9IHJlY29uY2lsZWRSZXN1bHQtPnBhcmFt
ZXRlcnM7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIk5laXRoZXIga2V5IG5vciBmdW5jdGlvbiBhcmd1bWVudCBoYXMg
Y3J5cHRvIGFsZ29yaXRobSBzcGVjaWZpZWQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTmVpdGhlciBrZXkgbm9yIGZ1bmN0aW9uIGFyZ3Vt
ZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmllZCIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQocGFyYW1ldGVycyk7CkBAIC01MDUsOCArNTMyLDExIEBAIHN0YXRp
YyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKIAogSlNWYWx1ZSBKU1dlYktpdFN1
YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ3J5cHRvS2V5
Rm9ybWF0IGtleUZvcm1hdDsKICAgICBpZiAoIWNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKHN0
YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgewpAQCAtNTY4LDggKzU5OCwxMSBA
QCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjppbXBvcnRLZXkoCiAKIHN0YXRpYyB2b2lk
IGV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgQ3J5cHRvQWxnb3JpdGhtOjpWZWN0b3JDYWxsYmFjayBjYWxs
YmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCFrZXkuZXh0cmFjdGFibGUoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiS2V5IGlzIG5vdCBleHRyYWN0YWJsZSIp
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJL
ZXkgaXMgbm90IGV4dHJhY3RhYmxlIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01
OTMsMTUgKzYyNiwxOCBAQCBzdGF0aWMgdm9pZCBleHBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwg
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgZXhw
b3J0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGV4cG9ydCIpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlm
ICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBr
ZXlGb3JtYXQpKSB7CkBAIC02MTEsNyArNjQ3LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZXhwb3J0S2V5KAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlwdG9L
ZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFrZXkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZURlZmVycmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpKTsKICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOwpAQCAtNjMxLDggKzY2NywxMSBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVD
cnlwdG86OndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQg
a2V5Rm9ybWF0OwogICAgIGlmICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0
YXRlLmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CkBAIC02NDIsMTEgKzY4MSwxMSBAQCBKU1Zh
bHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjp3cmFwS2V5KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRv
S2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAg
IFJlZlB0cjxDcnlwdG9LZXk+IHdyYXBwaW5nS2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIXdyYXBwaW5nS2V5LT5hbGxvd3MoQ3J5cHRvS2V5
VXNhZ2VXcmFwS2V5KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnd3JhcEtleSciKSk7CkBAIC03MDAsOCAr
NzM5LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXgKIAogSlNW
YWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
CiAgICAgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1hdDsKICAgICBpZiAoIWNyeXB0b0tleUZvcm1h
dEZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSwga2V5Rm9ybWF0KSkgewpAQCAt
NzE3LDcgKzc1OSw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnVud3JhcEtleSgK
IAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IHVud3JhcHBpbmdLZXkgPSBKU0NyeXB0b0tleTo6dG9X
cmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIpKTsKICAgICBpZiAoIXVud3JhcHBpbmdL
ZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIXVud3JhcHBpbmdL
ZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkpIHsKICAgICAgICAgd3JhcHBlZCgp
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3Vu
d3JhcEtleSciKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDcsMTAgKzQ3LDEzIEBAIEpTQzo6
SlNWYWx1ZSBKU1dvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjoKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1dvcmtlcihFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0ganNDYXN0PERP
TUNvbnN0cnVjdG9yT2JqZWN0Kj4oZXhlYy5jYWxsZWUoKSk7CiAKICAgICBpZiAoIWV4ZWMuYXJn
dW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKCZleGVjLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsK
IAogICAgIFN0cmluZyBzY3JpcHRVUkwgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RG
U3RyaW5nKCZleGVjKTsKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04MCw4ICs4MCwxMSBAQCBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6
OmltcG9ydFNjcmlwCiAKIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dChF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1
bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246OmNyZWF0ZSgmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpLT53b3JsZCgpLCB3cmFwcGVkKCkuY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTk0LDggKzk3LDExIEBAIEpTVmFsdWUg
SlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGltZW91dCgKIAogSlNWYWx1ZSBKU1dvcmtlckdsb2Jh
bFNjb3BlOjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBTY2hlZHVsZWRBY3Rpb246
OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLCB3cmFwcGVkKCkuY29udGVu
dFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
Q2Fub24gSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3LDcgKzQ4LDkg
QEAgc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgY2FsbEZ1bmN0aW9uKAogCiBKU0M6OkpTVmFs
dWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgb2JqZWN0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUs
IEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXIpCiB7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jaygm
c3RhdGUpOworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKICAgICBhdXRvIGZ1bmN0aW9uID0gb2JqZWN0LmdldCgmc3RhdGUsIEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsIHByb3BlcnR5TmFtZSkpOwogICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKQEAgLTU1LDcgKzU4LDcgQEAgSlNDOjpKU1ZhbHVlIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRybwogCiAgICAgaWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKCkpIHsKICAgICAg
ICAgaWYgKCFmdW5jdGlvbi5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEg
cHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0
byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSk7CiAgICAgICAgIHJldHVy
biBKU0M6OmpzVW5kZWZpbmVkKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDIw
NTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3ICszOTQsOSBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICB2b2lkIHRocm93U3RhY2tPdmVyZmxvdygpCiAgICAgewotICAgICAgICBtX2V4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24obV9leGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7
CisgICAgICAgIFZNJiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIHNj
b3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBmYWlsKCkKQEAgLTE1NzAsNyArMTU3Miw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRocm93
VmFsaWRhdGlvbkVycm9yKCkKICAgICB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CisgICAgICAgIFZN
JiB2bSA9IG1fZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICB9CiAKICAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb24gPD0gQ3VycmVudFZlcnNpb247IH0K
QEAgLTI3NTYsMTUgKzI3NjAsMTggQEAgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFs
aXplZFNjcgogCiB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlv
bklmU2VyaWFsaXphdGlvbkZhaWxlZChFeGVjU3RhdGUqIGV4ZWMsIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIGNvZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoY29kZSA9PSBTdWNjZXNzZnVs
bHlDb21wbGV0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2ggKGNvZGUpIHsK
ICAgICBjYXNlIFN0YWNrT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWYWxpZGF0aW9uRXJyb3I6Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGRh
dGEuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRGF0YUNsb25lRXJyb3I6CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBEQVRBX0NM
T05FX0VSUik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29v
Z2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEyNiwx
MSArMTI2LDEyIEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY28KICAg
ICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fd29ya2Vy
R2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2
bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSlND
OjpldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckdsb2Jh
bFNjb3BlV3JhcHBlci0+Z2xvYmFsVGhpcygpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKLSAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIGlmICgocmV0dXJuZWRFeGNlcHRpb24gJiYgaXNUZXJt
aW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHJldHVybmVkRXhjZXB0aW9uKSkgfHwgaXNUZXJtaW5h
dGluZ0V4ZWN1dGlvbigpKSB7CiAgICAgICAgIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgICAgICBy
ZXR1cm47CkBAIC0xNDMsNyArMTQ0LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZShjbwogICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gc291cmNlQ29kZS51cmwoKS5z
dHJpbmcoKTsKICAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZXJyb3I7CiAgICAgICAg
IGlmIChtX3dvcmtlckdsb2JhbFNjb3BlLT5zYW5pdGl6ZVNjcmlwdEVycm9yKGVycm9yTWVzc2Fn
ZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwsIGVycm9yLCBzb3VyY2VDb2Rl
LmNhY2hlZFNjcmlwdCgpKSkgewotICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpOworICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZS5p
bXBsKCkpKTsKICAgICAgICAgICAgIHJldHVybmVkRXhjZXB0aW9uID0gdm0uZXhjZXB0aW9uKCk7
CiAgICAgICAgICAgICB2bS5jbGVhckV4Y2VwdGlvbigpOwogICAgICAgICB9CkBAIC0xNTMsNyAr
MTU0LDkgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogdm9pZCBX
b3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oSlNDOjpFeGNlcHRpb24qIGV4Y2Vw
dGlvbikKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxFeGVjKCk7Ci0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBleGNlcHRpb24pOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBleGNlcHRpb24pOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNjaGVkdWxl
RXhlY3V0aW9uVGVybWluYXRpb24oKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC05MDQsOSArOTA0LDExIEBAIHN1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVt
ZW50YXRpb25Db24KIAogICAgICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+ICRjbGFzc05hbWUg
Y29udmVydDwkY2xhc3NOYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKVxuIjsK
ICAgICAgICAgJHJlc3VsdCAuPSAie1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIg
ICAgYXV0byByZXN1bHQgPSBwYXJzZTwkY2xhc3NOYW1lPihzdGF0ZSwgdmFsdWUpO1xuIjsKICAg
ICAgICAgJHJlc3VsdCAuPSAiICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkge1xuIjsKLSAgICAg
ICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpO1xuIjsKKyAgICAg
ICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUp
O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4geyB9O1xuIjsKICAgICAg
ICAgJHJlc3VsdCAuPSAiICAgIH1cbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICByZXR1cm4g
cmVzdWx0LnZhbHVlKCk7XG4iOwpAQCAtMTAwOSwxMSArMTAxMSwxMyBAQCBzdWIgR2VuZXJhdGVE
aWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250CiAKICAgICAgICAgJHJlc3VsdCAuPSAidGVtcGxh
dGU8PiBPcHRpb25hbDwkY2xhc3NOYW1lPiBjb252ZXJ0RGljdGlvbmFyeTwkY2xhc3NOYW1lPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKVxuIjsKICAgICAgICAgJHJlc3VsdCAuPSAi
e1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7XG4iOwor
ICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKHZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpXG4iIGlmICRkZWZhdWx0VmFsdWVzOwogICAgICAgICAkcmVzdWx0IC49ICIg
ICAgICAgIHJldHVybiAkY2xhc3NOYW1lIHsgIiAuICRkZWZhdWx0VmFsdWVzIC4gIiB9O1xuIiBp
ZiAkZGVmYXVsdFZhbHVlczsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGF1dG8qIG9iamVjdCA9
IHZhbHVlLmdldE9iamVjdCgpO1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIGlmIChVTkxJ
S0VMWSghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7XG4i
OwotICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7XG4i
OworICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhy
b3dTY29wZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiBOdWxsb3B0
O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH1cbiI7CiAKQEAgLTE5NDEsNiArMTk0NSw5
IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbk9yQ29uc3RydWMKICAgICB9CiAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsgICAgCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1p
bjxzaXplX3Q+KCRtYXhBcmdDb3VudCwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiBFTkQKIApA
QCAtMjAxNSw5ICsyMDIyLDkgQEAgRU5ECiAgICAgfQogICAgIG15ICRtaW5BcmdDb3VudCA9IEdl
dEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7CiAgICAgaWYgKCRtaW5BcmdDb3VudCA+IDApIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGFyZ3NDb3VudCA8ICRtaW5B
cmdDb3VudCA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIikKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGFyZ3NDb3VudCA8ICRtaW5BcmdDb3VudCA/IHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIikKICAgICB9
IGVsc2UgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7XG4iKQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKQogICAgIH0KICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlm
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0yODEwLDcgKzI4MTcsOSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNv
ZGVkSlNWYWx1ZSAke2dldEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTtcbiIpOwogCiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUt
PmlzU3RhdGljIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LykgewpAQCAtMjgyNiw3ICsyODM1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTGVuaWVudFRoaXMifSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIp
OwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCBc
IiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRu
YW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgfQpAQCAtMzAwNyw5ICszMDE2LDEx
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDwke2NsYXNzTmFt
ZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSlcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwog
CiAgICAgICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0lu
dGVyZmFjZU9iamVjdCJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKQEAgLTMwMjYsMTAg
KzMwMzcsMTIgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgImJvb2wgJHtjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNE
eW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogCkBAIC0zMTA5LDYgKzMxMjIsOSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgImJvb2wgJHtwdXRGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7Iik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
O1xuIikgaWYgISRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgICAgICAgICAgaWYgKCEkYXR0cmli
dXRlLT5pc1N0YXRpYykgewpAQCAtMzEyMSw3ICszMTM3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTGVuaWVudFRoaXMifSkgewogICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRl
cmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfVxuIik7CiAgICAgICAgICAgICB9CkBAIC0zMjEwLDcgKzMyMjYsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKFVO
TElLRUxZKCFuYXRpdmVWYWx1ZSkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwg
XCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgdGhyb3dB
dHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5cGVcIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKQEAgLTMyMjksNyAr
MzI0NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgICAgICBp
ZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkge1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0
ZVR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwg
XCIkdHlwZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR2
aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5cGVcIik7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBmYWxzZTtc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0zMzk3LDYgKzM0MTMsMTAgQEAgRU5ECiAKICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOworCiAgICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDRVJlYWN0aW9ucyJ9KSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUylcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrO1xuIik7
CkBAIC0zNzE2LDcgKzM3MzYsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAg
ICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09i
amVjdCJ9KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNh
c3RlZFRoaXMgPSB0byR7Y2xhc3NOYW1lfShzdGF0ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKHN0YXRl
LCBOb3RTdHJpY3RNb2RlKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSlcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTtcbiIpOwog
ICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0
KCRpbnRlcmZhY2UpOwpAQCAtMzczMiw3ICszNzUyLDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25D
YXN0ZWRUaGlzCiAgICAgICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9ICRjb2RlR2VuZXJh
dG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNlKTsKICAgICAgICAgbXkgJGRv
bUZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIp
O1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVc
IiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgfQogCiAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAke2NsYXNz
TmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFjZS0+bmFtZSBlcSAiRXZlbnRUYXJn
ZXQiOwpAQCAtMzgwMCw3ICszODIwLDcgQEAgc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVj
awogICAgIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1zID49IDEpCiAgICAgewogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAkbnVtTWFuZGF0b3J5UGFyYW1zKSlcbiIpOwotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpO1xuIik7CiAgICAgfQogfQogCkBAIC0zOTIyLDcgKzM5
NDIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlm
ICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KS5pc09iamVjdCgpKVxu
Iik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigq
c3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1l
XCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlv
bkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIk
dmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKICAgICAg
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiQ2FsbGJhY2tGdW5jdGlvbi5oIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJG5hbWUgPSBjcmVhdGVGdW5jdGlv
bk9ubHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oc3RhdGUsIGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpKTtcbiIpOwpAQCAtMzkzNiw3ICszOTU2LDcgQEAg
c3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSgh
c3RhdGUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4KS5pc09iamVjdCgpKSlcbiIpOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsICRhcmd1bWVu
dEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5j
dGlvbk5hbWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFt
ZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2Nh
bGxiYWNrQ2xhc3NOYW1lfT4oc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3Vt
ZW50SW5kZXgpKTtcbiIpOwpAQCAtMzk1NCw3ICszOTc0LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGZvciAo
dW5zaWduZWQgaSA9ICRhcmd1bWVudEluZGV4LCBjb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50
KCk7IGkgPCBjb3VudDsgKytpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIGF1dG8qIGl0ZW0gPSBKUyR7dHlwZX06OnRvV3JhcHBlZChzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoaSkpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBpZiAoIWl0ZW0pXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigq
c3RhdGUsIGksIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1
bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgaSwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAk
cXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZS51bmNoZWNrZWRBcHBlbmQoaXRlbSk7XG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIikKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC0zOTk3LDcgKzQwMTcsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRl
bnQgICAgaWYgKFVOTElLRUxZKCEkb3B0aW9uYWxWYWx1ZSkpXG4iKTsKLSAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVz
dEJlRW51bUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJs
ZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlczwkY2xhc3NOYW1lPigpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxl
SW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBleHBlY3RlZEVudW1lcmF0aW9u
VmFsdWVzPCRjbGFzc05hbWU+KCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIkaW5kZW50ICAgICRuYW1lID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpO1xuIikgaWYgJG9w
dGlvbmFsVmFsdWUgbmUgJG5hbWU7CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKSBpZiAkaW5kZW50IG5lICIiOwpAQCAtNDAyMSw3ICs0MDQxLDcgQEAgc3ViIEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBpZiAoVU5MSUtFTFkoISRuYW1lKSlcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVy
ZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5h
bWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIk
dHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTQwNjcsNyArNDA4Nyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogCiAgICAgICAgICAgICBpZiAoJHNob3VsZFBhc3NCeVJlZmVyZW5jZSkgewogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoISRuYW1l
KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFt
ZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0
eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1
bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRG
dW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAk
aXNUZWFyT2ZmID8gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIiA6ICIqJG5hbWUiOwogICAg
ICAgICAgICAgfQogCkBAIC01MjQzLDE0ICs1MjYzLDE2IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVORCk7CiB0
ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX06OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0q
PihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChqc0NvbnN0cnVjdG9yKTsKIAogICAgIGlm
ICghanNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9y
KCpzdGF0ZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7CiAKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogCiAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlw
ZSA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWlj
U3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
QEAgLTUzMjcsNiArNTM0OSw5IEBAIEVORAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
O1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRl
LT5jYWxsZWUoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBB
U1NFUlQoY2FzdGVkVGhpcyk7XG4iKTsKIApAQCAtNTM1NiwxNCArNTM4MSwxNCBAQCBFTkQKICAg
ICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIqY29udGV4dCIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSgh
Y29udGV4dCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dDb25z
dHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTtcbiIpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRh
aW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvckNhbGxXaXRo
In0sICJEb2N1bWVudCIpKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRG9jdW1l
bnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICJk
b2N1bWVudCIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmIChVTkxJS0VMWSghY29udGV4dCkpXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9u
Q29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9
XCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY29udGV4
dC0+aXNEb2N1bWVudCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7XG4i
KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCShyZXZpc2lvbiAy
MDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRl
cmZhY2VOYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE4ICsxMTcsMjIgQEAgdm9pZCBK
U0ludGVyZmFjZU5hbWU6OmRlc3Ryb3koSlNDOjpKU0NlbAogCiBFbmNvZGVkSlNWYWx1ZSBqc0lu
dGVyZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0ludGVy
ZmFjZU5hbWVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNJbnRlcmZhY2VO
YW1lUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0ludGVyZmFjZU5hbWU6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0
SlNJbnRlcmZhY2VOYW1lQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMTIgKzE0
MiwxNCBAQCB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVzdHJveShKU0M6CiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4
Y2l0aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKICAg
ICB9CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShz
dGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCksIFRocm93U2VjdXJpdHlFcnJvcikp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTks
MTggKzE2MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RBY3RpdmVE
T01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0xODQsMzMgKzE5MCwzOSBAQCBKU1ZhbHVlIEpTVGVzdEFj
dGl2ZURPTU9iamVjdDo6Z2V0Q29uc3RyCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAi
ZXhjaXRpbmdGdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiZXhjaXRpbmdGdW5jdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0QWN0
aXZlRE9NT2JqZWN0OjppbmZvKCkpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRB
bGxvd0FjY2Vzc1RvRnJhbWUoc3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpLCBU
aHJvd1NlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5leHRDaGlsZCA9IEpT
Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFu
ZXh0Q2hpbGQpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IDAsICJuZXh0Q2hpbGQiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9u
IiwgIk5vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAwLCAibmV4dENoaWxkIiwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiZXhj
aXRpbmdGdW5jdGlvbiIsICJOb2RlIik7CiAgICAgaW1wbC5leGNpdGluZ0Z1bmN0aW9uKCpuZXh0
Q2hpbGQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90
eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEFjdGl2ZURPTU9iamVj
dCIsICJwb3N0TWVzc2FnZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIG1lc3NhZ2UgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsMTggKzEyMywyMiBAQCB2b2lkIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDkg
KzEyMywxMSBAQCB2b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IGNvbnN0cnVjdG9yID0gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUt
PnZtKCksICpkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpLT5vYmplY3RQcm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiAgICAgLy8gU2hhZG93aW5nIGNvbnN0cnVjdG9yIHBy
b3BlcnR5IHRvIGVuc3VyZSByZXVzaW5nIHRoZSBzYW1lIGNvbnN0cnVjdG9yIG9iamVjdAogICAg
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvciwgRG9udEVudW0gfCBSZWFkT25seSk7CkBAIC0xMzQs
MTAgKzEzNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpCiAK
IGJvb2wgc2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMDUxNzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMTggKzE2MCwyMiBAQCBib29s
IEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKQEAgLTE4NSwxNCArMTg5LDE3IEBAIEpTVmFsdWUgSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OmdldENvbnMKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwg
ImFub3RoZXJGdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsICJhbm90aGVyRnVuY3Rp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTczLDE0ICs3MywxNiBAQCB0eXBlZGVmIEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25z
CiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0RXZl
bnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
anNDb25zdHJ1Y3Rvcik7CiAKICAgICBpZiAoIWpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIp
OworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRV
bmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RFdmVudENvbnN0cnVjdG9y
Iik7CiAKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogCiAgICAgQXRvbWlj
U3RyaW5nIGV2ZW50VHlwZSA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhz
dGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTE3OSwxMiArMTgxLDE0IEBAIHZvaWQgSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6ZGVzdHJveShKU0MKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1
Y3RvckF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50
Q29uc3RydWN0b3IqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAi
YXR0cjEiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHIx
KCkpOwpAQCAtMTk0LDEyICsxOTgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25z
dHJ1Y3RvckF0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENv
bnN0cnVjdG9yIiwgImF0dHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjIoKSk7CkBAIC0y
MTAsMTIgKzIxNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0
CiAjaWYgRU5BQkxFKFNQRUNJQUxfRVZFTlQpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENv
bnN0cnVjdG9yQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIzIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciIsICJhdHRyMyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
YXR0cjMoKSk7CkBAIC0yMjYsMTggKzIzNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yQXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
IGJvb2wgc2V0SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjAsMTggKzE2MCwyMiBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Q
cm9wZXJ0eVNsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9t
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEV2ZW50VGFyZ2V0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50
VGFyZ2V0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IKQEAgLTE5OCwxNCArMjAyLDE3IEBAIEpTVmFsdWUgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENv
bnN0cnVjdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RFdmVudFRhcmdldCIsICJpdGVtIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0ZW0iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0Ojpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDx1
aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEz
NCwxNCBAQCB2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEV4Y2VwdGlvbiIsICJuYW1lIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXhjZXB0aW9uIiwgIm5h
bWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7
CkBAIC0xNDksMTggKzE1MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1l
KEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNywxOCArMTE3LDIyIEBAIHZvaWQgSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6ZGVzdHJveSgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMiAr
MTc5LDE0IEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95KEpTQzo6SlMKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInJlZ3Vs
YXJBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxhckF0dHJpYnV0ZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVndWxhckF0dHJpYnV0
ZSgpKTsKQEAgLTE5NCwxMiArMTk2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFJlZ3VsYXIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5k
UHJpdmF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RHbG9iYWxPYmplY3QqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RH
bG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSgp
KTsKQEAgLTIxMCwxMiArMjE0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFB1YmxpY0EKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogRW5jb2RlZEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVi
bGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0Iiwg
InB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0
cmlidXRlKCkpOwpAQCAtMjI3LDEyICsyMzMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0UHVibGljQQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxl
ZEF0UnVudGltZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKCkpOwpAQCAtMjQzLDE4ICsyNTEsMjIgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZAogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHbG9iYWxPYmplY3Q6
OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7
CiB9CiAKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMjYzLDExICsyNzUsMTMg
QEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihFeAogCiBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxhckF0dHJpYnV0ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdEdsb2JhbE9iamVjdCIsICJyZWd1bGFyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTI4MCwxMSArMjk0LDEzIEBAIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnUKIAogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RHbG9iYWxPYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEdsb2JhbE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0yOTgsMTEgKzMxNCwxMyBA
QCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RHbG9iYWxPYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0
ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzE3
LDExICszMzUsMTMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YQog
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdEVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFs
T2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTM0MCwxNCArMzYwLDE3IEBAIEpTVmFs
dWUgSlNUZXN0R2xvYmFsT2JqZWN0OjpnZXRDb25zdHJ1Y3QKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJh
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9i
amVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0Iiwg
InJlZ3VsYXJPcGVyYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInJlZ3VsYXJPcGVyYXRpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEdsb2Jh
bE9iamVjdDo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFy
YW0gPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzU4LDE0ICszODEsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBzdGF0ZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtMzc4LDE0ICs0MDQsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEdsb2JhbE9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFs
T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0Iiwg
ImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTM5OCw2ICs0MjcsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9
IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFy
Z3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC00MDksMTcgKzQ0MSwyMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhCiAgICAgICAgIHJldHVybiBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEoc3RhdGUp
OwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJ0ZXN0UHJpdmF0ZUZ1
bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJ0ZXN0UHJpdmF0ZUZ1bmN0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RHbG9iYWxPYmplY3Q6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bXBsLnRlc3RQcml2YXRlRnVuY3Rpb24oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDEwICsyMjIsMTMg
QEAgc3RhdGljX2Fzc2VydChUZXN0U3VwcGxlbWVudGFsOjpDT05TVF9JTQogCiB0ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6
OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQo
Y2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHN0cjEgPSBzdGF0ZS0+YXJndW1lbnQoMCku
dG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQpAQCAtMjM1LDcgKzIzOCw3IEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCAKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIpOworICAgICAgICByZXR1cm4gdGhyb3dDb25z
dHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RJbnRlcmZh
Y2U6OmNyZWF0ZSgqY29udGV4dCwgV1RGTW92ZShzdHIxKSwgV1RGTW92ZShzdHIyKSwgZWMpOwog
ICAgIGlmIChVTkxJS0VMWShlYykpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBl
Yyk7CkBAIC00MTIsNyArNDE1LDkgQEAgdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OmRlc3Ryb3koSlND
OjpKU0NlbAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQog
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGlj
UmVhZE9ubHlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoVGVzdEludGVyZmFjZTo6aW1w
bGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC00MjMsNyArNDI4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0bwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlv
bjIzKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRz
U3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBUZXN0
SW50ZXJmYWNlOjppbXBsZW1lbnRzU3RhdGljQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC00MzQsMTIgKzQ0MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
MShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihk
ZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
ImltcGxlbWVudHNTdHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5pbXBsZW1lbnRzU3RyMSgp
KTsKQEAgLTQ1MSwxMiArNDYwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudHMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0
cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIyKCkpOwpAQCAtNDY4LDEy
ICs0NzksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMyIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdElu
dGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMyIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmltcGxlbWVudHNTdHIzKCpzdGF0ZSkpOwogfQpAQCAtNDgzLDEy
ICs0OTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogI2lm
IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdElu
dGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuaW1wbGVtZW50c05vZGUoKSk7CkBAIC01MDAs
NyArNTE1LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpz
dXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtNTExLDcgKzUyOCw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG8KICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25k
aXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxl
bWVudGFsU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdGF0aWNBdHRyKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTUyMiwxMiArNTQxLDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG8KICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0SW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIxIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKGltcGwpKTsK
QEAgLTUzOSwxMiArNTYwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnQKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxT
dHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBw
bGVtZW50YWxTdHIyKGltcGwpKTsKQEAgLTU1NiwxMiArNTc5LDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnQKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVy
ZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRh
bFN0cjMiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5z
dXBwbGVtZW50YWxTdHIzKCpzdGF0ZSkpOwogfQpAQCAtNTcxLDEyICs1OTYsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsTm9kZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUo
aW1wbCkpOwpAQCAtNTg3LDE4ICs2MTQsMjIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtNjMw
LDcgKzY2MSw5IEBAIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpwdXRCeUluZGV4KEpTQ2VsbCoKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIGJvb2wgc2V0SlNU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQzLDExICs2
NzYsMTMgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbQogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBs
ZW1lbnRzU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBA
IC02NjIsMTEgKzY5NywxMyBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIy
KEV4CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBib29s
IHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJm
YWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEltcGxl
bWVudHNTdHIzKCpzdGF0ZSwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjc3LDE2ICs3
MTQsMTggQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogYm9vbCBzZXRKU1Rlc3RJ
bnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBs
ZW1lbnRzTm9kZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIsICJOb2Rl
Iik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiLCAiTm9kZSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0SW1wbGVtZW50c05vZGUoKm5hdGl2ZVZhbHVl
KTsKQEAgLTY5OCw3ICs3MzcsOSBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNO
b2RlKEV4CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBi
b29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNzExLDExICs3NTIsMTMgQEAgYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1
cHBsZQogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogYm9v
bCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dU
RlN0cmluZyhzdGF0ZSk7CkBAIC03MzAsMTEgKzc3MywxMyBAQCBib29sIHNldEpTVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbFN0cjIoCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVu
dGFsU3RyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7CiAgICAgfQog
ICAgIGNhc3RlZFRoaXMtPnNldFN1cHBsZW1lbnRhbFN0cjMoKnN0YXRlLCB2YWx1ZSk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC03NDUsMTYgKzc5MCwxOCBAQCBib29sIHNldEpTVGVzdEludGVyZmFj
ZVN1cHBsZW1lbnRhbFN0cjMoCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFs
Tm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZh
bHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiLCAiTm9kZSIpOworICAgICAgICB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBs
ZW1lbnRhbE5vZGUiLCAiTm9kZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbE5vZGUoaW1wbCwgKm5h
dGl2ZVZhbHVlKTsKQEAgLTc3MSwxMCArODE4LDEzIEBAIEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNl
OjpnZXRDb25zdHJ1Y3RvcigKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25k
aXRpb24yMykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QxIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIs
ICJpbXBsZW1lbnRzTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5pbXBsZW1lbnRzTWV0aG9kMSgpOwpAQCAtNzg2
LDE0ICs4MzYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxl
bWVudHNNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2Ui
LCAiaW1wbGVtZW50c01ldGhvZDIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2Qy
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRl
cmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmICghY29udGV4dCkKQEAgLTgwMyw3ICs4NTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2JqQXJnIiwgIlRlc3RJbnRl
cmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDIiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJvYmpBcmciLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIsICJUZXN0T2JqIik7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1w
bC5pbXBsZW1lbnRzTWV0aG9kMigqY29udGV4dCwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnLCBl
YykpOwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC04MTUsMTAgKzg2OCwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhv
ZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1l
bnRzTWV0aG9kMyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDMiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5m
bygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmltcGxlbWVudHNN
ZXRob2QzKCpzdGF0ZSkpOwogfQpAQCAtODI4LDYgKzg4NCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJM
RShDb25kaXRpb24yMykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNNZXRob2Q0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTgzNywxMCArODk2LDEzIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9k
MSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMShpbXBsKTsKQEAgLTg1MiwxNCArOTE0
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxN
ZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsTWV0aG9kMiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMiIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJm
YWNlOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3Rh
dGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAg
ICBpZiAoIWNvbnRleHQpCkBAIC04NjksNyArOTM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUt
PmFyZ3VtZW50KDEpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJm
YWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJvYmpBcmciLCAi
VGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIiwgIlRlc3RPYmoiKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
ZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKGltcGwsICpjb250
ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRp
b24oc3RhdGUsIGVjKTsKQEAgLTg4MSwxMCArOTQ2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMyIpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VwcGxlbWVudGFsTWV0aG9kMygqc3RhdGUpKTsK
IH0KQEAgLTg5NCw2ICs5NjIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVu
Y3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFdlYkNvcmU6OlRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SXRlcmFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTggKzEzMSwyMiBAQCB2
b2lkIEpTVGVzdEl0ZXJhYmxlOjpkZXN0cm95KEpTQzo6SlNDZWxsCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNU
ZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRl
cmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEl0ZXJhYmxlOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNl
dEpTVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEl0ZXJhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM0LDEyICsxMzQsMTQgQEAgdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVz
dHJveQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRy
aWJ1dGVDdXN0b20oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0ZUN1c3RvbSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVDdXN0b20iKTsKICAgICB9
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0QXR0cmlidXRlQ3Vz
dG9tKCpzdGF0ZSkpOwogfQpAQCAtMTQ3LDEyICsxNDksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0bwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0
QXR0cmlidXRlUldDdXN0b20iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0
cmlidXRlUldDdXN0b20iKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT50ZXN0QXR0cmlidXRlUldDdXN0b20oKnN0YXRlKSk7CiB9CkBAIC0xNjAsMTggKzE2
NCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNl
dEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9t
T2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE4MCwx
MSArMTg4LDEzIEBAIGJvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHIKIAog
Ym9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iKTsKICAgICB9CiAg
ICAgY2FzdGVkVGhpcy0+c2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKCpzdGF0ZSwgdmFsdWUpOwog
ICAgIHJldHVybiB0cnVlOwpAQCAtMTk4LDEwICsyMDgsMTMgQEAgSlNWYWx1ZSBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0QwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IiLCAidGVzdEN1c3RvbUZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yIiwgInRlc3RDdXN0b21GdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmluZm8oKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0Q3VzdG9tRnVuY3Rpb24oKnN0
YXRlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSwxOCArMTI1LDIyIEBAIHZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6ZGVzdHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0xNTAsMTYgKzE1NCwxOSBAQCBKU1ZhbHVlIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmdlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciIsICJtZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJsaXN0
ZW5lciIsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsICJtZXRob2QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMCwgImxpc3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIp
OwogICAgIGF1dG8gbGlzdGVuZXIgPSBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZShh
c09iamVjdChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2QoV1RGTW92ZShsaXN0ZW5lcikpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDEwICs4MiwxMyBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3ROYW1lZENvCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGF1dG8gc3RyMSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBA
IC0xNTksMTggKzE2MiwyMiBAQCB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlc3Ryb3ko
SlNDCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0
YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw5IEBAIHR5cGVkZWYgSlNE
T01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlPiBKU1QKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9y
Kj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgYXV0byBv
YmplY3QgPSBUZXN0Tm9kZTo6Y3JlYXRlKCk7CkBAIC0xNjEsMTIgKzE2NCwxNCBAQCBKU09iamVj
dCogSlNUZXN0Tm9kZTo6cHJvdG90eXBlKFZNJiB2bSwgCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGUq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJu
YW1lIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5uYW1lKCkpOwpAQCAtMTc2LDE4ICsxODEsMjIgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2Rl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0Tm9kZVByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE5NiwxMSArMjA1LDEzIEBAIGJvb2wg
c2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSoKIAogYm9vbCBzZXRKU1Rlc3ROb2Rl
TmFtZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9kZSogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9kZSIsICJuYW1lIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9k
ZSIsICJuYW1lIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAJKHJldmlzaW9uIDIwNTE3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDEyICsxNDYsMTQgQEAgdm9pZCBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljOjpkZXN0cm95KEpTQwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMi
LCAibm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMi
LCAibm9uZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0ciIpOwogICAgIH0KICNpZiBFTkFCTEUoV0VC
X1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKTsKQEAgLTE4MSwxMiArMTgzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihkZWNvZGVkVGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0
ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkp
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CkBAIC0yMTYsMTIgKzIyMCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y0V4Y2VwdGlvbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyIik7CiAgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwpAQCAtMjUxLDEyICsyNTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1p
bmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKQEAgLTI5MCwxMiArMjk4LDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5v
bmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsK
ICAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0zMjUsMTggKzMzNSwy
MiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3RvcgpAQCAtMzQ1LDExICszNTksMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljQ29uc3RydWN0bwogCiBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlz
dGljV3JpdGVhYmxlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5p
c3RpY1dyaXRlYWJsZUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3Rh
dGUpOwpAQCAtMzYyLDExICszNzgsMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaQogCiBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlz
dGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9u
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlv
bkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzc5
LDExICszOTcsMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaQog
CiBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhj
ZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4
Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpA
QCAtMzk2LDExICs0MTYsMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaQogCiBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0
dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhj
ZXB0aW9uQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1Nl
dHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQyMCwxMCArNDQyLDEz
IEBAIEpTVmFsdWUgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3QKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlRnVuY3Rp
b25Ob25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljWmVy
b0FyZ0Z1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1pl
cm9BcmdGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDExIEBAIHRl
bXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bVR5cGU+IHAKIAogdGVtcGxhdGU8PiBUZXN0
T2JqOjpFbnVtVHlwZSBjb252ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBw
YXJzZTxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMTgxLDkgKzE4MywxMSBAQCB0ZW1w
bGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6Ok9wdGlvbmFsPiBwCiAKIHRlbXBsYXRlPD4gVGVzdE9i
ajo6T3B0aW9uYWwgY29udmVydDxUZXN0T2JqOjpPcHRpb25hbD4oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFy
c2U8VGVzdE9iajo6T3B0aW9uYWw+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFy
ZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTIyNCw5ICsyMjgsMTEgQEAgdGVtcGxh
dGU8PiBPcHRpb25hbDxBbHRlcm5hdGVFbnVtTmFtZT4gcAogCiB0ZW1wbGF0ZTw+IEFsdGVybmF0
ZUVudW1OYW1lIGNvbnZlcnQ8QWx0ZXJuYXRlRW51bU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNl
PEFsdGVybmF0ZUVudW1OYW1lPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVz
dWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0yNjUsOSArMjcxLDExIEBAIHRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnMKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpF
bnVtQSBjb252ZXJ0PFRlc3RPYmo6OkVudW1BPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2Jq
OjpFbnVtQT4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdC52YWx1ZSgpOwpAQCAtMzA4LDkgKzMxNiwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFs
PFRlc3RPYmo6OkVudW1CPiBwYXJzCiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUIgY29udmVy
dDxUZXN0T2JqOjpFbnVtQj4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6RW51bUI+KHN0
YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFs
dWUoKTsKQEAgLTM1MSw5ICszNjEsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpF
bnVtQz4gcGFycwogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1DIGNvbnZlcnQ8VGVzdE9iajo6
RW51bUM+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkVudW1DPihzdGF0ZSwgdmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0z
OTYsOSArNDA4LDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2UK
IAogdGVtcGxhdGU8PiBUZXN0T2JqOjpLaW5kIGNvbnZlcnQ8VGVzdE9iajo6S2luZD4oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8g
cmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6S2luZD4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtNDM5LDkgKzQ1MywxMSBA
QCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlCiAKIHRlbXBsYXRlPD4g
VGVzdE9iajo6U2l6ZSBjb252ZXJ0PFRlc3RPYmo6OlNpemU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNl
PFRlc3RPYmo6OlNpemU+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAg
IHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTQ4Miw5ICs0OTgsMTEgQEAgdGVtcGxhdGU8PiBP
cHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPgogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkNvbmZp
ZGVuY2UgY29udmVydDxUZXN0T2JqOjpDb25maWRlbmNlPihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxU
ZXN0T2JqOjpDb25maWRlbmNlPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVz
dWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
ICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC00OTcsMTEgKzUxNSwxMyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBjb25zdCBjaGFyKiBleHBlY3RlZEVuCiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8
VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFy
eT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gVGVzdE9i
ajo6RGljdGlvbmFyeSB7IHsgfSwgVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTEsIFRlc3RP
Ymo6OkVudW1UeXBlOjpFbXB0eVN0cmluZywgImRlZmF1bHRTdHJpbmciLCB7IH0sIGZhbHNlLCB7
IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIHsgfSwgeyB9LCAwLCAwLCB7IH0sIHsgfSwgeyB9LCAw
LCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7IH0sIDAsIG51bGxwdHIsIGpzVW5kZWZpbmVkKCks
IGpzVW5kZWZpbmVkKCksIHsgfSB9OwogICAgIGF1dG8qIG9iamVjdCA9IHZhbHVlLmdldE9iamVj
dCgpOwogICAgIGlmIChVTkxJS0VMWSghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IFJlZ0V4
cE9iamVjdFR5cGUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBOdWxs
b3B0OwogICAgIH0KICAgICBhdXRvIGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCA9IGNv
bnZlcnRPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlV2l0aG91
dERlZmF1bHQiKSkpOwpAQCAtNjAzLDkgKzYyMywxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRl
c3RPYmo6OkRpY3Rpb25hcnk+CiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlv
bmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsPihFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byogb2JqZWN0ID0gdmFs
dWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBl
KCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gcmVxdWlyZWRFbnVtZXJhdGlvblZhbHVl
ID0gY29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJyZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUi
KSkpOwpAQCAtNjIzLDExICs2NDUsMTMgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpE
aWN0aW9uYXJ5VAogCiB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0
U2hvdWxkVG9sZXJhdGVOdWxsPiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5
VGhhdFNob3VsZFRvbGVyYXRlTnVsbD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQog
ICAgICAgICByZXR1cm4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGwg
eyB7IH0sIHsgfSB9OwogICAgIGF1dG8qIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAg
IGlmIChVTkxJS0VMWSghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5
cGUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAg
IH0KICAgICBhdXRvIGVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0T3B0aW9uYWw8VGVzdE9iajo6
RW51bVR5cGU+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnN0YXRlLCAiZW51bWVyYXRpb25WYWx1ZSIpKSk7CkBAIC02MzksMTEgKzY2MywxMyBAQCB0
ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnlUCiAKIHRlbXBsYXRlPD4gT3B0
aW9uYWw8QWx0ZXJuYXRlRGljdGlvbmFyeU5hbWU+IGNvbnZlcnREaWN0aW9uYXJ5PEFsdGVybmF0
ZURpY3Rpb25hcnlOYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZSB7IHsgfSwgeyB9IH07CiAgICAgYXV0byog
b2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwg
b2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25W
YWx1ZSA9IGNvbnZlcnRPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZh
bHVlIikpKTsKQEAgLTExMDIsMTkgKzExMjgsMjIgQEAgc3RhdGljX2Fzc2VydChUZXN0T2JqOjpy
ZWFkb25seSA9PSAwLCAicgogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxl
ZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVj
dCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpz
dGF0ZSwgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7CisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOwogICAgIGF1dG8g
dGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMSwgInRlc3RDYWxs
YmFja0Z1bmN0aW9uIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgInRl
c3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsKICAgICBhdXRvIHRl
c3RDYWxsYmFja0Z1bmN0aW9uID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2Jq
ZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZh
aWxhYmxlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dD
b25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiKTsKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7
CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUoZG9jdW1lbnQsICp0ZXN0Q2FsbGJh
Y2ssICp0ZXN0Q2FsbGJhY2tGdW5jdGlvbik7CkBAIC0xNDk1LDEyICsxNTI0LDE0IEBAIGJvb2wg
SlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGUKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlM
b25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZWFkT25seUxvbmdBdHRyKCkp
OwpAQCAtMTUxMCwxMiArMTU0MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25s
eUxvbmdBdHRyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5U3Ry
aW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRPbmx5U3RyaW5nQXR0cigpKTsK
QEAgLTE1MjUsMTIgKzE1NTgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlT
dHJpbmdBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlUZXN0
T2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5yZWFkT25s
eVRlc3RPYmpBdHRyKCkpOwpAQCAtMTU0MCw3ICsxNTc1LDkgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUmVhZE9ubHlUZXN0T2JqQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1
Y3RvclN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0
T2JqOjpzdGF0aWNSZWFkT25seUxvbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKQEAgLTE1NDksNyArMTU4Niw5IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNvbnN0cnVjdG9yU3RhdGkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JT
dGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IFRlc3RPYmo6OnN0YXRpY1N0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTU1OCwxMiArMTU5NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDb25zdHJ1Y3RvclN0YXRpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9y
VGVzdFN1Yk9iaihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
IlRlc3RTdWJPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iaiIpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUt
PnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0xNTcxLDEyICsxNjEy
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFMKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nIik7CiAgICAgfQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZy
YW1lKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtMTU4OSwxMiArMTYzMiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2Jq
RW5hYmxlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2Rl
ZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZW51bUF0dHIiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiZW51bUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmVudW1BdHRyKCkpOwpAQCAtMTYwNCwxMiArMTY0OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpFbnVtQXR0cihFeGVjU3RhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYnl0ZUF0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAiYnl0ZUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
Ynl0ZUF0dHIoKSk7CkBAIC0xNjE5LDEyICsxNjY2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakJ5dGVBdHRyKEV4ZWNTdGEKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIm9jdGV0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5vY3RldEF0dHIoKSk7CkBAIC0xNjM0LDEyICsxNjgzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iak9jdGV0QXR0cihFeGVjU3QKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic2hvcnRB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInNob3J0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5zaG9ydEF0dHIoKSk7CkBAIC0xNjQ5LDEyICsxNzAwLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialNob3J0QXR0cihFeGVjU3QKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2xh
bXBlZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNsYW1wZWRTaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jbGFtcGVkU2hvcnRBdHRyKCkpOwpAQCAtMTY2
NCwxMiArMTcxNywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRy
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuZW5mb3JjZVJhbmdlU2hvcnRBdHRyKCkpOwpAQCAtMTY3OSwxMiAr
MTczNCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9yCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
dW5zaWduZWRTaG9ydEF0dHIoKSk7CkBAIC0xNjk0LDEyICsxNzUxLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJs
b25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC5sb25nQXR0cigpKTsKQEAgLTE3MDksMTIgKzE3NjgsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpM
b25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJsb25nTG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLmxvbmdMb25nQXR0cigpKTsKQEAgLTE3MjQsMTIgKzE3ODUsMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZQogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwpAQCAtMTczOSwxMiArMTgwMiwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJzdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHIoKSk7CkBAIC0xNzU0
LDEyICsxODE5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhlY1MK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVzdnN0cmluZ0F0dHIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAidXN2c3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwudXN2c3RyaW5nQXR0cigpKTsKQEAgLTE3NjksMTIgKzE4MzYsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0cihFeAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgInRlc3RPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RPYmpBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC50ZXN0
T2JqQXR0cigpKTsKQEAgLTE3ODQsMTIgKzE4NTMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqVGVzdE9iakF0dHIoRXhlYwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGFi
bGVPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
dGVzdE51bGxhYmxlT2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC50ZXN0TnVsbGFibGVPYmpBdHRyKCkpOwpAQCAtMTc5OSw3ICsxODcwLDkgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CkBAIC0xODE0LDEyICsxODg3LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXQKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqVW5mb3JnZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAidW5mb3JnZWFibGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVuZm9y
Z2VhYmxlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
dW5mb3JnZWFibGVBdHRyKCkpOwpAQCAtMTgyOSwxMiArMTkwNCwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIoCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmci
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpOwpAQCAtMTg0NCwxMiArMTkyMSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmciKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBpbXBsLnVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKCkpOwpAQCAtMTg1
OSwxMiArMTkzOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJl
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpbXBsZW1lbnRhdGlvbkVu
dW1BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudGF0aW9uRW51bUF0
dHIoKSk7CkBAIC0xODc0LDEyICsxOTU1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iaklt
cGxlbWVudGF0aW9uRW4KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIlhNTE9iakF0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwueG1sT2JqQXR0cigpKTsKQEAgLTE4ODksMTIg
KzE5NzIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihFeGVjUwogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJjcmVhdGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY3JlYXRlIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5pc0NyZWF0ZSgpKTsKQEAgLTE5MDQsMTIgKzE5ODks
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZQogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkc3RyaW5nYXR0ckF0dHIpKTsKQEAgLTE5MTksMTIgKzIwMDYs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQQogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWU3RyaW5nQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2c3RyaW5nYXR0ckF0dHIpKTsKQEAgLTE5
MzQsMTIgKzIwMjMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVNWU3Ry
aQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6cmVmbGVjdGVkaW50ZWdyYWxhdHRyQXR0cikpOwpAQCAtMTk0OSwxMiArMjA0MCwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0
dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTnVtYmVyKHN0ZDo6bWF4KDAsIGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSk7
CkBAIC0xOTY0LDEyICsyMDU3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFVuc2lnbmUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRC
b29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNCb29sZWFuKGltcGwuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cikpOwpAQCAtMTk3
OSwxMiArMjA3NCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFu
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVUkxBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJl
ZmxlY3RlZHVybGF0dHJBdHRyKSk7CkBAIC0xOTk0LDEyICsyMDkxLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UmVmbGVjdGVkVVNWVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInJlZmxlY3RlZFVTVlVSTEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVk
VVNWVVJMQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0
dHIpKTsKQEAgLTIwMDksMTIgKzIxMDgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkVVNWVVJMQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVj
dGVkU3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFN0cmluZ0F0
dHJBdHRyKSk7CkBAIC0yMDI0LDEyICsyMTI1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZFN0cmluZ0EKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxl
Y3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRJbnRlZ3Jh
bEF0dHJBdHRyKSk7CkBAIC0yMDM5LDEyICsyMTQyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialJlZmxlY3RlZEN1c3RvbUkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuaGFz
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3Rv
bUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpKTsKQEAgLTIwNTQsMTIgKzIxNTksMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21D
b250ZW50VVJMQXR0ckF0dHIpKTsKQEAgLTIwNzAsMTIgKzIxNzcsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5lbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlKCkpOwpAQCAtMjA4NiwxMiArMjE5NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpFbmFibGVkQXRSdW50aW1lCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJy
YXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidHlw
ZWRBcnJheUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnR5cGVkQXJy
YXlBdHRyKCkpOwpAQCAtMjEwMSwxMiArMjIxMiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpUeXBlZEFycmF5QXR0cihFCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTIxMTgsMTIgKzIyMzEsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRp
b25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldp
dGhNZXNzYWdlIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYzsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjEzNSwxMiArMjI1MCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4CiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CkBAIC0yMTUwLDEyICsyMjY3
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXgKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25XaXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKCkpOwpAQCAtMjE2NSwxMiArMjI4NCwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4CiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKQEAgLTIxODIsMTIgKzIzMDMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaW5nQXR0cldpdGhHZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
InN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKQEAg
LTIxOTcsMTIgKzIzMjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldp
dGhTZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2Rl
ZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tQXR0ciIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjdXN0b21BdHRyIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+Y3VzdG9tQXR0cigqc3RhdGUpKTsKIH0KQEAgLTIyMTAsMTIgKzIzMzUsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihFeGVjUwogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm9uZm9vIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9uZm9vIik7CiAgICAgfQogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJB
dHRyaWJ1dGUoY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQpKTsK
QEAgLTIyMjQsMTIgKzIzNTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT25mb28oRXhl
Y1N0YXRlKgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbndlYmtpdGZvbyhFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CiAgICAgfQogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShldmVudEhhbmRsZXJBdHRyaWJ1dGUoY2FzdGVk
VGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQpKTsKQEAgLTIyMzgsMTIgKzIz
NjcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT253ZWJraXRmb28oRXhlYwogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgqc3RhdGUpKTsKQEAg
LTIyNTMsMTIgKzIzODQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0
YXRlQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxs
V2l0aEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKCpz
dGF0ZSkpOwpAQCAtMjI2OCwxMiArMjQwMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpX
aXRoQ2FsbFdpdGhBbmRTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICB9CiAg
ICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFj
b250ZXh0KQpAQCAtMjI4NiwxMiArMjQyMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTIz
MDMsMTIgKzI0NDAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAg
fQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMjMyMywxMiArMjQ2MiwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAg
YXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250
ZXh0KQpAQCAtMjM0MSwxMiArMjQ4MiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CkBAIC0yMzYxLDEyICsyNTA0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMzc5LDEyICsyNTI0LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwud2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZSgpKTsKQEAgLTIzOTUsMTIgKzI1NDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZQogI2lmIEVOQUJMRShDb25kaXRpb24xKQogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRp
b25hbEF0dHIxKCkpOwpAQCAtMjQxMiwxMiArMjU2MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIxCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShD
b25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0
cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIyKCkpOwpAQCAtMjQyOSwxMiArMjU4MCwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIzKCkpOwpAQCAtMjQ0
NiwxMiArMjU5OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIz
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI0Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFs
QXR0cjQiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RB
OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KQEAgLTI0NjEsMTIgKzI2MTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyNAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9u
MikKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFs
QXR0cjUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEI6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMjQ3NiwxMiArMjYz
MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1CiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0T2JqZWN0Qzo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpKSk7CiB9CkBAIC0yNDkwLDEyICsyNjQ5LDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjYKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2Fj
aGVkQXR0cmlidXRlMShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMSIp
OwogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2Fj
aGVkQXR0cmlidXRlMS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNo
ZWRWYWx1ZSk7CkBAIC0yNTA4LDEyICsyNjY5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akNhY2hlZEF0dHJpYnV0ZTEKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmli
dXRlMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNhY2hl
ZEF0dHJpYnV0ZTIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMiIpOwogICAgIH0K
ICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmli
dXRlMi5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7
CkBAIC0yNTI2LDEyICsyNjg5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0
dHJpYnV0ZTIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYW55QXR0cmlidXRlIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgImFueUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5hbnlBdHRyaWJ1
dGUoKTsKQEAgLTI1NDEsMTIgKzI3MDYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55
QXR0cmlidXRlKEV4ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb250ZW50RG9jdW1lbnQo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb250ZW50RG9j
dW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29udGVudERvY3VtZW50Iik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShzdGF0ZSwgaW1wbC5jb250ZW50RG9jdW1lbnQo
KSkgPyB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5jb250ZW50
RG9jdW1lbnQoKSkgOiBqc051bGwoKSk7CkBAIC0yNTU1LDEyICsyNzIyLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudCgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAibXV0YWJsZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2ludCIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1N0YXRp
Y1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQb2ludD46OmNyZWF0ZShpbXBsLCBpbXBsLm11
dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRlTXV0YWJsZVBvaW50KSk7CkBAIC0yNTcwLDEy
ICsyNzM5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak11dGFibGVQb2ludChFeGUKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpbW11dGFibGVQb2ludCIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJpbW11dGFibGVQb2ludCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShp
bXBsLmltbXV0YWJsZVBvaW50KCkpKTsKQEAgLTI1ODUsMTIgKzI3NTYsMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAic3RyYXdiZXJyeSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmJsdWViZXJyeSgpKTsKQEAgLTI2MDAsMTIgKzI3NzMsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU3RyYXdiZXJyeShFeGVjUwogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgImRlc2NyaXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImRlc2NyaXB0aW9uIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmRlc2NyaXB0aW9uKCkpOwpAQCAtMjYxNSwxMiArMjc5
MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpEZXNjcmlwdGlvbihFeGVjCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiaWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiaWQiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuaWQoKSk7CkBAIC0yNjMwLDEyICsyODA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iaklkKEV4ZWNTdGF0ZSogc3QKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSGFzaChF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImhhc2giKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAiaGFzaCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IGltcGwuaGFzaCgpKTsKQEAgLTI2NDUsMTIgKzI4MjQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqSGFzaChFeGVjU3RhdGUqIAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZXBsYWNl
YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlcGxhY2VhYmxlQXR0
cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlcGxhY2VhYmxlQXR0cmlidXRl
KCkpOwpAQCAtMjY2MCwxMiArMjg0MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZXBs
YWNlYWJsZUF0dHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVs
bGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvTnVsbGFibGVKU051bWJlcihpbXBsLm51bGxhYmxlRG91
YmxlQXR0cmlidXRlKCkpOwpAQCAtMjY3NSwxMiArMjg1OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUxv
bmdBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvTnVsbGFibGVKU051bWJlcihpbXBsLm51bGxh
YmxlTG9uZ0F0dHJpYnV0ZSgpKTsKQEAgLTI2OTAsMTIgKzI4NzUsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpO
dWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5u
dWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoKSk7CkBAIC0yNzA1LDEyICsyODkyLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkEKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJudWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdPck51
bGwoc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoKSk7CkBAIC0yNzIwLDEyICsy
OTA5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXQKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUxvbmdTZXR0
YWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJp
YnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNzM1LDEyICsyOTI2LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ1NldHQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNTdHJpbmdPck51bGwoc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0
dHJpYnV0ZSgpKTsKQEAgLTI3NTAsMTIgKzI5NDMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqTnVsbGFibGVTdHJpbmdTZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVVT
VlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAibnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJudWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJsZVVTVlN0cmluZ1NldHRhYmxl
QXR0cmlidXRlKCkpOwpAQCAtMjc2NSwxMiArMjk2MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZVVTVlN0cmluCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
U3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFs
dWUiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTI3ODIsMTIgKzI5NzksMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJhdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGUoKSk7CkBAIC0yNzk3LDEyICsy
OTk2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3QKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyaWJ1dGVXaXRoUmVz
ZXJ2ZWRFbnVtVHlwZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cmli
dXRlV2l0aFJlc2VydmVkRW51bVR5cGUoKSk7CkBAIC0yODEyLDEyICszMDEzLDE0IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXMKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJwdXRGb3J3YXJkc0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJw
dXRGb3J3YXJkc0F0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucHV0Rm9yd2FyZHNBdHRyaWJ1dGUoKSk7CkBAIC0yODI3
LDEyICszMDMwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmkK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0
dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIGltcGwucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpKTsKQEAgLTI4NDIsMTIg
KzMwNDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKTsKQEAgLTI4
NTcsMTggKzMwNjQsMjIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5naWZpZXJBdHRy
aQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1Rlc3RPYmpQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9y
KHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0
SlNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAt
Mjg3Nyw3ICszMDg4LDkgQEAgYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IAogCiBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg4
OCwxMSArMzEwMSwxMyBAQCBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5n
CiAKIGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KICAgICByZXR1
cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHN0YXRlLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgdmFsdWUpOwpAQCAtMjkw
MSwxMSArMzExNiwxMyBAQCBib29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
CiAKIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiZW51bUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZW51bUF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gcGFyc2U8VGVzdE9iajo6RW51bVR5cGU+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMjkyMCwx
MSArMzEzNywxMyBAQCBib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhCiAK
IGJvb2wgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiYnl0ZUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYnl0ZUF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDxpbnQ4X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAt
MjkzNywxMSArMzE1NiwxMyBAQCBib29sIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSog
c3RhCiAKIGJvb2wgc2V0SlNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm9jdGV0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvY3RldEF0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDx1aW50OF90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTI5NTQsMTEgKzMxNzUsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIo
RXhlY1N0YXRlKiBzdAogCiBib29sIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2hvcnRB
dHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MTZfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0yOTcxLDExICszMTk0LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3QKIAogYm9vbCBzZXRKU1Rlc3RPYmpDbGFtcGVkU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNsYW1wZWRTaG9ydEF0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PGludDE2X3Q+KCpzdGF0ZSwgdmFsdWUsIENsYW1wKTsKQEAgLTI5ODgsMTEgKzMyMTMsMTMg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKEV4ZWNTdAogCiBib29sIHNldEpT
VGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZW5mb3JjZVJh
bmdlU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MTZfdD4oKnN0YXRlLCB2
YWx1ZSwgRW5mb3JjZVJhbmdlKTsKQEAgLTMwMDUsMTEgKzMyMzIsMTMgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHIoRQogCiBib29sIHNldEpTVGVzdE9ialVuc2lnbmVk
U2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuc2lnbmVkU2hv
cnRBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8dWludDE2X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzAyMiwxMSArMzI1MSwxMyBAQCBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRy
KEV4ZWNTCiAKIGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAibG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibG9uZ0F0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTMwMzksMTEgKzMyNzAsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMb25nQXR0cihF
eGVjU3RhdGUqIHN0YQogCiBib29sIHNldEpTVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nTG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50NjRfdD4oKnN0YXRlLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMDU2LDExICszMjg5LDEzIEBAIGJvb2wgc2V0
SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSoKIAogYm9vbCBzZXRKU1Rlc3RPYmpVbnNp
Z25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bnNp
Z25lZExvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PHVpbnQ2NF90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKTsKQEAgLTMwNzMsMTEgKzMzMDgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpVbnNp
Z25lZExvbmdMb25nQXR0cihFeAogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0ciIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJzdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsK
QEAgLTMwOTAsMTEgKzMzMjcsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogcwogCiBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3Zz
dHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHZhbHVl
KTsKQEAgLTMxMDcsMTYgKzMzNDYsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRy
KEV4ZWNTdGF0ZQogCiBib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RP
YmpBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RPYmpBdHRyIiwgIlRlc3RPYmoiKTsK
KyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJ0ZXN0T2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgaW1wbC5zZXRUZXN0T2JqQXR0cigqbmF0aXZlVmFsdWUpOwpAQCAtMzEy
NiwxOCArMzM2NywyMCBAQCBib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSog
CiAKIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
InRlc3ROdWxsYWJsZU9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IG51bGxwdHI7CiAgICAg
aWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG5hdGl2ZVZhbHVlID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2
ZVZhbHVlKSkgewotICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIiwgIlRlc3RPYmoiKTsKKyAgICAgICAg
ICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAidGVzdE51bGxhYmxlT2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTQ4LDcgKzMzOTEsOSBAQCBib29sIHNl
dEpTVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlCiAKIGJvb2wgc2V0SlNUZXN0T2JqTGVu
aWVudFRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7CkBAIC0zMTU3
LDcgKzM0MDIsNyBAQCBib29sIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihFeGVjCiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibGVuaWVudFRlc3RPYmpBdHRyIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhy
b3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJs
ZW5pZW50VGVzdE9iakF0dHIiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIGltcGwuc2V0TGVuaWVudFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CkBAIC0z
MTY3LDExICszNDEyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4
ZWMKIAogYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmlu
ZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzE4NCwxMSArMzQzMSwxMyBAQCBib29s
IHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBCiAKIGJvb2wgc2V0SlNUZXN0T2Jq
VXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmci
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmci
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoc3RhdGUsIHZhbHVlKTsKQEAgLTMyMDEsMTEgKzM0NTAsMTMgQEAgYm9vbCBzZXRKU1Rlc3RP
YmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdQogCiBib29sIHNldEpTVGVzdE9iakltcGxlbWVudGF0
aW9uRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1wbGVtZW50
YXRpb25FbnVtQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpbXBsZW1lbnRhdGlvbkVudW1BdHRyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IHBhcnNlPEFsdGVybmF0ZUVudW1OYW1lPigqc3RhdGUsIHZhbHVlKTsK
QEAgLTMyMjAsMTYgKzM0NzEsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVu
dW1BdHRyKAogCiBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIlhNTE9iakF0dHIiLCAiVGVzdE9iaiIpOworICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIlhNTE9iakF0dHIiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIGltcGwuc2V0WE1MT2JqQXR0cigqbmF0aXZlVmFsdWUpOwpAQCAtMzIzOSwxMSArMzQ5
MiwxMyBAQCBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBzCiAKIGJvb2wg
c2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNy
ZWF0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJjcmVhdGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9C
b29sZWFuKHN0YXRlKTsKQEAgLTMyNTYsMTEgKzM1MTEsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpD
cmVhdGUoRXhlY1N0YXRlKiBzdGF0ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkU3RyaW5n
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMyNzMsMTEgKzM1MzAsMTMgQEAgYm9v
bCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9i
alJlZmxlY3RlZFVTVlN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAicmVmbGVjdGVkVVNWU3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZT
dHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHZhbHVl
KTsKQEAgLTMyOTAsMTEgKzM1NDksMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVU1ZT
dHJpbmdBdHRyKAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMzA3
LDExICszNTY4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEUK
IAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0
ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBjb252ZXJ0PHVpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTMzMjQsMTEgKzM1ODcsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRV
bnNpZ25lZEludGVncgogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZh
bHVlLnRvQm9vbGVhbihzdGF0ZSk7CkBAIC0zMzQxLDExICszNjA2LDEzIEBAIGJvb2wgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXgKIAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVS
TEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUg
PSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zMzU4LDExICszNjI1LDEzIEBAIGJvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3QKIAogYm9vbCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJl
ZmxlY3RlZFVTVlVSTEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nKHN0YXRlLCB2YWx1ZSk7CkBAIC0zMzc1
LDExICszNjQ0LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWVVJMQXR0cihFeGUK
IAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
cmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhz
dGF0ZSk7CkBAIC0zMzkyLDExICszNjYzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
U3RyaW5nQXR0cihFeGUKIAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9t
SW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1h
bENvbnZlcnNpb24pOwpAQCAtMzQwOSwxMSArMzY4MiwxMyBAQCBib29sIHNldEpTVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUludGVncmFsCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
Qm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVk
Q3VzdG9tQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVh
bkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTM0MjYs
MTEgKzM3MDEsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQQog
CiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RG
U3RyaW5nKHN0YXRlKTsKQEAgLTM0NDQsMTEgKzM3MjEsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRDdXN0b21VUkxBdHRyKAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBib29sIHNl
dEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RG
U3RyaW5nKHN0YXRlKTsKQEAgLTM0NjIsMTggKzM3NDEsMjAgQEAgYm9vbCBzZXRKU1Rlc3RPYmpF
bmFibGVkQXRSdW50aW1lQXR0cmlidQogCiBib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInR5cGVkQXJyYXlBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHRvRmxvYXQzMkFy
cmF5KHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0g
ICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidHlw
ZWRBcnJheUF0dHIiLCAiRmxvYXQzMkFycmF5Iik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidHlwZWRBcnJheUF0dHIi
LCAiRmxvYXQzMkFycmF5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1w
bC5zZXRUeXBlZEFycmF5QXR0cihuYXRpdmVWYWx1ZS5nZXQoKSk7CkBAIC0zNDgzLDExICszNzY0
LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXQKIAogYm9vbCBz
ZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+
KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzUwMCwxMSArMzc4MywxMyBA
QCBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTM1MTcsMTEgKzM4MDIsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbgogCiBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkBAIC0zNTM2LDExICszODIzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24KIAogYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYzsKQEAg
LTM1NTUsMTEgKzM4NDQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbgogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTM1NzIsMTEgKzM4
NjMsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4YwogCiBib29s
IHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC0zNTkxLDExICszODg0LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGMKIAogYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY3Vz
dG9tQXR0ciIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRDdXN0b21BdHRyKCpzdGF0ZSwg
dmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzYwNCwxMSArMzg5OSwxMyBAQCBib29sIHNl
dEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzCiAKIGJvb2wgc2V0SlNUZXN0T2JqT25m
b28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAib25mb28iKTsKICAgICB9CiAgICAgc2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlKCpzdGF0
ZSwgKmNhc3RlZFRoaXMsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgZXZlbnROYW1lcygpLmZvb0V2
ZW50LCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNjE3LDExICszOTE0LDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqT25mb28oRXhlY1N0YXRlKiBzdGF0ZSwKIAogYm9vbCBzZXRKU1Rlc3RP
YmpPbndlYmtpdGZvbyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvbndlYmtp
dGZvbyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJvbndlYmtpdGZvbyIpOwogICAgIH0KICAgICBzZXRFdmVu
dEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTM2MzAsMTEgKzM5MjksMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpPbndlYmtpdGZvbyhFeGVjU3Rh
dGUqIAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
NjQ3LDExICszOTQ4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXQKIAogYm9vbCBzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbFdpdGhBbmRT
ZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbFdpdGhBbmRT
ZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+
KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzY2NCwxNiArMzk2NywxOCBA
QCBib29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUi
LCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBhdXRv
KiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM2ODYsMTYgKzM5OTEs
MTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAogCiBib29sIHNl
dEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2
ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsICJUZXN0T2JqIik7Cisg
ICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpbXBsLnNldFdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcygqc3RhdGUsICpuYXRpdmVWYWx1ZSk7CkBAIC0zNzA1LDE2ICs0MDEyLDE4
IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXQKIAogYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dB
dHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsICJUZXN0T2JqIik7CisgICAgICAgIHRocm93QXR0
cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwpAQCAtMzcyNywxNiArNDAzNiwxOCBAQCBib29sIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250CiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQo
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICJUZXN0T2JqIik7CisgICAgICAg
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsICJU
ZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYXV0byogY29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0zNzQ5LDE2ICs0MDYwLDE4IEBAIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3NzEsMTYgKzQwODQsMTggQEAgYm9vbCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRy
aWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsICJU
ZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYXV0byogY29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0zNzkzLDE2ICs0MTA4LDE4IEBAIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAogYm9vbCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRy
aWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0
dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2Fs
bFN0YWNrQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICBpbXBsLnNldFdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUoKm5hdGl2ZVZhbHVlKTsKQEAgLTM4MTMsMTEgKzQxMzAsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQwogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
Ym9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9u
YWxBdHRyMSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUs
IE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzgzMiwxMSArNDE1MSwxMyBAQCBib29sIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVO
QUJMRShDb25kaXRpb24yKQogYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMy
X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzg1MSwxMSArNDE3Miwx
MyBAQCBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0CiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogYm9vbCBzZXRKU1Rlc3RPYmpDb25k
aXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlv
bmFsQXR0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzg3MCwxMSArNDE5MywxMyBAQCBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMo
RXhlY1N0CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJj
b25kaXRpb25hbEF0dHI0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKICAg
ICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCiAgICAgcmV0dXJu
IGNhc3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhzdGF0ZSwgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwpAQCAtMzg4NSwxMSArNDIxMCwx
MyBAQCBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1CiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogYm9vbCBzZXRKU1Rlc3RPYmpDb25k
aXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1Iik7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgogICAgIHJl
dHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI1IiksIHZhbHVlKTsKQEAgLTM5MDAsMTEgKzQy
MjcsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydQogI2lmIEVO
QUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIGJvb2wgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRy
NiIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KICAg
ICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRyNiIpLCB2YWx1ZSk7CkBAIC0zOTE0LDEx
ICs0MjQzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnUKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiYW55QXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImFueUF0dHJpYnV0ZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSB2YWx1ZTsKQEAgLTM5MjksMTggKzQyNjAsMjAgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKgogCiBib29sIHNldEpTVGVzdE9iak11dGFibGVQ
b2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Piog
bmF0aXZlVmFsdWUgPSBudWxscHRyOwogICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSkgewogICAgICAgICBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgICAgICB0aHJv
d0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2ludCIs
ICJTVkdQb2ludCIpOworICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiLCAiU1ZHUG9pbnQiKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM5NTEsMTgg
KzQyODQsMjAgQEAgYm9vbCBzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRlKgogCiBi
b29sIHNldEpTVGVzdE9iakltbXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgImltbXV0YWJsZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUgPSBudWxscHRyOwogICAg
IGlmICghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBuYXRpdmVWYWx1ZSA9
IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbmF0
aXZlVmFsdWUpKSB7Ci0gICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50IiwgIlNWR1BvaW50Iik7CisgICAgICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgImltbXV0YWJsZVBvaW50IiwgIlNWR1BvaW50Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zOTczLDExICs0MzA4LDEzIEBAIGJvb2wgc2V0SlNU
ZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXQKIAogYm9vbCBzZXRKU1Rlc3RPYmpTdHJhd2Jl
cnJ5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmF3YmVycnkiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAic3RyYXdiZXJyeSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+
KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzk5MCwxMSArNDMyNywxMyBA
QCBib29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaWQiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAiaWQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTQwMDcsMTEgKzQzNDYsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRlLCBFbgogCiBib29sIHNldEpTVGVzdE9ialJlcGxh
Y2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlcGxh
Y2VhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LgogICAgIHJldHVy
biBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoc3RhdGUsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpLCB2YWx1ZSk7CkBAIC00MDIwLDExICs0
MzYxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXgKIAogYm9v
bCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtNDAzNywxMSArNDM4MCwxMyBAQCBib29sIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRh
YmxlQXR0CiAKIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1NldHRh
YmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxD
aGVjayhzdGF0ZSwgdmFsdWUpOwpAQCAtNDA1NCwxMSArNDM5OSwxMyBAQCBib29sIHNldEpTVGVz
dE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBCiAKIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVV
U1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJudWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFs
dWVUb1VTVlN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhzdGF0ZSwgdmFsdWUpOwpAQCAt
NDA3MSwxMSArNDQxOCwxMyBAQCBib29sIHNldEpTVGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0
dGFiCiAKIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90
Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTQwODgsMTEgKzQ0MzcsMTMg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZQogCiBib29sIHNldEpT
VGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHBh
cnNlPFRlc3RPYmo6Ok9wdGlvbmFsPigqc3RhdGUsIHZhbHVlKTsKQEAgLTQxMDcsMTEgKzQ0NTgs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbgogCiBib29sIHNl
dEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndh
cmRzQXR0cmlidXRlIik7CiAgICAgfQogICAgIFJlZjxUZXN0Tm9kZT4gZm9yd2FyZGVkSW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpOwogICAgIGF1dG8m
IGltcGwgPSBmb3J3YXJkZWRJbXBsLmdldCgpOwpAQCAtNDEyNSwxMSArNDQ3OCwxMyBAQCBib29s
IHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4CiAKIGJvb2wgc2V0SlNUZXN0T2Jq
UHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInB1
dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgUmVmUHRyPFRlc3ROb2Rl
PiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzTnVsbGFi
bGVBdHRyaWJ1dGUoKTsKICAgICBpZiAoIWZvcndhcmRlZEltcGwpCkBAIC00MTQ1LDExICs0NTAw
LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHIKIAogYm9vbCBz
ZXRKU1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJzdHJpbmdpZmllckF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdp
ZmllckF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nKHN0YXRlLCB2
YWx1ZSk7CkBAIC00MTc3LDE0ICs0NTM0LDE3IEBAIEpTVmFsdWUgSlNUZXN0T2JqOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0KICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC00MTk3LDE0ICs0NTU3LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJh
bSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDIxNyw2ICs0
NTgwLDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1l
bnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBk
aXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKQEAgLTQyMjgs
MTYgKzQ1OTQsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
ICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uMShzdGF0ZSk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8
IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwg
MSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
fQogI2VuZGlmCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAidm9pZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZCIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC52b2lkTWV0aG9kKCk7
CkBAIC00MjQ2LDE0ICs0NjE1LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInZvaWRNZXRob2RXaXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdp
dGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbG9uZ0FyZyA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZl
cnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDI2MiwxNyArNDYz
NCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcg
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwogICAgIGlmIChVTkxJ
S0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0
YXRlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhBcmdzIiwgIlRl
c3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhBcmdz
IiwgIlRlc3RPYmoiKTsKICAgICBpbXBsLnZvaWRNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGxvbmdB
cmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiYnl0ZU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYnl0ZU1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRob2QoKSk7CkBAIC00MjgxLDE0ICs0NjU2
LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRo
b2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRo
b2RXaXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYnl0ZUFyZyA9IGNvbnZlcnQ8aW50OF90Pigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00Mjk3LDE3ICs0Njc1LDIwIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAi
VGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpB
cmciLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlTWV0aG9kV2l0aEFyZ3MoV1RGTW92
ZShieXRlQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJvY3RldE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZCgpKTsKQEAgLTQzMTYsMTQg
KzQ2OTcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0
ZXRNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9j
dGV0TWV0aG9kV2l0aEFyZ3MiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBvY3RldEFyZyA9IGNvbnZlcnQ8
dWludDhfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDMzMiwxNyArNDcxNiwyMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwogICAgIGlmIChVTkxJS0VMWSghb2Jq
QXJnKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAyLCAi
b2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiLCAiVGVz
dE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldE1ldGhvZFdp
dGhBcmdzKFdURk1vdmUob2N0ZXRBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bG9uZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdNZXRob2QoKSk7CkBA
IC00MzUxLDE0ICs0NzM4LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgImxvbmdNZXRob2RXaXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhB
cmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbG9uZ0FyZyA9IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDM2NywxNyArNDc1Nywy
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBK
U1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMikpOwogICAgIGlmIChVTkxJS0VM
WSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhBcmdzIiwgIlRlc3RP
YmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhBcmdzIiwg
IlRlc3RPYmoiKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ01ldGhv
ZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
b2JqTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLm9iak1ldGhvZCgpKTsKQEAgLTQzODYsMTQgKzQ3NzksMTcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3MoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2RXaXRoQXJncyIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAib2JqTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC00NDAyLDE3ICs0Nzk4LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1
bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJv
YmpNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0
IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZFdp
dGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdlYWJsZU1ldGhvZCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAidW5mb3JnZWFibGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC51bmZvcmdlYWJsZU1ldGhvZCgpKTsKQEAgLTQ0MjEsMTQgKzQ4MjAsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVs
bEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBhcmcgPSB2YWx1ZVRvU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyhzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTQ0MzgsMjkgKzQ4NDAsMzUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2
ZXJQYXJhbWV0ZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJh
bWV0ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byByZXNvbHZlciA9
IEpTWFBhdGhOU1Jlc29sdmVyOjp0b1dyYXBwZWQoKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghcmVz
b2x2ZXIpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJyZXNvbHZlciIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJh
bWV0ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIsICJYUGF0aE5TUmVzb2x2ZXIi
KTsKICAgICBpbXBsLm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoKnJlc29sdmVy
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFi
bGVTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxs
YWJsZVN0cmluZ01ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdPck51bGwoc3RhdGUsIGltcGwubnVsbGFibGVTdHJpbmdNZXRo
b2QoKSk7CkBAIC00NDY5LDIwICs0ODc3LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgVGVzdE9iajo6bnVs
bGFibGVTdHJpbmdTdGF0aWNNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJudWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBpbmRleCA9IGNvbnZlcnQ8dWludDMyX3Q+KCpzdGF0ZSwgc3Rh
dGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTQ0OTIsMjEgKzQ5MDYsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aEVudW1BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBl
bnVtQXJnVmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CiAgICAgVGVzdE9iajo6RW51bVR5cGUg
ZW51bUFyZzsKICAgICBhdXRvIG9wdGlvbmFsVmFsdWUgPSBwYXJzZTxUZXN0T2JqOjpFbnVtVHlw
ZT4oKnN0YXRlLCBlbnVtQXJnVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGlmIChVTkxJS0VMWSghb3B0aW9uYWxWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6RW51bVR5cGU+KCkpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1U
eXBlPigpKTsKICAgICBlbnVtQXJnID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpOwogICAgIGltcGwu
bWV0aG9kV2l0aEVudW1BcmcoZW51bUFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTQ1MTQsMTAgKzQ5MzEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1Bcmci
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmciKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFyZ1ZhbHVl
ID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAtNDUyNyw3ICs0OTQ3LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghZW51bUFyZykpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsIDAsICJlbnVtQXJn
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIsIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiZW51
bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmciLCBleHBlY3Rl
ZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsKICAgICB9CiAgICAgaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NTM1LDEwICs0OTU1LDEzIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGVudW1BcmdWYWx1ZSA9
IHN0YXRlLT5hcmd1bWVudCgwKTsKQEAgLTQ1NTAsNyArNDk3Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9wdGlvbmFsVmFsdWUpKQotICAgICAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51
bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0
VmFsdWUiLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0
T2JqOjpFbnVtVHlwZT4oKSk7CiAgICAgICAgIGVudW1BcmcgPSBvcHRpb25hbFZhbHVlLnZhbHVl
KCk7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRW
YWx1ZShlbnVtQXJnKTsKQEAgLTQ1NTksMjEgKzQ5ODIsMjQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
cyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3MiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8g
b2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKCpzdGF0ZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJvYmpBcmciLCAiVGVzdE9iamVj
dCIsICJtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiwgIlRlc3RPYmoiKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBpbXBsLm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoV1RGTW92ZShzdHJBcmcp
LCAqb2JqQXJnLCBlYykpOwogCiAgICAgc2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC00
NTgyLDE0ICs1MDA4LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoVVNWU3RyaW5nQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
VVNWU3RyaW5nQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3Ry
ID0gdmFsdWVUb1VTVlN0cmluZyhzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ1OTksMTQgKzUwMjgsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3Ry
aW5nQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51
bGxhYmxlVVNWU3RyaW5nQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZT
dHJpbmdBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSB2
YWx1ZVRvVVNWU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDYxNiwxNCAr
NTA0OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIHN0ciA9IHZhbHVlVG9VU1ZTdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtNDYzMywxNCArNTA2OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJzZXJpYWxpemVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInNlcmlhbGl6ZWRWYWx1ZSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWRBcmcgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCAw
LCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ2NTAsMTQgKzUwODgs
MTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09i
amVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9wdGlvbnNPYmplY3Qi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm9wdGlvbnNPYmplY3QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBvbyA9IERpY3Rpb25hcnkoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7
CiAgICAgYXV0byBvb28gPSBEaWN0aW9uYXJ5KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwog
ICAgIGltcGwub3B0aW9uc09iamVjdChXVEZNb3ZlKG9vKSwgV1RGTW92ZShvb28pKTsKQEAgLTQ2
NjYsMTAgKzUxMDcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFeGNlcHRp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDY4MCwxMCArNTEyNCwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uV2l0aE1l
c3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFeGNlcHRpb25XaXRo
TWVzc2FnZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwpAQCAtNDY5NCwzNCArNTE0MSw0MyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjdXN0b21NZXRob2QiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgImN1c3RvbU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kKCpzdGF0ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0
aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjdXN0b21NZXRob2RX
aXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmN1c3RvbU1ldGhvZFdpdGhBcmdz
KCpzdGF0ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInByaXZhdGVNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInByaXZhdGVNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IHN0YXRlLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC00NzMxLDE0ICs1MTg3LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlTWV0aG9kIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJwdWJsaWNBbmRQcml2YXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gYXJndW1lbnQgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDc0OCwyMCArNTIwNywyMyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3Rl
bmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYWRkRXZlbnRMaXN0ZW5l
ciIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIHR5cGUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gbGlzdGVu
ZXIgPSBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShzdGF0ZS0+YXJndW1lbnQoMSksICpjYXN0ZWRU
aGlzLCBmYWxzZSwgY3VycmVudFdvcmxkKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFsaXN0
ZW5lcikpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMSwg
Imxpc3RlbmVyIiwgIlRlc3RPYmplY3QiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJFdmVudExpc3Rl
bmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgMSwgImxpc3RlbmVyIiwgIlRlc3RPYmplY3QiLCAiYWRkRXZlbnRMaXN0ZW5lciIs
ICJFdmVudExpc3RlbmVyIik7CiAgICAgYXV0byB1c2VDYXB0dXJlID0gc3RhdGUtPmFyZ3VtZW50
KDIpLnRvQm9vbGVhbihzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC00NzcxLDIwICs1MjMzLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJyZW1vdmVFdmVudExpc3RlbmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZW1vdmVFdmVudExp
c3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdHlwZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQoc3Rh
dGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIsICJy
ZW1vdmVFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAibGlzdGVuZXIiLCAi
VGVzdE9iamVjdCIsICJyZW1vdmVFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKICAg
ICBhdXRvIHVzZUNhcHR1cmUgPSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3OTQsMTAgKzUyNTksMTMgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
Vm9pZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0
ZVZvaWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwud2l0aFNjcmlwdFN0
YXRlVm9pZCgqc3RhdGUpOwpAQCAtNDgwNiwxMCArNTI3NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVPYmoiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0U3RhdGVPYmooKnN0YXRlKSk7CkBA
IC00ODIwLDEwICs1MjkxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAg
LTQ4MzQsMTAgKzUzMDgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDg1
MSwxMCArNTMyOCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CkBAIC00ODY2LDEwICs1MzQ2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKQEAgLTQ4ODEsMTAgKzUzNjQsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9i
akV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDkwMSwxMCArNTM4NywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlcyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC00OTE4
LDEwICs1NDA3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3Jp
cHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3Vt
ZW50cyhzdGF0ZSwgMCkpOwpAQCAtNDkzMSwxMCArNTQyMywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudChFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhEb2N1bWVudEFyZ3VtZW50Iik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJ3aXRoRG9jdW1lbnRBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CkBAIC00OTQ4LDEwICs1NDQzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Iik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBkb2N1bWVudCA9
IGNhbGxlckRPTVdpbmRvdyhzdGF0ZSkuZG9jdW1lbnQoKTsKQEAgLTQ5NjMsMTAgKzU0NjEsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldp
bmRvd0FyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aENh
bGxlcldpbmRvd0FyZ3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1l
bnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGltcGwud2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KGNhbGxlckRPTVdpbmRvdyhzdGF0ZSkpOwpA
QCAtNDk3NSwxMCArNTQ3NiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/
IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTQ5OTAsMTAgKzU0OTQs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gb3B0ID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyA2NjYgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUw
MDUsMTQgKzU1MTIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25h
bEFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxB
cmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBub25PcHQgPSBjb252
ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTUwMjUsMTQgKzU1MzUsMTcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3Mi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBub25PcHQgPSBjb252ZXJ0
PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTUwNDgsMTAgKzU1NjEsMTMgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmci
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MDYzLDEw
ICs1NTc5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE9wdGlvbmFsVVNWU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gU3RyaW5nKCkgOiB2YWx1ZVRvVVNWU3RyaW5nKHN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwpAQCAtNTA3OCwxMCArNTU5NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IG51bGxBdG9tIDog
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJp
bmcoc3RhdGUpOwpAQCAtNTA5MywxMCArNTYxNSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFs
dWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRl
ZmluZWQoKSA/IEFTQ0lJTGl0ZXJhbCgiZm9vIikgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtNTEwOCwxMCArNTYzMywxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNT
dHJpbmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBz
dHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IEF0b21pY1N0cmluZygiZm9v
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01
MTIzLDEwICs1NjUxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbCIpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtNTEzOCwxMCArNTY2OSwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc1VuZGVmaW5lZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoc3RhdGUpOwpAQCAtNTE1MywxMCArNTY4NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJ
c051bGwoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxBdG9taWNTdHJpbmdJc051bGwiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25h
bEF0b21pY1N0cmluZ0lzTnVsbCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWQoKSA/IG51bGxBdG9tIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0
YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwpAQCAtNTE2OCwxMCArNTcwNSwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtNTE4MywxMCArNTcyMywxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxV
U1ZTdHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0
ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiB2YWx1ZVRvVVNW
U3RyaW5nKHN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNTE5OCwxMCAr
NTc0MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0
eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNF
bXB0eVN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IGVt
cHR5QXRvbSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRv
QXRvbWljU3RyaW5nKHN0YXRlKTsKQEAgLTUyMTMsMTAgKzU3NTksMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU4oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxEb3VibGVJc05hTiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNO
YU4iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGF1dG8gbnVtYmVyID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDAp
LCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKQEAgLTUyMjgsMTAgKzU3NzcsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
RmxvYXRJc05hTihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbEZsb2F0SXNOYU4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEZs
b2F0SXNOYU4iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDxmbG9hdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwpAQCAtNTI0MywxMCArNTc5NSwxMyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxM
b25nTG9uZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBudW1iZXIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9w
dGlvbmFsPGludDY0X3Q+KCkgOiBjb252ZXJ0PGludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUyNTgsMTAgKzU4MTMsMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsTG9uZ0xvbmdJc1plcm8oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDxpbnQ2NF90Pigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC01MjczLDEw
ICs1ODMxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IHN0
YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8dWludDY0X3Q+KCkgOiBj
b252ZXJ0PHVpbnQ2NF90Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC01Mjg4LDEwICs1ODQ5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xv
bmdJc1plcm8oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IGNvbnZlcnQ8dWludDY0
X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUz
MDMsMTAgKzU4NjcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYXJyYXkgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNV
bmRlZmluZWQoKSA/IE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PigpIDogdG9OYXRpdmVBcnJheTxT
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTUzMTgsMTAg
KzU4ODUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5Iik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYXJyYXkgPSBzdGF0ZS0+
YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFZlY3RvcjxTdHJpbmc+KCkgOiB0b05hdGl2ZUFy
cmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNTMz
MywxMCArNTkwMywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBiID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
KCkgPyBPcHRpb25hbDxib29sPigpIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvQm9v
bGVhbihzdGF0ZSk7CkBAIC01MzQ4LDEwICs1OTIxLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9v
bGVhbklzRmFsc2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0Zh
bHNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIGIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTUzNjMs
MTAgKzU5MzksMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxBbnkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKQEAgLTUzNzYsMTcgKzU5NTUsMjAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RPYmoqIG9iaiA9IG51bGxwdHI7CiAgICAgaWYg
KCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBvYmog
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIW9iaikpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAib2JqIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyIiwgIlRlc3RPYmoiKTsK
ICAgICB9CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoV1RGTW92
ZShvYmopKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NTM5NCwxNyArNTk3NiwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBw
ZXJJc051bGwiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgVGVzdE9iaiogb2JqID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgw
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iaiA9IEpTVGVzdE9iajo6dG9XcmFw
cGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSgh
b2JqKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
MCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
cklzTnVsbCIsICJUZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGwiLCAiVGVzdE9iaiIpOwogICAgIH0K
ICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChXVEZNb3Zl
KG9iaikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01
NDEyLDEwICs1OTk3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8WFBhdGhO
U1Jlc29sdmVyPiByZXNvbHZlciA9IG51bGxwdHI7CkBAIC01NDI0LDcgKzYwMTIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFyZXNvbHZlcikpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJyZXNv
bHZlciIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlciIs
ICJYUGF0aE5TUmVzb2x2ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOwog
ICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihXVEZNb3Zl
KHJlc29sdmVyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTU0MzIsMTYgKzYwMjAsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoQ2FsbGJhY2tBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBhdXRv
IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5t
ZXRob2RXaXRoQ2FsbGJhY2tBcmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NDQ5LDE5ICs2MDQwLDIyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gbm9uQ2FsbGJhY2sgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgxKS5p
c09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKCpzdGF0ZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKICAg
ICBhdXRvIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAg
aW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhXVEZNb3ZlKG5vbkNh
bGxiYWNrKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC01NDY5LDE2ICs2MDYzLDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aW9uYWxBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlv
bmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIXN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmciKTsKICAgICAgICAgY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2Jq
ZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpKTsKICAgICB9CiAgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhX
VEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC01NDg3LDE2ICs2MDg0LDE5IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJn
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUt
PmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJjYWxsYmFj
ayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAg
YXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU1MDQs
MTkgKzYxMDQsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUs
IDEsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0Fu
ZENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoYXNP
YmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5j
dGlvbkFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NTI0LDE2ICs2MTI3LDE5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhD
YWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBSZWZQdHI8
VGVzdENhbGxiYWNrRnVuY3Rpb24+IGNhbGxiYWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyIpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3Rpb25BbmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNr
RnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC01NTQy
LDEwICs2MTQ4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnIik7CiAgICAgICAgIGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5
Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICB9CiAgICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNTU1NCwxMCArNjE2MywxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhD
YWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAw
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmci
KTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9k
V2l0aENhbGxiYWNrQXJnIik7CiAgICAgYXV0byBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25s
eUNhbGxiYWNrPEpTVGVzdENhbGxiYWNrPihzdGF0ZSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNTU2NiwxMCArNjE3OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakNvCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoc3RhdGUsIGltcGwuY29uZGl0aW9uYWxNZXRob2QxKCkpOwpAQCAtNTU4MSwxMCArNjE5Niwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsTWV0aG9kMiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMigpOwpA
QCAtNTU5NiwxMCArNjIxNCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRp
dGlvbmFsTWV0aG9kMyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLmNvbmRp
dGlvbmFsTWV0aG9kMygpOwpAQCAtNTYxMCwxOSArNjIzMSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMShFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVz
dE9iaiogb2JqQXJnID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVk
KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb2Jq
QXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
MCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9iaiIp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJU
ZXN0T2JqIik7CiAgICAgfQogICAgIGF1dG8gc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLnRv
V1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKQEAgLTU2MzMsMTkgKzYyNTcsMjIgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9
IG51bGxwdHI7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwo
KSkgewogICAgICAgICBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9i
akFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9iaiIpOwogICAg
IH0KICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/
IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTU2NTYsMTQgKzYyODMsMTcgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU2NzMsMTQgKzYzMDMsMTcgQEAg
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9k
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gbG9uZ0FyZyA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNTY5MCwxNiArNjMyMywxOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNShFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBK
U1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRo
b2QoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC01NzA3LDE5ICs2MzQzLDIyIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBET01TdHJpbmdM
aXN0KiBsaXN0QXJnID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGxpc3RBcmcgPSBKU0RPTVN0cmluZ0xpc3Q6OnRv
V3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBpZiAoVU5MSUtF
TFkoIWxpc3RBcmcpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCAwLCAibGlzdEFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAi
RE9NU3RyaW5nTGlzdCIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAibGlzdEFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2QiLCAiRE9NU3RyaW5nTGlzdCIpOwogICAgIH0KICAgICBpbXBsLm92ZXJsb2Fk
ZWRNZXRob2QoV1RGTW92ZShsaXN0QXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTU3MjcsMTQgKzYzNjYsMTcgQEAgc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJv
dmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
YXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTc0NCwzMSArNjM4Niwz
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kOChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRN
ZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmpl
Y3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iakFyZyIsICJUZXN0
T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9iaiIpOwogICAgIGltcGwub3Zlcmxv
YWRlZE1ldGhvZCgqb2JqQXJnKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJyYXlBcmcgPSB0
b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTc3OCwxNCArNjQyNiwxNyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTAoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01
Nzk1LDE0ICs2NDQ2LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0ZS0+YXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNTgxMiwxMCArNjQ2NiwxMyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBWZWN0b3I8QmxvYio+IGJsb2JBcmdzOwpAQCAtNTgyNCw3ICs2NDgxLDcgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogICAgIGZvciAodW5zaWduZWQgaSA9
IDAsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHsKICAg
ICAgICAgYXV0byogaXRlbSA9IEpTQmxvYjo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudChpKSk7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgImJsb2JBcmdzIiwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICJCbG9iIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIGksICJibG9iQXJncyIsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiQmxvYiIpOwogICAgICAgICBibG9iQXJncy51bmNoZWNr
ZWRBcHBlbmQoaXRlbSk7CiAgICAgfQogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3Zl
KGJsb2JBcmdzKSk7CkBAIC01ODMzLDYgKzY0OTAsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNp
emVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDIsIHN0YXRlLT5hcmd1bWVudENvdW50
KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMCkgewogICAgICAgICByZXR1cm4ganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIoc3RhdGUpOwpAQCAtNTg2OSwxOSAr
NjUyOSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAg
ICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QxKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
IH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlciIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
ciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ckFyZyA9IHN0YXRl
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC01ODg5LDcgKzY1NTIsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByCiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWRP
ck51bGwoKSkgewogICAgICAgICBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJvYmpB
cmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVy
IiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOwogICAgIH0KICAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoV1RGTW92ZShzdHJBcmcp
LCBXVEZNb3ZlKG9iakFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC01ODk3LDE5ICs2NTYwLDIyIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhP
cHRpb25hbFBhcmFtZXRlciIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2Jq
KiBvYmpBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKICAgICAgICAgb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcp
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAi
b2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlciIsICJUZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsKICAgICB9CiAg
ICAgYXV0byBsb25nQXJnID0gc3RhdGUtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkgPyBPcHRp
b25hbDxpbnQzMl90PigpIDogY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgxKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCkBAIC01OTIwLDYgKzY1ODYsOSBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXpl
X3Q+KDIsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkg
ewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwpAQCAtNTkzNywxNyArNjYwNiwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMihzdGF0ZSk7CiAg
ICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXIxKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3Vu
dCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50
IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25DbGFzc01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBUZXN0T2JqOjpjbGFzc01ldGhv
ZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aE9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8gYXJnID0gc3RhdGUt
PmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDxpbnQzMl90PigpIDogY29udmVy
dDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01OTU3LDE2ICs2
NjMyLDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xh
c3NNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmo6OmNsYXNzTWV0aG9kMihz
dGF0ZSkpOwogfQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIGFyZyA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTk3
OSw4ICs2NjYwLDExIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ28K
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdHlwZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC01OTkzLDYgKzY2NzcsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90
PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsK
ICAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKQEAgLTYwMDQsMjAgKzY2OTEsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDbwogICAgICAgICByZXR1cm4ganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2QxMihzdGF0ZSk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJu
IGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4g
YXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogfQogI2VuZGlmCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcChFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIG9iakFyZ3NTaG9ydCA9IGNvbnZlcnQ8dWludDE2X3Q+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCBDbGFtcCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC02MDMwLDE0ICs2NzIwLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZShFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gb2JqQXJnc1Nob3J0ID0gY29udmVydDx1aW50MTZfdD4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCksIEVuZm9yY2VSYW5nZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC02MDUwLDE0ICs2NzQzLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1
ZW5jZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdW5zaWduZWRMb25nU2VxdWVuY2Ug
PSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MDY3LDE0ICs2NzYzLDE3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBcnJheUZ1bmN0
aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8gdmFsdWVz
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTYwODcsMTggKzY3ODYs
MjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5n
TGlzdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgYXV0byB2YWx1ZXMgPSBKU0RPTVN0cmluZ0xpc3Q6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAidmFsdWVzIiwgIlRlc3RPYmplY3QiLCAiZG9t
U3RyaW5nTGlzdEZ1bmN0aW9uIiwgIkRPTVN0cmluZ0xpc3QiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAidmFsdWVzIiwgIlRl
c3RPYmplY3QiLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIiwgIkRPTVN0cmluZ0xpc3QiKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBpbXBsLmRvbVN0cmluZ0xpc3RGdW5jdGlvbigqdmFsdWVzLCBlYykpOwogCiAgICAgc2V0RE9N
RXhjZXB0aW9uKHN0YXRlLCBlYyk7CkBAIC02MTA3LDE0ICs2ODA5LDE3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFi
bGVTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEFu
ZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQo
KSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MTI3
LDE0ICs2ODMyLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZ2V0
RWxlbWVudEJ5SWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImdldEVsZW1lbnRCeUlkIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZWxlbWVudElkID0gQXRvbWljU3RyaW5nKHN0YXRl
LT5hcmd1bWVudCgwKS50b1N0cmluZyhzdGF0ZSktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoc3Rh
dGUpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYxNDQsMTAgKzY4NTIs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9j
dW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJnZXRTVkdEb2N1bWVu
dCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAiZ2V0U1ZHRG9jdW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
NjE2MSwzNiArNjg3Miw0MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbnZl
cnQxIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgInZhbHVlIiwgIlRlc3RPYmplY3QiLCAiY29udmVy
dDEiLCAiVGVzdE5vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAidmFsdWUiLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MSIs
ICJUZXN0Tm9kZSIpOwogICAgIGltcGwuY29udmVydDEoKnZhbHVlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MiIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29udmVydDIi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE5vZGUqIHZhbHVlID0gbnVs
bHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CiAgICAgICAgIHZhbHVlID0gSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghdmFsdWUpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAidmFsdWUiLCAiVGVzdE9i
amVjdCIsICJjb252ZXJ0MiIsICJUZXN0Tm9kZSIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAidmFsdWUiLCAiVGVzdE9i
amVjdCIsICJjb252ZXJ0MiIsICJUZXN0Tm9kZSIpOwogICAgIH0KICAgICBpbXBsLmNvbnZlcnQy
KFdURk1vdmUodmFsdWUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNjE5OCwxNCArNjkxNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0MyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNvbnZlcnQzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MyIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIHZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYyMTUsMTQg
KzY5MzUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
dmVydDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0NCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAiY29udmVydDQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byB2YWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC02MjMyLDEwICs2OTU1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2lu
dEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbC5tdXRhYmxl
UG9pbnRGdW5jdGlvbigpKSk7CkBAIC02MjQ0LDEwICs2OTcwLDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZH
UG9pbnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKQEAgLTYyNTYs
MTAgKzY5ODUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3JhbmdlIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJvcmFuZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGltcGwuYmFuYW5hKCk7CkBAIC02MjY4LDE0ICs3MDAwLDE3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNTdHJpbmdN
ZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dU
RlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02Mjg4
LDE0ICs3MDIzLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAidmFyaWFkaWNEb3VibGVNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljRG91YmxlTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaGVhZCA9IGNvbnZl
cnQ8ZG91YmxlPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5p
dGU6Olllcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MzA4LDI0ICs3
MDQ2LDI3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlh
ZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInZhcmlh
ZGljTm9kZU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaGVhZCA9IEpTTm9kZTo6dG9XcmFwcGVk
KHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFoZWFkKSkKLSAgICAgICAg
cmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiaGVhZCIsICJUZXN0T2Jq
ZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImhlYWQiLCAiVGVzdE9i
amVjdCIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOwogICAgIFZlY3RvcjxOb2RlKj4g
dGFpbDsKICAgICBBU1NFUlQoMSA8PSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICB0YWls
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSAtIDEpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDEsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8
IGNvdW50OyArK2kpIHsKICAgICAgICAgYXV0byogaXRlbSA9IEpTTm9kZTo6dG9XcmFwcGVkKHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgInRhaWwiLCAiVGVz
dE9iamVjdCIsICJ2YXJpYWRpY05vZGVNZXRob2QiLCAiTm9kZSIpOworICAgICAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBpLCAidGFpbCIs
ICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CiAgICAgICAgIHRh
aWwudW5jaGVja2VkQXBwZW5kKGl0ZW0pOwogICAgIH0KICAgICBpbXBsLnZhcmlhZGljTm9kZU1l
dGhvZCgqaGVhZCwgV1RGTW92ZSh0YWlsKSk7CkBAIC02MzM0LDE0ICs3MDc1LDE3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgImFueSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYW55Iik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8ZmxvYXQ+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYzNjAsMTAgKzcxMDQsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21p
c2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb24oRGVmZXJyZWRXcmFwcGVy
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKSk7CkBA
IC02Mzc4LDE0ICs3MTI1LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGEgPSBjb252ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY0MDEsMTAgKzcxNTEsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKQEAgLTY0MjEsMTAgKzcxNzQsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25h
bEludEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoT3B0aW9uYWxJbnRBcmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGEgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRl
ZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTY0NDIs
MTQgKzcxOTgsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgog
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBK
U1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRl
c3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGEgPSBjb252ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxs
b3dOb25GaW5pdGU6Ok5vKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY0
NjUsMjMgKzcyMjQsMjkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRl
LCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIHJlcXVlc3QgPSBKU0ZldGNoUmVxdWVzdDo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAicmVxdWVzdCIsICJUZXN0T2JqZWN0IiwgInRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIiwgIkZldGNoUmVxdWVzdCIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJyZXF1ZXN0
IiwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24iLCAiRmV0Y2hS
ZXF1ZXN0Iik7CiAgICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbigqcmVxdWVz
dCwgRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgcHJv
bWlzZURlZmVycmVkKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNp
emVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50
KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1
aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNjQ5MSw3ICs3MjU2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVk
RnVuY3Rpb24xKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0
dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1
cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSos
IEpTUHJvbWlzZURlZmVycmVkKik7CkBAIC02NTAyLDYgKzcyNjcsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Q
cm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJy
ZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24oRGVmZXJyZWRXcmFwcGVyKHN0
YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKSwgcHJvbWlzZURlZmVycmVkKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KQEAgLTY1MTQsNiArNzI4Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ28KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RPYmo6OnRlc3RTdGF0aWNQ
cm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKERlZmVycmVkV3JhcHBlcihzdGF0ZSwganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIHByb21p
c2VEZWZlcnJlZCksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTY1
MjIsMTMgKzcyOTMsMTYgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2soRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25T
dGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjazsKICNlbmRpZgogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2siKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhOZWVkc0N1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhOZWVkc0N1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrKCk7CkBAIC02NTM4LDE0ICs3
MzEyLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICNpZiBF
TkFCTEUoQ09ORElUSU9OMSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMShFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNv
bmRpdGlvbmFsT3ZlcmxvYWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjU1OCwxNCArNzMzNSwxNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAjaWYgRU5BQkxFKENPTkRJVElPTjIpCiBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxPdmVybG9hZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJj
b25kaXRpb25hbE92ZXJsb2FkIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbE92ZXJsb2FkIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8aW50MzJf
dD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjU3OCw2ICs3MzU4LDkgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShDT05ESVRJT04xKSB8
fCBFTkFCTEUoQ09ORElUSU9OMikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENv
dW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rp
bmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNjU4OSwyMCAr
NzM3MiwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAg
ICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQx
KHN0YXRlKTsKICNlbmRpZgogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYK
IAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAic2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2luZ2xl
Q29uZGl0aW9uYWxPdmVybG9hZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBh
dXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NjEzLDE0ICs3Mzk5LDE3IEBAIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ09ORElUSU9OKQog
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNp
bmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAic2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2luZ2xlQ29u
ZGl0aW9uYWxPdmVybG9hZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IGEgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxD
b252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY2MzIsNiAr
NzQyMSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9
IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFy
Z3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC02NjQxLDE5ICs3NDMzLDIyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICNlbmRpZgogICAgICAgICByZXR1cm4g
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkMShzdGF0
ZSk7CiAgICAgfQotICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRhY2hTaGFkb3dSb290Iik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJhdHRhY2hTaGFkb3dSb290Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gaW5pdCA9IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTY2NjMsMTAgKzc0NTgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJ0b1N0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidG9TdHJpbmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5naWZpZXJBdHRyaWJ1dGUoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDUzICs2
Nyw2NSBAQCB0eXBlZGVmIEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlCiAKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAg
IEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHN0YXRlLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFh
cnJheUJ1ZmZlcikpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMCwgImFycmF5QnVmZmVyIiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0
ciwgIkFycmF5QnVmZmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImFycmF5QnVmZmVyIiwgIlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyIik7CiAgICAgYXV0byBvYmplY3QgPSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCphcnJheUJ1ZmZlcik7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkKHN0YXRlLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0
ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
YXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcoc3RhdGUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWFycmF5
QnVmZmVyVmlldykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMCwgImFycmF5QnVmZmVyVmlldyIsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIG51
bGxwdHIsICJBcnJheUJ1ZmZlclZpZXciKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiYXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyVmlldyIpOwogICAg
IGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYXJyYXlC
dWZmZXJWaWV3KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQo
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0K
IAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUo
KSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBibG9iID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIWJsb2IpKQotICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJibG9iIiwgIlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzIiwgbnVsbHB0ciwgIkJsb2IiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiYmxvYiIsICJUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycyIsIG51bGxwdHIsICJCbG9iIik7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCpibG9iKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJpbmcgPSBzdGF0
ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTIzLDYgKzEzNSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgY29uc3RydWN0SlMKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+
KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIFZlY3Rvcjxp
bnQzMl90PiBsb25nQXJncyA9IHRvTmF0aXZlQXJndW1lbnRzPGludDMyX3Q+KCpzdGF0ZSwgMCk7
CkBAIC0xMzQsNiArMTQ5LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1
Y3RKUwogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CiAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShzdGF0ZSk7CkBAIC0xNTAsNyArMTY4
LDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgICAgICAg
ICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRlKTsK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KHN0
YXRlKTsKICAgICB9Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAogdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQpAQCAtMjA4LDE4ICsyMjYsMjIgQEAgdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzOjpkZXN0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0
LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHJldmlz
aW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjYsNiArNjYsOSBAQCB0eXBlZGVmIEpTRE9NQ29uc3RydWN0b3I8SlNUZXN0T3Zlcmxv
YWRlCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
Q29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsK
ICAgICBhdXRvIHNlcXVlbmNlT2ZTdHJpbmdzID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkKCkgPyBWZWN0b3I8U3RyaW5nPigpIDogdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKQEAgLTc3LDEwICs4MCwxMyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZTIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVl
KCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gc3RyaW5nID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTkwLDYgKzk2
LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogCiB0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
c2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CiAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMShzdGF0ZSk7CkBAIC0x
MDIsNyArMTExLDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAog
ICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNX
aXRoU2VxdWVuY2UxKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpA
QCAtMTYwLDE4ICsxNjksMjIgQEAgdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCiBib29sIHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDE4ICsxNTgsMjIgQEAgYm9vbCBKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0T3Zl
cnJpZGVCdWlsdGluc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCiBib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1By
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAg
LTE5NCwxNCArMTk4LDE3IEBAIEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0Q29u
c3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5z
UHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgIm5hbWVkSXRlbSIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPdmVycmlkZUJ1
aWx0aW5zIiwgIm5hbWVkSXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgYXV0byBuYW1lID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM0LDEyICsxMzQsMTQgQEAgdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhYwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBpbXBsLnZhbHVlKCkgPyBpbXBsLnZhbHVlKCktPmRlc2VyaWFsaXplKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKQEAgLTE0OSwxMiArMTUxLDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWwKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gaW1wbC5yZWFkb25seVZhbHVlKCkgPyBpbXBsLnJlYWRvbmx5VmFsdWUoKS0+
ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVs
bCgpOwpAQCAtMTY0LDEyICsxNjgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDYWNoZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
IiwgImNhY2hlZFZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwg
ImNhY2hlZFZhbHVlIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2Fz
dGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWNoZWRWYWx1ZSk7CkBAIC0xODIsMTIgKzE4OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCAicG9ydHMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ui
LCAicG9ydHMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBpbXBsLnBvcnRzKCkpOwpAQCAtMTk3LDEyICsyMDUsMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25seVZhbHVl
Iik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9j
YWNoZWRSZWFkb25seVZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhY2hlZFZhbHVlKTsKQEAgLTIxNSwxOCArMjI1LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTIzNSwxMSArMjQ5LDEzIEBAIGJv
b2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXIKIAogYm9vbCBzZXRKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwpAQCAtMjUyLDExICsy
NjgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcgogCiBib29s
IHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hl
ZFZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZh
bHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRl
LCB2YWx1ZSwgMCwgMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDIwNTE3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCwxNSArMTI0LDE4IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RUeXBlZGUKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaGVsbG8gPSBzdGF0
ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAxLCAidGVzdENhbGxiYWNrIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOworICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAxLCAidGVzdENhbGxiYWNrIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOwogICAgIGF1
dG8gdGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAg
YXV0byBvYmplY3QgPSBUZXN0VHlwZWRlZnM6OmNyZWF0ZShXVEZNb3ZlKGhlbGxvKSwgKnRlc3RD
YWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTTmV3bHlDcmVhdGVkKHN0
YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGTW92ZShvYmplY3QpKSk7CkBAIC0y
MTAsMTIgKzIxMywxNCBAQCB2b2lkIEpTVGVzdFR5cGVkZWZzOjpkZXN0cm95KEpTQzo6SlNDZWxs
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihkZWNvZGVk
VGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWdu
ZWRMb25nTG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKQEAg
LTIyNSwxMiArMjMwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzVW5zaWduZWRM
b24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRl
ZnMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRl
ZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAi
aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID8gaW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCAwKSA6IGpzTnVsbCgpOwpAQCAtMjQwLDEyICsyNDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0VHlwZWRlZnNJbW11dGFibGVTZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yVGVzdFN1Yk9iaihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiVGVzdFN1Yk9i
aiIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CkBAIC0yNTMsMTIgKzI2MiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0
cnVjdG9yCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMi
LCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjcwLDEyICsyODEsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwuYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CkBAIC0yODUs
MTIgKzI5OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0CiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihk
ZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMzAyLDEyICsz
MTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyVwogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwpAQCAtMzE3LDE4ICszMzQs
MjIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyVwogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RUeXBlZGVmczo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAog
Ym9vbCBzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zMzcsMTEgKzM1OCwxMyBAQCBib29sIHNldEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0CiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25l
ZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVm
cyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwgdmFs
dWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzU0LDExICszNzcsMTMgQEAgYm9vbCBzZXRKU1Rl
c3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdAogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzSW1t
dXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgdmFsdWUsIDAsIDApOwpA
QCAtMzcxLDExICszOTYsMTMgQEAgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlh
bGl6ZQogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtMzg4LDExICs0MTUsMTMgQEAgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0
dHJXaXRoR2V0dGVyRXhjZQogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZz
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAi
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDA3LDExICs0MzYsMTMgQEAgYm9v
bCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZQogCiBib29sIHNldEpTVGVzdFR5
cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC00MjQsMTEgKzQ1NSwxMyBA
QCBib29sIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0CiAKIGJvb2wgc2V0SlNU
ZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00NDgsMTAgKzQ4MSwxMyBAQCBKU1ZhbHVlIEpTVGVzdFR5
cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihWCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8geCA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gVmVjdG9yPGludDMyX3Q+
KCkgOiB0b05hdGl2ZUFycmF5PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKQEAgLTQ2MywxNCArNDk5LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJzZXRTaGFkb3ci
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVk
ZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHdpZHRoID0gY29u
dmVydDxmbG9hdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmlu
aXRlOjpZZXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDkyLDE0ICs1
MzEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlw
ZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdp
dGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gc2VxdWVuY2VBcmcgPSB0b1JlZlB0ck5hdGl2ZUFycmF5PFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTUwOSwxNCArNTUxLDE3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1
ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVk
ZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJudWxs
YWJsZVNlcXVlbmNlQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgIm51bGxhYmxlU2VxdWVuY2VBcmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZz
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHNlcXVlbmNlQXJnID0g
dG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTUyNiwxNCArNTcxLDE3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJmdW5jV2l0aENsYW1wIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdFR5cGVkZWZzIiwgImZ1bmNXaXRoQ2xhbXAiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIGFyZzEgPSBjb252ZXJ0PHVpbnQ2NF90Pigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgQ2xhbXApOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNTQ2LDEwICs1OTQsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RU
eXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRl
ZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnQ+OjpjcmVhdGUoaW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKQEAgLTU1OCwxNCAr
NjA5LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nU2VxdWVuY2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RU
eXBlZGVmcyIsICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmlu
Z1NlcXVlbmNlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8
U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC01NzgsMTQgKzYzMiwxNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24y
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ1NlcXVl
bmNlRnVuY3Rpb24yIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVm
czo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgYXV0byB2YWx1ZXMgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQpAQCAtNTk4LDE0ICs2NTUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZShFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJjYWxsV2l0aFNlcXVlbmNlVGhh
dFJlcXVpcmVzSW5jbHVkZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJjYWxsV2l0aFNlcXVlbmNlVGhhdFJl
cXVpcmVzSW5jbHVkZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gc2VxdWVuY2VBcmcgPSB0b1JlZlB0ck5hdGl2ZUFycmF5PFRlc3RFdmVudFRhcmdldCwgSlNU
ZXN0RXZlbnRUYXJnZXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYxNSwxMCArNjc1LDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoRXhjZXB0
aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNhdHRyaWJ1dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNCwxMiArMTM0LDE0IEBAIHZvaWQgSlNhdHRyaWJ1dGU6OmRlc3Ryb3ko
SlNDOjpKU0NlbGwqIGMKIAogRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZSo+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
YXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgaW1wbC5yZWFkb25seSgpKTsKQEAgLTE0OSwxOCArMTUxLDIyIEBAIEVuY29kZWRKU1Zh
bHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoRXhlY1MKIAogRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1
dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU2F0dHJpYnV0ZVByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNhdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNhdHRyaWJ1dGVQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGVQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAko
cmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTcmVhZG9ubHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTggKzExNywyMiBAQCB2
b2lkIEpTcmVhZG9ubHk6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlCiAKIEVuY29kZWRKU1ZhbHVl
IGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU3JlYWRv
bmx5UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTcmVhZG9ubHlQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTcmVhZG9ubHk6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNyZWFkb25seUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU3JlYWRvbmx5UHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTcmVhZG9ubHlQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC02Miw5ICs2MiwxMiBAQCB2b2lkIFJ1bnRpbWVBcnJheTo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1
bnRpbWVBcnJheSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXRoaXNP
YmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkpOwogfQogCkBAIC0xMTMs
OSArMTE2LDEyIEBAIGJvb2wgUnVudGltZUFycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUkKIAog
Ym9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganND
YXN0PFJ1bnRpbWVBcnJheSo+KGNlbGwpOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIlJhbmdlIGVycm9yIikpOworICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFu
Z2UgZXJyb3IiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xMjcs
OSArMTMzLDEyIEBAIGJvb2wgUnVudGltZUFycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAog
Ym9vbCBSdW50aW1lQXJyYXk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVBcnJheSo+KGNl
bGwpOwogICAgIGlmIChpbmRleCA+PSB0aGlzT2JqZWN0LT5nZXRMZW5ndGgoKSkgewotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywg
IlJhbmdlIGVycm9yIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRo
b2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhv
ZC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDkgKzU2LDEyIEBAIHZv
aWQgUnVudGltZU1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKIAogRW5jb2RlZEpTVmFsdWUg
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1l
TWV0aG9kKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSdW50aW1lTWV0aG9kKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRo
aXNPYmplY3QtPm1fbWV0aG9kLT5udW1QYXJhbWV0ZXJzKCkpKTsKIH0KIApAQCAtNzUsNiArNzgs
OSBAQCBib29sIFJ1bnRpbWVNZXRob2Q6OmdldE93blByb3BlcnR5U2xvdChKCiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxSdW50aW1lTWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IHN0YXRp
Y19jYXN0PFJ1bnRpbWVNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBpZiAoIW1ldGhv
ZC0+bWV0aG9kKCkpCkBAIC04NywxMyArOTMsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbAogICAgICAgICBSdW50aW1lT2JqZWN0KiBydW50aW1lT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgICAg
ICBpbnN0YW5jZSA9IHJ1bnRpbWVPYmplY3QtPmdldEludGVybmFsSW5zdGFuY2UoKTsKICAgICAg
ICAgaWYgKCFpbnN0YW5jZSkgCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1
bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBDYWxsaW5nIGEg
cnVudGltZSBvYmplY3Qgb2YgYSBwbHVnaW4gZWxlbWVudD8KICAgICAgICAgaWYgKHRoaXNWYWx1
ZS5pbmhlcml0cyhKU0hUTUxFbGVtZW50OjppbmZvKCkpKQogICAgICAgICAgICAgaW5zdGFuY2Ug
PSBwbHVnaW5JbnN0YW5jZShqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KGFzT2JqZWN0KHRoaXNWYWx1
ZSkpLT53cmFwcGVkKCkpOwogICAgICAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgfQogICAgIEFTU0VSVChpbnN0YW5jZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkocmV2aXNpb24gMjA1
MTc1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA4LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCwxMSArNjQsMTQgQEAgdm9pZCBSdW50
aW1lT2JqZWN0OjppbnZhbGlkYXRlKCkKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6
ZmFsbGJhY2tPYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
dW50aW1lT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSA9IHRoaXNP
YmotPm1faW5zdGFuY2U7CiAKICAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkp
OwogICAgIAogICAgIGluc3RhbmNlLT5iZWdpbigpOwogCkBAIC04MiwxMSArODUsMTQgQEAgRW5j
b2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYgogCiBFbmNvZGVkSlNWYWx1ZSBS
dW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsgICAgCisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBSdW50aW1lT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5j
ZSA9IHRoaXNPYmotPm1faW5zdGFuY2U7CiAKICAgICBpZiAoIWluc3RhbmNlKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVj
LCBzY29wZSkpOwogICAgIAogICAgIGluc3RhbmNlLT5iZWdpbigpOwogCkBAIC0xMDEsMTEgKzEw
NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlCiAKIEVuY29k
ZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8UnVudGltZU9i
amVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+
IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICghaW5zdGFuY2UpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
YykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKQEAgLTEx
OCw5ICsxMjcsMTIgQEAgRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dAog
CiBib29sIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUgKmV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5t
X2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAg
ICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xNjMsOSArMTc1LDEyIEBAIGJvb2wgUnVudGltZU9i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEoKIAogYm9vbCBSdW50aW1lT2JqZWN0OjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwp
OwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkgewotICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMTkyLDkg
KzIwNywxMiBAQCBib29sIFJ1bnRpbWVPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsCiAKIEpT
VmFsdWUgUnVudGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgY29uc3QgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxjb25z
dCBSdW50aW1lT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFu
Y2UpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAKICAg
ICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iamVjdC0+bV9pbnN0YW5jZTsKIApA
QCAtMjU4LDkgKzI3NiwxMiBAQCBDb25zdHJ1Y3RUeXBlIFJ1bnRpbWVPYmplY3Q6OmdldENvbnN0
cnVjCiAKIHZvaWQgUnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PFJ1bnRpbWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhp
c09iamVjdC0+bV9pbnN0YW5jZSkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yNzEsOSArMjkyLDkgQEAgdm9pZCBSdW50aW1lT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKAogICAgIGluc3RhbmNlLT5lbmQoKTsKIH0KIAotSlNP
YmplY3QqIFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSog
ZXhlYykKK0pTT2JqZWN0KiBSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAgIHJldHVybiBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlp
bmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKKyAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
ICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9u
IDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIEluc3RhbmNlKiBnZXRJ
bnRlcm5hbEluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0YW5jZS5nZXQoKTsgfQogCi0g
ICAgc3RhdGljIEpTT2JqZWN0KiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqKTsK
KyAgICBzdGF0aWMgSlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSos
IFRocm93U2NvcGUmKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY4LDEyICs2OCwxNSBAQCB2b2lkIENJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKFN0cmlu
CiAKIHZvaWQgQ0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7CiAgICAgICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRp
b25TdHJpbmcoKSkpOwogICAgIH0KIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3Ry
aW5nKCk7CkBAIC0xNTQsOCArMTU3LDExIEBAIEpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRob2Qo
RXhlY1N0YXRlKiAKIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoIWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cyhDUnVudGltZU1ldGhvZDo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsICJBdHRlbXB0IHRv
IGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3QuIik7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkF0dGVtcHQgdG8gaW52b2tlIG5v
bi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKTsKIAogICAgIENNZXRob2QqIG1l
dGhvZCA9IHN0YXRpY19jYXN0PENNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAg
ICAgQVNTRVJUKG1ldGhvZCk7CkBAIC0xODQsNyArMTkwLDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6
Omludm9rZU1ldGhvZChFeGVjU3RhdAogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIGZvciAoaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFsdWUoJmNB
cmdzW2ldKTsKQEAgLTE5Nyw2ICsyMDMsOSBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0
aG9kKEV4ZWNTdGF0CiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghX29iamVjdC0+X2NsYXNz
LT5pbnZva2VEZWZhdWx0KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAtMjE5
LDcgKzIyOCw3IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEUKICAg
ICB9CiAKICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0
aG9kIG9uIE5QT2JqZWN0LiIpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9u
IE5QT2JqZWN0LiIpKSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAg
ICAgX05QTl9SZWxlYXNlVmFyaWFudFZhbHVlKCZjQXJnc1tpXSk7CkBAIC0yMzYsNiArMjQ1LDkg
QEAgYm9vbCBDSW5zdGFuY2U6OnN1cHBvcnRzQ29uc3RydWN0KCkgY29ucwogCiBKU1ZhbHVlIENJ
bnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghX29iamVjdC0+X2NsYXNzLT5jb25zdHJ1
Y3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNTgsNyArMjcwLDcgQEAg
SlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdChFeGVjUwogICAgIH0KIAogICAgIGlm
ICghcmV0dmFsKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmpl
Y3QuIikpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikp
KTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVh
c2VWYXJpYW50VmFsdWUoJmNBcmdzW2ldKTsKQEAgLTMxMSw2ICszMjMsOSBAQCBKU1ZhbHVlIENJ
bnN0YW5jZTo6dmFsdWVPZihFeGVjU3RhdGUqIGV4CiAKIGJvb2wgQ0luc3RhbmNlOjp0b0pTUHJp
bWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogbmFtZSwgSlNWYWx1ZSYgcmVzdWx0
VmFsdWUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBOUElkZW50aWZpZXIgaWRlbnQgPSBf
TlBOX0dldFN0cmluZ0lkZW50aWZpZXIobmFtZSk7CiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3Mt
Pmhhc01ldGhvZChfb2JqZWN0LCBpZGVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMy
OCw3ICszNDMsNyBAQCBib29sIENJbnN0YW5jZTo6dG9KU1ByaW1pdGl2ZShFeGVjU3RhdGUqCiAg
ICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1l
dGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBv
biBOUE9iamVjdC4iKSkpOwogCiAgICAgcmVzdWx0VmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50VG9W
YWx1ZShleGVjLCAmcmVzdWx0VmFyaWFudCwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICBfTlBO
X1JlbGVhc2VWYXJpYW50VmFsdWUoJnJlc3VsdFZhcmlhbnQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAwOSwg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDgtMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDYgKzc5LDkgQEAg
dm9pZCBPYmpjSW5zdGFuY2U6OnNldEdsb2JhbEV4Y2VwdGlvbihOUwogCiB2b2lkIE9iamNJbnN0
YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghc19leGNlcHRpb24pIHsKICAgICAgICAgQVNTRVJUKCFz
X2V4Y2VwdGlvbkVudmlyb25tZW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtODYsNyArODksNyBA
QCB2b2lkIE9iamNJbnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvCiAKICAgICBpZiAoIXNf
ZXhjZXB0aW9uRW52aXJvbm1lbnQgfHwgc19leGNlcHRpb25FbnZpcm9ubWVudCA9PSBleGVjLT52
bUVudHJ5R2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7
Ci0gICAgICAgIHRocm93RXJyb3IoZXhlYywgc19leGNlcHRpb24pOworICAgICAgICB0aHJvd0Vy
cm9yKGV4ZWMsIHNjb3BlLCBzX2V4Y2VwdGlvbik7CiAgICAgfQogCiAgICAgW3NfZXhjZXB0aW9u
IHJlbGVhc2VdOwpAQCAtMjA1LDggKzIwOCwxMSBAQCBKU0M6OkpTVmFsdWUgT2JqY0luc3RhbmNl
OjpnZXRNZXRob2QoRXhlCiAKIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhv
ZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCiB7CisgICAg
SlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCktPmluaGVyaXRz
KE9iakNSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRo
b2Qgb24gcGx1Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4g
bWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKIAogICAgIE9iamNNZXRob2QgKm1ldGhvZCA9
IHN0YXRpY19jYXN0PE9iamNNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAg
QVNTRVJUKG1ldGhvZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3J1bnRpbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTk0LDYgKzk0LDkgQEAgT2JqY0ZpZWxkOjpPYmpjRmllbGQoQ0ZTdHJpbmdSZWYgbmFtZSkKIAog
SlNWYWx1ZSBPYmpjRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgIAogICAgIGlkIHRhcmdldE9iamVjdCA9IChz
dGF0aWNfY2FzdDxjb25zdCBPYmpjSW5zdGFuY2UqPihpbnN0YW5jZSkpLT5nZXRPYmplY3QoKTsK
QEAgLTEwOSw3ICsxMTIsNyBAQCBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2Uo
RXhlCiAgICAgICAgIH0KICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24p
IHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAgIHRocm93RXJyb3Io
ZXhlYywgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0pOworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IHNjb3BlLCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CiAgICAgfQogCiAgICAgLy8gV29yayBh
cm91bmQgcHJvYmxlbSBpbiBzb21lIHZlcnNpb25zIG9mIEdDQyB3aGVyZSByZXN1bHQgZ2V0cyBt
YXJrZWQgdm9sYXRpbGUgYW5kCkBAIC0xMjcsNiArMTMwLDkgQEAgc3RhdGljIGlkIGNvbnZlcnRW
YWx1ZVRvT2JqY09iamVjdChFeGVjUwogCiBib29sIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3Rh
bmNlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIGFW
YWx1ZSkgY29uc3QKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0g
KHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgp
OwogICAgIGlkIHZhbHVlID0gY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KGV4ZWMsIGFWYWx1ZSk7
CiAKQEAgLTE0MSw3ICsxNDcsNyBAQCBib29sIE9iamNGaWVsZDo6c2V0VmFsdWVUb0luc3RhbmNl
KEV4ZWNTCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBs
b2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgc2NvcGUsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIH0KQEAgLTE1NiwxMyArMTYyLDE2IEBAIE9iamNBcnJheTo6
T2JqY0FycmF5KE9iamVjdFN0cnVjdFB0ciBhLCAKIAogYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVl
QXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVlKSBj
b25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIVtfYXJyYXkuZ2V0KCkgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNlcnRPYmplY3Q6YXRJbmRleDopXSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkFycmF5IGlzIG5vdCBtdXRhYmxl
LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
QXJyYXkgaXMgbm90IG11dGFibGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKGluZGV4ID4gW19hcnJheS5nZXQoKSBjb3VudF0pIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBl
eGNlZWRzIGFycmF5IHNpemUuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE3NCwyMSArMTgzLDI0IEBA
IGJvb2wgT2JqY0FycmF5OjpzZXRWYWx1ZUF0KEV4ZWNTdGF0ZSogZXgKICAgICAgICAgW19hcnJh
eS5nZXQoKSBpbnNlcnRPYmplY3Q6b1ZhbHVlLm9iamVjdFZhbHVlIGF0SW5kZXg6aW5kZXhdOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNl
cHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
cnJvcihleGVjLCAiT2JqZWN0aXZlLUMgZXhjZXB0aW9uLiIpKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRp
b24uIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCiBKU1ZhbHVlIE9iamNB
cnJheTo6dmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCkgY29uc3QK
IHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGluZGV4ID4gW19hcnJheS5nZXQoKSBjb3Vu
dF0pCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKICAgICBAdHJ5IHsKICAgICAgICAgaWQg
b2JqID0gW19hcnJheS5nZXQoKSBvYmplY3RBdEluZGV4OmluZGV4XTsKICAgICAgICAgaWYgKG9i
aikKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0T2JqY1ZhbHVlVG9WYWx1ZSAoZXhlYywgJm9i
aiwgT2JqY09iamVjdFR5cGUsIG1fcm9vdE9iamVjdC5nZXQoKSk7CiAgICAgfSBAY2F0Y2goTlNF
eGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7Ci0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRp
b24uIikpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOwogICAgIH0KICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTIzMiw5ICsyNDQsMTIgQEAgYm9vbCBPYmpjRmFsbGJh
Y2tPYmplY3RJbXA6OnB1dChKU0NlbGwqLAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBK
U0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhPYmpDUnVudGltZU9iamVjdDo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNV
bmRlZmluZWQoKTsKIApAQCAtMjQyLDcgKzI1Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGwKICAgICBPYmpjSW5zdGFuY2UqIG9iamNJbnN0YW5jZSA9IHJ1bnRp
bWVPYmplY3QtPmdldEludGVybmFsT2JqQ0luc3RhbmNlKCk7CiAKICAgICBpZiAoIW9iamNJbnN0
YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJv
d0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsK
ICAgICAKICAgICBvYmpjSW5zdGFuY2UtPmJlZ2luKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCBKU1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKEV4ZWNTdGF0CiBKU1Zh
bHVlIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0ZSosIHZvaWQqIGJ1ZmZlciwgT2Jq
Y1ZhbHVlVHlwZSwgUm9vdE9iamVjdCopOwogT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9y
VHlwZShjb25zdCBjaGFyICp0eXBlKTsKIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRl
ICosIE5TU3RyaW5nICptZXNzYWdlKTsKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSos
IFRocm93U2NvcGUmLCBOU1N0cmluZyAqbWVzc2FnZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEJpbmRp
bmdzCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfdXRpbGl0eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3V0aWxpdHkubW0JKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAxMywgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MTAsMTAgKzMxMCwxMCBAQCBPYmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNvbnN0
CiAgICAgcmV0dXJuIG9iamNWYWx1ZVR5cGU7CiB9CiAKLUpTT2JqZWN0ICp0aHJvd0Vycm9yKEV4
ZWNTdGF0ZSAqZXhlYywgTlNTdHJpbmcgKm1lc3NhZ2UpCitKU09iamVjdCAqdGhyb3dFcnJvcihF
eGVjU3RhdGUgKmV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBOU1N0cmluZyAqbWVzc2FnZSkKIHsK
ICAgICBBU1NFUlQobWVzc2FnZSk7Ci0gICAgSlNPYmplY3QgKmVycm9yID0gZXhlYy0+dm0oKS50
aHJvd0V4Y2VwdGlvbihleGVjLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMsIFN0cmluZyhtZXNzYWdl
KSkpOworICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBK
U0M6OmNyZWF0ZUVycm9yKGV4ZWMsIFN0cmluZyhtZXNzYWdlKSkpOwogICAgIHJldHVybiBlcnJv
cjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYtMDgtMjkg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSB0aGUg
VGhyb3dTY29wZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50aWF0ZSBhIFRo
cm93U2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjExNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Y2FsbE1ldGhvZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjYWxsTWV0
aG9kKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2FsbE9iamVjdCk6CisgICAgICAg
IChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OkpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBP
YmplY3Q6OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdl
YktpdDo6SlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9i
amVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVu
dGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKToKKwogMjAxNi0w
OC0yOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQG5hdmVyY29ycC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBFRkwvR1RLIGJ1aWxkIGZpeCBzaW5jZSByMjA1MTUwCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBNZXRob2QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYg
KzU5LDkgQEAgdm9pZCBKU05QTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIAogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBNZXRob2QqIGpzTlBNZXRob2QgPSBqc0Nhc3Q8
SlNOUE1ldGhvZCo+KGV4ZWMtPmNhbGxlZSgpKTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CkBAIC03OCw3ICs4MSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05Q
T2JqZWN0LT5jYWxsTWV0aG9kKGV4ZWMsIGpzTlBNZXRob2QtPm5wSWRlbnRpZmllcigpKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogfQogCiBDYWxsVHlwZSBKU05QTWV0aG9kOjpn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw5ICsx
MDcsMTIgQEAgTlBPYmplY3QqIEpTTlBPYmplY3Q6OmxlYWtOUE9iamVjdCgpCiAKIEpTVmFsdWUg
SlNOUE9iamVjdDo6Y2FsbE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIE5QSWRlbnRpZmllciBtZXRo
b2ROYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVS
SVRTKGluZm8oKSk7CiAgICAgaWYgKCFtX25wT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5
bWJvbC4KICAgICBpZiAoIW1ldGhvZE5hbWUpCkBAIC0xNDIsNyArMTQ1LDcgQEAgSlNWYWx1ZSBK
U05QT2JqZWN0OjpjYWxsTWV0aG9kKEV4ZWNTdGF0ZQogICAgICAgICByZWxlYXNlTlBWYXJpYW50
VmFsdWUoJmFyZ3VtZW50c1tpXSk7CiAKICAgICBpZiAoIXJldHVyblZhbHVlKQotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJFcnJvciBj
YWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBP
YmplY3QuIikpOwogCiAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZhbHVlID0gbV9vYmplY3RNYXAtPmNv
bnZlcnROUFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIHJlc3VsdCk7CiAg
ICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOwpAQCAtMTUxLDkgKzE1NCwxMiBAQCBK
U1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxNZXRob2QoRXhlY1N0YXRlCiAKIEpTQzo6SlNWYWx1ZSBK
U05QT2JqZWN0OjpjYWxsT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7CiAgICAgaWYg
KCFtX25wT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAg
ICBWZWN0b3I8TlBWYXJpYW50LCA4PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0xODIs
NyArMTg4LDcgQEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOgogICAg
ICAgICByZWxlYXNlTlBWYXJpYW50VmFsdWUoJmFyZ3VtZW50c1tpXSk7CiAKICAgICBpZiAoIXJl
dHVyblZhbHVlKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUVycm9yKGV4ZWMsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3Ig
Y2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOwogCiAgICAgSlNWYWx1ZSBwcm9wZXJ0eVZh
bHVlID0gbV9vYmplY3RNYXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFs
T2JqZWN0KCksIHJlc3VsdCk7CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOwpA
QCAtMTkxLDkgKzE5NywxMiBAQCBKU0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9iamVjdChK
U0M6CiAKIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhp
bmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJy
b3IoZXhlYywgc2NvcGUpOwogCiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1
bWVudENvdW50KCk7CiAgICAgVmVjdG9yPE5QVmFyaWFudCwgOD4gYXJndW1lbnRzKGFyZ3VtZW50
Q291bnQpOwpAQCAtMjE4LDcgKzIyNyw3IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbENvbnN0
cnVjdG9yKEV4ZWMKICAgICB9CiAKICAgICBpZiAoIXJldHVyblZhbHVlKQotICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJFcnJvciBjYWxs
aW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmpl
Y3QuIikpOwogICAgIAogICAgIEpTVmFsdWUgdmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVydE5Q
VmFyaWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICByZWxl
YXNlTlBWYXJpYW50VmFsdWUoJnJlc3VsdCk7CkBAIC0yNjUsMTAgKzI3NCwxMyBAQCBDb25zdHJ1
Y3RUeXBlIEpTTlBPYmplY3Q6OmdldENvbnN0cnVjdERhCiAKIGJvb2wgSlNOUE9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKLSAgICAgICAgdGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTI5OSwx
MCArMzExLDEzIEBAIGJvb2wgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2IKIAog
Ym9vbCBKU05QT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8
SlNOUE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKLSAgICAg
ICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMzUzLDYgKzM2OCw5IEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KEoKIAogYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIE5Q
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlRfVEhJ
U19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKIAogICAgIC8vIElmIHRoZSBwcm9wZXJ0eU5h
bWUgaXMgc3ltYm9sLgpAQCAtMzYwLDcgKzM3OCw3IEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRl
UHJvcGVydHkoRXhlY1N0YXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX25w
T2JqZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTM4OSwxMCArNDA3LDEzIEBAIGJvb2wgSlNOUE9iamVjdDo6ZGVs
ZXRlUHJvcGVydHkoRXhlY1N0YXQKIAogdm9pZCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGUpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU05QT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTlBPYmplY3QqPihvYmplY3QpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QtPm1fbnBPYmplY3QpIHsKLSAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDM3LDExICs0NTgsMTQgQEAgdm9pZCBK
U05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTTwogCiBFbmNvZGVkSlNWYWx1ZSBKU05Q
T2JqZWN0Ojpwcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTTlBPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmosIGlu
Zm8oKSk7CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqLT5tX25wT2JqZWN0KQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBz
Y29wZSkpOwogCiAgICAgaWYgKCF0aGlzT2JqLT5tX25wT2JqZWN0LT5fY2xhc3MtPmdldFByb3Bl
cnR5KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NDc3LDIzICs1MDEsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0
ZQogCiBFbmNvZGVkSlNWYWx1ZSBKU05QT2JqZWN0OjptZXRob2RHZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTTlBP
YmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqLCBpbmZvKCkpOwogICAgIAogICAgIGlmICghdGhpc09iai0+bV9u
cE9iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIE5QSWRlbnRpZmllciBucElkZW50
aWZpZXIgPSBucElkZW50aWZpZXJGcm9tSWRlbnRpZmllcihwcm9wZXJ0eU5hbWUpOwogICAgIC8v
IElmIHRoZSBwcm9wZXJ0eU5hbWUgaXMgc3ltYm9sLgogICAgIGlmICghbnBJZGVudGlmaWVyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4
ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NF
cnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU05QTWV0
aG9kOjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5w
dWJsaWNOYW1lKCksIG5wSWRlbnRpZmllcikpOwogfQogCi1KU09iamVjdCogSlNOUE9iamVjdDo6
dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIEpTTlBP
YmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20g
ZGVzdHJveWVkIHBsdWctaW4uIikpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0
IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFs
dWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgbWV0aG9k
R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihKU0M6OkV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6VGhyb3dTY29wZSYpOwogCiAgICAg
TlBSdW50aW1lT2JqZWN0TWFwKiBtX29iamVjdE1hcDsKICAgICBOUE9iamVjdCogbV9ucE9iamVj
dDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50
aW1lT2JqZWN0TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjc0LDEyICsyNzQsMTUgQEAgdm9pZCBO
UFJ1bnRpbWVPYmplY3RNYXA6OnNldEdsb2JhbEV4Y2VwdAogICAgIAogdm9pZCBOUFJ1bnRpbWVP
YmplY3RNYXA6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKKyAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKICAgICB9CiAgICAgCiAgICAgZ2xv
YmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA4LTI5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIFRocm93U2NvcGUgYW5kIGZvcmNlIGV2
ZXJ5IHRocm93IHNpdGUgdG8gaW5zdGFudGlhdGUgYSBUaHJvd1Njb3BlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMTcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKToKKyAgICAg
ICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tOgorICAgICAgICAoV2ViS2l0OjpQ
cm94eUluc3RhbmNlOjppbnZva2VNZXRob2QpOgorCiAyMDE2LTA4LTI4ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBkb2N1bWVudC50aXRsZSBzZXR0ZXIgY2Fu
J3QgdGhyb3cuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCShyZXZpc2lvbiAy
MDUxNzUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYzMiwx
MiArMTYzMiwxNSBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6c2V0R2xvCiAK
IHZvaWQgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojptb3ZlR2xvYmFsRXhjZXB0aW9uVG9F
eGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGdsb2Jh
bEV4Y2VwdGlvblN0cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0g
ICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygp
KSk7CisgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygp
KSk7CiAgICAgfQogCiAgICAgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5j
ZS5tbQkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvUHJveHlJbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTks
OCArMjE5LDExIEBAIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6Z2V0TWV0aG9kKEpTQzo6RXgKIAog
SlNWYWx1ZSBQcm94eUluc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBKU0M6
OlJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
IWFzT2JqZWN0KHJ1bnRpbWVNZXRob2QpLT5pbmhlcml0cyhQcm94eVJ1bnRpbWVNZXRob2Q6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4i
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmpl
Y3QuIikpOwogCiAgICAgUHJveHlNZXRob2QqIG1ldGhvZCA9IHN0YXRpY19jYXN0PFByb3h5TWV0
aG9kKj4ocnVudGltZU1ldGhvZC0+bWV0aG9kKCkpOwogICAgIEFTU0VSVChtZXRob2QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287378</attachid>
            <date>2016-08-30 01:26:08 -0700</date>
            <delta_ts>2016-08-30 11:12:25 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>1201474</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1OCBA
QAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgTWlzYyBvdGhlciBjaGFuZ2VzOgorICAgICAgICAt
IGRlbGV0ZWQgdGhlIHVudXNlZCBDQUxMX1RIUk9XKCkgbWFjcm8gZnJvbSBMTEludFNsb3dQYXRo
cy5jcHAuCisgICAgICAgIC0gbW92ZWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoKSBmcm9tIEpT
T2JqZWN0LmggdG8gSlNPYmplY3RJbmxpbmVzLmguCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmN1c3RvbUhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JO
YW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJp
ZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
Ojpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpq
c0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlz
T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFp
bERlbGV0ZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1
c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5Ojps
ZW5ndGhHZXR0ZXIpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAg
KGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1
bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVu
Y3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAg
KGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1
bGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5j
dGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoSlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpj
b25jYXRBcHBlbmRPbmUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uU2xvd1BhdGhzOjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJl
dGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVh
cik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY0dldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChK
U0M6OnNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVG
cm9tRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6
OnRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5n
ZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dWTVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVF
cnJvcik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRo
cm93VHlwZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25GdXp6LmNwcDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJv
d091dE9mTWVtb3J5RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpmdW5jdGlvblByb3RvRnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5n
T3B0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRM
b2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yRm9ySXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cG9wKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6dG9TdHJpbmdTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omdl
dERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0dldHRlckJ1ZmZlcik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVy
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc6OnNldEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0Zyb21JdGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpk
ZWNvZGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZy
b21BcnJheUxpa2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0UHJvbWlzZSk6CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0
eU5hbWVJdGVyYXRvckZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpi
dWlsZCk6CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5l
cjo6am9pbmVkTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0VHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4p
OgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNJdGVyYXRvcj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMp
OgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFw
UHJvdG9GdW5jS2V5cyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6Cisg
ICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJv
dG9GdW5jVG9QcmVjaXNpb24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJv
dG90eXBlT2YpOgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJB
cnJheSk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJs
ZVByb3h5KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJy
b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6
OmNhbGxQcm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZv
cm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
SGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RFbnVtZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToK
KyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0
T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNvbGxlY3RNYXRjaGVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0
RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlND
OjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVy
TXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3Vy
Y2UpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVqZWN0Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToK
KyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNl
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpq
c1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChK
U0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2Rl
UG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlND
Ojp0b0xvY2FsZUNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0JsaW5rKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jSXRhbGljcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1N1cCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQW5jaG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6
CisgICAgICAgIChKU0M6OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25D
aGVja2VyOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1i
b2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0
b3JLZXlGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6
OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhy
b3dFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNr
KToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAg
ICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6OnZtKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6VGhyb3dTY29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OlRocm93U2NvcGUpOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6
CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93
U2NvcGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9u
OjpUaHJvd1Njb3BlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZt
KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAg
ICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vh
a01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAg
KiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFr
U2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgor
ICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIw
MjU2OCk6IFdlYiBJbnNwZWN0b3I6IEV4cGFuZGluZyBBcnJheSBQcm90b3R5cGUgaW4gQ29uc29s
ZSBzaG93cyBubyBwcm9wZXJ0aWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw2ICs4MTQsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisgICAgcnVudGlt
ZS9UaHJvd1Njb3BlLmNwcAogICAgIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5jcHAKICAgICBy
dW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hl
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsMTIgKzM2NSwx
NSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBDdXN0b21HZXR0ZXIq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEN1c3RvbUdldHRlcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2Jq
ZWN0LT5nZXQoZXhlYywgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
InNob3VsZFRocm93IikpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDEwMCkpOwogICAgIH0KIH07CkBAIC00NzAsOSArNDcz
LDEyIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgUnVudGltZUFycmF5KiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CiAgICAgfQogCkBAIC0xMjMyLDExICsxMjM4LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUm9v
dCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iKSkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHJvb3QpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
cm9vdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxl
bWVudChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDE2LDIwICsxNDI1LDIzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZl
dGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSog
YXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAw
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAg
ICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0
aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xNDM4LDcgKzE0NTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgc3RvcFdhdGNoLnN0b3Ao
KTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHNjb3BlLCBleGNlcHRpb24p
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICAKQEAgLTE0NDcsMjMgKzE0NTksMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJ1bgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVu
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBzb3Vy
Y2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKICAgICBKU0FycmF5
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7
ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0KAotICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAg
ICAgICAgdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNl
cHRpb247CiAgICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3Vy
Y2Uoc291cmNlKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBleGNlcHRpb24pOworICAgICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDcyLDI0ICsxNDg3LDMw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3Jp
cHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNj
cmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBv
cGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQg
bm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwg
SlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRp
b25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NDk4LDMwICsxNTE5LDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25M
b2EKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNv
dXJjZShzb3VyY2VDb2RlKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJl
YWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmlsbEJ1ZmZlcldp
dGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHNjcmlw
dCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3lu
dGF4KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9t
TG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwogCkBAIC0xNTMzLDcgKzE1NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2hlCiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRTeW50YXgp
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgc3ludGF4RXhjZXB0aW9u
KTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNl
ZE1TKCkpKTsKIH0KIApAQCAtMTYzOCwxMiArMTY2NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpKSk7CiAgICAg
CiAgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiKSkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIi
KSkpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAg
YnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOwpAQCAtMTgxMCwyNyArMTg0
MCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8
Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZp
bGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
b3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBKU0ludGVybmFsUHJvbWlzZSog
cHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBmaWxlTmFtZSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBlcnJvcjsKLSAgICBKU0Z1bmN0aW9uKiBlcnJv
ckhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykg
eworICAgIEpTRnVuY3Rpb24qIGVycm9ySGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4
ZWNTdGF0ZSogZXhlYykgewogICAgICAgICBlcnJvciA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0pOwogCiAg
ICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRyLCBlcnJvckhhbmRsZXIpOwotICAgIGV4ZWMt
PnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAg
aWYgKGVycm9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0xODU4LDYgKzE4OTEsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTg3MCw3ICsxOTA2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRj
aC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCB0b1N0cmluZygiU3lu
dGF4RXJyb3I6ICIsIGVycm9yLm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
dG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3IubGlu
ZSgpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdl
dEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE5MDcsMTAgKzE5NDMsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKLSAgICBpZiAoIWV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3Rh
cnRlZCIpKSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2FtcGxpbmcgcHJvZmlsZXIgd2Fz
IG5ldmVyIHN0YXJ0ZWQiKSkpKTsKIAotICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXhlYy0+dm0o
KS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CisgICAgU3RyaW5nIGpz
b25TdHJpbmcgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CiAg
ICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShleGVj
LCBqc29uU3RyaW5nKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw2ICs0NCw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgRW5jb2RlZEpTVmEKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxs
YmFja0Z1bmN0aW9uOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgTm90U3RyaWN0TW9kZSkpKTsKQEAgLTYxLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBBUElDYWxsYmFjawogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8VCo+KHRvSlMo
ZnVuY3Rpb25SZWYpKS0+ZnVuY3Rpb25DYWxsYmFjaygpKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0
aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsK
ICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKIAogICAgIC8vIHJlc3VsdCBt
dXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4KICAgICBpZiAoIXJlc3VsdCkKQEAgLTczLDYgKzc1LDgg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFjawogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rp
b246OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29u
c3RydWN0b3IpOwpAQCAtOTIsMTIgKzk2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgQVBJQ2FsbGJhY2sKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3Ry
dWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OwogICAgICAgICB9CiAgICAgICAgIC8vIHJlc3VsdCBtdXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4K
ICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogICAgIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTMzLDYg
KzEzMyw5IEBAIFN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmEKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtMTU5LDcgKzE2Miw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5n
ZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRF
bnVtLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjAwLDYgKzIwMyw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpnZXRPd25Qcm8KIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgY29uc3QgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxjb25zdCBKU0NhbGxiYWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgY3R4
ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmpl
Y3QpOwpAQCAtMjEwLDcgKzIxNiw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpkZWZhdWwKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gY29udmVydFRvVHlwZShjdHgsIHRoaXNSZWYsIGpzSGlu
dCwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4
ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJlc3VsdCkKQEAgLTIyNCw2ICsyMzAsOSBA
QCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRo
aXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTI0Miw3ICsyNTEsNyBAQCBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCB2YWx1
ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0yNTksNyArMjY4LDcgQEAgYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFt
ZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhl
YywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNzMsNyArMjgy
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc09i
amVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJv
cGVydHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI4
NSw2ICsyOTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
SW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtMzAzLDcgKzMxNSw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQo
KSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CkBAIC0zMjAsNyArMzMyLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dEJ5SW5kZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBlbnRyeS0+cHJvcGVydHlOYW1lUmVmLmdldCgpLCB2YWx1ZVJlZiwgJmV4
Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQyLDYg
KzM1NCw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYg
Y3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNP
YmplY3QpOwpAQCAtMzU5LDcgKzM3NCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpkZWxldGVQcm8KICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsZXRlUHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
QEAgLTQwOCw2ICs0MjMsOSBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CiAgICAgSlNDb250
ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Rv
clJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTQyNiw3ICs0NDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
dG9KUyhjYWxsQXNDb25zdHJ1Y3RvcihleGVjUmVmLCBjb25zdHJ1Y3RvclJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC00MzgsNiArNDU2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9
IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtNDUyLDcgKzQ3Myw3IEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpjdXN0b21IYXMKICAgICAgICAgICAgICAgICByZXN1bHQgPSBoYXNJbnN0
YW5jZShleGVjUmVmLCB0aGlzUmVmLCB2YWx1ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24p
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzUs
NiArNDk2LDkgQEAgQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYQogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NvbnRl
eHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVm
ID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0
b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90
U3RyaWN0TW9kZSkpKTsKQEAgLTQ5Myw3ICs1MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01NzAsNiArNTk0LDkgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVy
aXRzKAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9S
ZWYodGhpcyk7CiAgICAgCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCkpIHsKQEAgLTU4NCw3ICs2MTEsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0U3RhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9w
ZXJ0eSh0b1JlZihleGVjKSwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwg
JmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pT
KGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQpAQCAtNjAxLDYgKzYyOCw5IEBAIEpTVmFsdWUgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRTdGEKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09i
aiA9IGFzQ2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICAvLyBDaGVjayBmb3Ig
Y2FjaGVkIG9yIG92ZXJyaWRlIHByb3BlcnR5LgpAQCAtNjEzLDcgKzY0Myw2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgICAgIGlmIChPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3MtPnN0
YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlv
bkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rp
b24gPSBlbnRyeS0+Y2FsbEFzRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9
IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwg
Y2FsbEFzRnVuY3Rpb24sIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobyk7CkBAIC02MjMsMTIg
KzY1MiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rp
b24gY2FsbGJhY2suIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rp
b24gY2FsbGJhY2suIikpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYodGhpc09iaik7CkBAIC02NDYsNyArNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldFBy
b3BlcnR5KHRvUmVmKGV4ZWMpLCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNl
cHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
dG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTY1NSw3ICs2ODcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJoYXNQcm9wZXJ0eSBj
YWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4i
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5
IGNhbGxiYWNrIHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0
LiIpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDkgKzEwMCwxMSBAQCBpbmxpbmUgVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShKCiAK
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlVHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlw
ZWRBcnJheVR5cGUgdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghYnVm
ZmVyKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIHN3aXRjaCAodHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDk2
LDggKzIwOTYsMTAgQEAKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuY3BwICovOyB9OwogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTJFNkE3QjFENkVBNjJDMDA2MEY4OTYgLyogVGhy
b3dTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi87IH07CiAJCUZF
MzE4RkRGMUNBQzk4MjcwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4
RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmggKi87IH07CisJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0
MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsK
IAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUz
ODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpA
QCAtMjEyNCw2ICsyMTI2LDcgQEAKIAkJRkU1MDY4NjcxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVy
cmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNw
cCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNTE4
M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKIAkJRkU1OTMyQTgxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjAyOUQ4MUQ2RTFFMzMw
MDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2OEM2MzgxQjkwREUwQjAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYzNTFCOTBE
REQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLzsgfTsKIAkJRkU3QkE2
MEYxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyog
SGVhcFZlcmlmaWVyLmNwcCAqLzsgfTsKQEAgLTQzOTgsOCArNDQwMSwxMCBAQAogCQlGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlDMTVG
MDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2Nv
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1
NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQg
LyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocm93U2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xs
YXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTMxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NDI2LDYgKzQ0MzEsNyBAQAogCQlGRTUwNjg2NjFBRTI1RTI4
MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERlZmVycmVkU291cmNlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1FbnRyeVNjb3BlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUVudHJ5
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2MDI5RDgxRDZFMUUzMzAw
MzAyMDREIC8qIFRocm93U2NvcGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJvd1Njb3BlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY4QzYzNjFCOTBEREQ5MDA0
MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTI5LDYgKzYxMzUsOSBAQAogCQkJCTcwRUNBNjA0
MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi8sCiAJCQkJMEZBMkMx
NzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8sCiAJCQkJMEZBMkMx
N0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovLAorCQkJCUZFMkU2QTdB
MUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLywKKwkJCQlGRTM0MjIxMTFENkI4
MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovLAorCQkJCUZFNjAyOUQ4MUQ2RTFFMzMwMDMw
MjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLywKIAkJCQkwRjU1OTg5NzE3Qzg2QzU2MDBB
MUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLywKIAkJCQkwRjJCNjZEODE3QjZCNUFCMDBB
N0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggKi8sCiAJCQkJMEYyQjY2RDkxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTc2MzUsNiArNzY0NCw3
IEBACiAJCQkJQkMxOEM0MDUwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUzNDIyMTIxRDZCODFD
MzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRF
OTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2
RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRl
ZC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Njc2LDYgKzc2ODYsNyBAQAogCQkJCTBGRTA1MDFBMUFB
OTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2Jq
ZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDRE
IC8qIFRocm93U2NvcGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMUIxQUE5
MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkUwMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTkxNzcsNiArOTE4OCw3IEBACiAJCQkJMEZD
RUZBQUIxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTJFNkE3QjFENkVBNjJDMDA2MEY4OTYgLyog
VGhyb3dTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjhEQUVB
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsOCAr
MTM4LDEwIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVn
YXRpdmUiKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUi
KSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC03MjUs
MTIgKzcyNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAg
ICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50KTsKICAgICAKICAgICBpZiAoIWJhc2UuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNTdHJpbmcqIGlucHV0
ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKQEAgLTc2
OSwxMiArNzcyLDEzIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QK
ICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QXJndW1lbnQpOwogCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05MzMs
OSArOTM3LDEwIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXQKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0p
OwogCiAgICAgaWYgKFVOTElLRUxZKHNpemUgPCAwKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2gg
cG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4odGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRl
Z2VyLiIpKSkpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlKCp2bSwg
YXJyYXlTdHJ1Y3R1cmUsIHNpemUpOwogICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3Vy
ZSB0aGF0IHRoZSBiYWNraW5nIHN0b3JlIGlzIGluIHRvLXNwYWNlLgpAQCAtMTM4OCw5ICsxMzkz
LDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTIKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlZnQtPmxlbmd0aCgpLCByaWdodC0+bGVuZ3Ro
KCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xNDAxLDkgKzE0MDcsMTAgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1ha2VSb3BlMwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oYS0+
bGVuZ3RoKCksIGItPmxlbmd0aCgpLCBjLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MTQsNiArMTQy
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEUKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU1N0cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKICAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBo
YXZlIGJlZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0MjEsNyArMTQyOSw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEUKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlv
bigpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVuZ3RoKCksIHN0
cjItPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtMTQzMiw2ICsxNDQwLDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoRQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNW
YWx1ZTo6ZGVjb2RlKGEpLnRvU3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9u
KCkpOyAvLyBJbXBvc3NpYmxlLCBzaW5jZSB3ZSBtdXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRp
dmVzLgpAQCAtMTQ0MSw3ICsxNDUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0ckNhdDMoRQogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92
ZXJmbG93czxpbnQzMl90PihzdHIxLT5sZW5ndGgoKSwgc3RyMi0+bGVuZ3RoKCksIHN0cjMtPmxl
bmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTU0NSw3ICsxNTU0LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93U3RhY2tPdgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiB9CiAKIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplT2ZWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCkKQEAgLTE3MzIsMTMgKzE3NDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzY29wZS0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xv
dCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAg
IEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0cyk7CiAgICAgICAgICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAg
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtMTc0Niw3ICsx
NzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgICAg
ICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3ZlIHdlIG5lZWQgYSBURFogY2hl
Y2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNsb3cgcGF0aC4KICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzYwLDYgKzE3NzEsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RHluYW1pY1ZhCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCk7
CiAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKGdldFB1dEluZm9CaXRzKTsKQEAgLTE3NzEsMTMg
KzE3ODMsMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYQogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAgICAgaWYgKHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihl
eGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVy
dHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw5ICs5NSwxMiBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZShFCiAKIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBh
cmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBwcm9ncmFtID0gc2Ny
aXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTEwNyw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpldmFsdWF0ZVdpCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uID0gZXhlYy0+YXJn
dW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMsIG1ha2VTb3VyY2UocHJvZ3JhbSksIHNjb3BlRXh0ZW5z
aW9uLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEyMCArNzcsMTU2IEBAIHZvaWQg
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmkKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlKGV4ZWMpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmpl
Y3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25J
c0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzSFRN
TEFsbENvbGxlY3Rpb24oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwU2l6ZShleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbldlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtN
YXBFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25X
ZWFrU2V0RW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0RW50
cmllcyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1
YnR5cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VidHlwZShleGVjKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFBy
b3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFs
dWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Z2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzKGV4ZWMpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDIwNTE3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsOSArNzcsMTIgQEAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp+SlNKYXZhU2NyaXB0Q2FsbAogCiBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50
IG11c3QgYmUgYSBzdHJpbmcuIikpOwogCiAgICAgU3RyaW5nIHNjcmlwdCA9IHNjcmlwdFZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC04OSw3ICs5Miw3IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFs
dWF0ZVcKICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb24gPSBleGVjLT5hcmd1bWVudCgxKS5n
ZXRPYmplY3QoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwoKS5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihzY3JpcHQsIHNjb3BlRXh0ZW5zaW9uLCBleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0
aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
NiwxMTAgKzc2LDE0MyBAQCB2b2lkIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6Zmlu
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+c2NvcGVEZXNjcmlwdGlvbnMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
IWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNhbGxlcihleGVjKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNl
SUQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zb3VyY2VJRChleGVjKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlTGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmxpbmUoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUNvbHVtbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENh
bGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVt
bihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+ZnVuY3Rpb25OYW1lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVDaGFpbihleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhp
c09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVR5cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRD
YWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50eXBl
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVJc1RhaWxEZWxldGVkKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxs
RnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
aXNUYWlsRGVsZXRlZChleGVjKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDEyICs0NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9pbnRlcnBy
ZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAgICAgICAgICAgICAsIG1fZW50cnlTY29w
ZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAg
ICAgICAgeworICAgICAgICAgICAgVk0mIHZtID0gbV9lbnRyeVNjb3BlLnZtKCk7CisgICAgICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgICAg
IEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewog
ICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAg
ICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2Fs
bChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUs
IGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1l
bnRzLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgbV92YWxpZCA9ICFj
YWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwLCAyMDEyLTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24g
WndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEy
Nyw2ICsxMjcsOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgCiAK
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKQEAgLTEzNCwxMCArMTM3LDEwIEBAIEpTVmFsdWUgZXZhbChDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIXByb2dyYW0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuIHByb2dyYW07CiAKLSAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZyYW1lKGNhbGxG
cmFtZS0+dm0oKSwgY2FsbEZyYW1lKTsKKyAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZy
YW1lKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
YWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVl
KGNhbGxGcmFtZSk7CkBAIC0xODEsNyArMTg0LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJh
bCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIApAQCAtMTkwLDE3ICsxOTMsMjAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIH0KIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUt
PnRoaXNWYWx1ZSgpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+
dm0oKS5pbnRlcnByZXRlcjsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bS5pbnRl
cnByZXRlcjsKICAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1l
LCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4pOwogfQogCiB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWSgh
YXJndW1lbnRzLmlzQ2VsbCgpKSkgewogICAgICAgICBpZiAoYXJndW1lbnRzLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAgICAgIGNhbGxG
cmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZUludmFsaWRGdW5jdGlv
bkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBhcmd1bWVudHMpKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgCkBAIC0yMTUsNyArMjIxLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcgogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAg
ICAgY2FzZSBTeW1ib2xUeXBlOgotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNh
bGxGcmFtZSwgIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFt
ZSwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTIzNywyMSArMjQzLDI1IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1l
KiBjYWxsRnIKIAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mIHZtLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xv
dHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0
eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCiB1bnNpZ25lZCBzaXpl
RnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYXJn
dW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZU9mVmFyYXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywg
Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBj
YWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBudW1Vc2VkU3RhY2tTbG90cywgbGVuZ3Ro
ICsgMSk7CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heEFyZ3VtZW50cyB8fCAhdm0uZW5z
dXJlU3RhY2tDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkgewotICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIApAQCAtODIyLDE1ICs4MzIsMTYgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShQcm9ncmFtRXhlYwogewogICAgIEpTU2NvcGUqIHNjb3BlID0gdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCF2
bS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAg
ICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JC
dXN5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwog
CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEg
SlNPTiBvYmplY3QuIElmIHNvLAogICAgIC8vIHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3Qg
aGVyZS4gRWxzZSwgd2UnbGwgaGFuZGxlIHJlYWwgSlMgY29kZQpAQCAtODcxLDIyICs4ODIsMjIg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmdldFByb3Bl
cnR5U2xvdChjYWxsRnJhbWUsIEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUsIHNsb3QpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBKU09OUFBh
dGhbaV0ubV9wYXRoRW50cnlOYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBKU09OUFBhdGhbaV0ubV9wYXRoRW50cnlOYW1l
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWRKU09OUDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3Qg
PSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZU9iamVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVu
dHJ5TmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2Fz
ZSBKU09OUFBhdGhFbnRyeVR5cGVMb29rdXA6IHsKICAgICAgICAgICAgICAgICAgICAgYmFzZU9i
amVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
T05QUGF0aFtpXS5tX3BhdGhJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
ODk5LDI5ICs5MTAsMjkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhl
YwogICAgICAgICAgICAgc3dpdGNoIChKU09OUFBhdGgubGFzdCgpLm1fdHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBKU09OUFBhdGhFbnRyeVR5cGVDYWxsOiB7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoLmxhc3Qo
KS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25F
cnJvcihjYWxsRnJhbWUsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIganNvbkFyZzsKICAgICAgICAgICAgICAgICBqc29uQXJnLmFwcGVuZChKU09OUFZh
bHVlKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTT05QUGF0aC5zaXpl
KCkgPT0gMSA/IGpzVW5kZWZpbmVkKCk6IGJhc2VPYmplY3Q7CiAgICAgICAgICAgICAgICAgSlNP
TlBWYWx1ZSA9IEpTQzo6Y2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXNWYWx1ZSwganNvbkFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBhdGhF
bnRyeVR5cGVEb3Q6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dChjYWxsRnJhbWUs
IEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lLCBKU09OUFZhbHVlLCBzbG90KTsKLSAg
ICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
ICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIEpTT05QUGF0aEVudHJ5VHlwZUxvb2t1cDogewogICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QucHV0QnlJbmRleChjYWxsRnJhbWUsIEpTT05QUGF0aC5sYXN0KCku
bV9wYXRoSW5kZXgsIEpTT05QVmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlm
ICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTk0
MSwxOCArOTUyLDIwIEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8g
Ynl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgogICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5pbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyh2bSwgY2FsbEZyYW1lLCBzY29wZSkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGVycm9yKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXhj
ZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpKTsKIAogICAgIFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9j
azsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVj
dXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVG
b3JDYWxsLCB0ZW1wQ29kZUJsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248UHJvZ3Jh
bUV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0ganNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPihlcnJvcikp
OworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKSk7CiAgICAgICAgIGNv
ZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAg
fQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxsRnJh
bWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihj
YWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAKICAgICBpZiAoc2NvcGUtPnN0cnVjdHVyZSgp
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQogICAgICAgICBzY29wZS0+ZmxhdHRlbkRpY3Rp
b25hcnlPYmplY3Qodm0pOwpAQCAtOTcxLDYgKzk4NCw4IEBAIGZhaWxlZEpTT05QOgogSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0
KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0g
Y2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5
KCkpCkBAIC05OTMsMTMgKzEwMDgsMTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVj
dCk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0g
Y2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwg
c2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBBU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVF
cnJvcikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwog
CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+
bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTEwMDcsNyArMTAyMyw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgbmV3Q29kZUJs
b2NrID0gMDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
Y2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGZ1
bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTAxNSwxMSAr
MTAzMSwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAg
SlNWYWx1ZSByZXN1bHQ7CiAgICAgewogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAg
ICAgICBpZiAoaXNKU0NhbGwpCisgICAgICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAgICAg
cmVzdWx0ID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKSwgJnZtLCAmcHJvdG9D
YWxsRnJhbWUpKTsKLSAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0ganNOdWxsKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDMwLDEyICsxMDQ3LDE0
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIEpTT2JqZWN0KiBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3
VGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2FsbEZyYW1l
LT5oYWRFeGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAg
ICAgLy8gV2UgdGhyb3cgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugd2UgaGF2ZSB0byByZXR1cm4gc29t
ZXRoaW5nICJ2YWxpZCIgYnV0IHdlJ3JlCiAgICAgLy8gYWxyZWFkeSBpbiBhbiBpbnZhbGlkIHN0
YXRlLgogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKLSAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhy
b3dTY29wZSkpOwogCiAgICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVjdFR5cGUgPT0g
Q29uc3RydWN0VHlwZTo6SlMpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKQEAgLTEw
NTQsMTMgKzEwNzMsMTMgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KAogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKyAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
LCB0aHJvd1Njb3BlKSk7CiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBD
b21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25z
dHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciksIHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2spOwogICAgICAgICBpZiAo
VU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9y
KSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogCiAgICAgICAgIEFTU0VSVCghIW5l
d0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKQEAgLTEwNjgsNyArMTA4Nyw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrID0gMDsKIAogICAgIGlmIChV
TkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CiAgICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQs
IGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTA5NSw2ICsxMTE0LDcgQEAgSlNPYmplY3Qq
IEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnBy
ZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxs
RnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlKiBhcmdzKQogewogICAgIFZNJiB2bSA9ICpzY29w
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICAKICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCkBAIC0xMTA0LDcgKzExMjQsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yCiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOwogICAgIGlmIChlcnJvcikgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4gQ2FsbEZyYW1l
Q2xvc3VyZSgpOwogICAgIH0KICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkID0gZmFsc2U7CkBAIC0xMTIwLDcgKzExNDAsOCBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFt
ZUNsb3N1cmUmIGNsb3N1cmUpIAogewogICAgIFZNJiB2bSA9ICpjbG9zdXJlLnZtOwotICAgIAor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgp
KQpAQCAtMTEyOSw3ICsxMTUwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxs
RnJhbWVDbAogICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwogCiAg
ICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjbG9zdXJlLm9sZENh
bGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAK
ICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2xvc3VyZS5m
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZt
LCBjbG9zdXJlLnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExNDAsNyArMTE2MSw4IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNTY29wZSogc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgp
OwotICAgIAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VS
VCghdm0uZXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwpA
QCAtMTE1MCw3ICsxMTcyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhl
Y3V0YQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmpl
Y3QoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUpKTsgICAgICAgIAorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcyA9IGV2YWwtPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBl
dmFsLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsKQEAgLTExODEsNyArMTIwMyw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgQ29kZUJsb2NrKiB0
ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXZhbC0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBudWxscHRyLCBzY29w
ZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFj
b21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENv
ZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTE5Miw3ICsxMjE0LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZhcmlhYmxlKGkpOwogICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgICAgIGlmIChKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxF
bnZpcm9ubWVudCwgY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VTdHJpbmco
IkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJp
bmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgbWFrZVN0cmluZygi
Q2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmlu
ZyhpZGVudC5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAt
MTIwMCw3ICsxMjIyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YQogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgY2FsbEZyYW1lLCBmdW5jdGlv
bi0+bmFtZSgpLCBzbG90KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxp
Y2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhmdW5jdGlvbi0+bmFtZSgp
LmltcGwoKSksICInIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNy
ZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rp
b24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMjI5LDcgKzEyNTEsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJt
aW5hdGlvbihjYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCiAKQEAgLTEyNDUsNiArMTI2Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGEKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmly
b25tZW50KiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoc2NvcGUt
PnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CkBAIC0xMjU1LDE5ICsxMjc4LDE5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9k
dWxlUHJvZ3IKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrOwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2Nr
OwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBudWxscHRyLCBz
Y29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwogICAgICAgICBpZiAoVU5MSUtFTFko
ISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZy
YW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRo
cm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChV
TkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAgICAgLy8gV2UgcGFzcyBpbiBvdXIgb3duIGNv
ZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFtZSBoYXNuJ3QgYmVlbiBwb3B1bGF0ZWQuCiAg
ICAgVk0qIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CiAKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50
b3BWTUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxl
ckZyYW1lKHZtRW50cnlGcmFtZSk7CkBAIC05OCw0MyArOTksNDggQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgIH0KIAogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0g
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpOworICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dEaXZpZGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIFZNRW50cnlGcmFtZSogdm1FbnRy
eUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1l
ID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKIAogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7
CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKLSAgICB2bS0+dGhyb3dF
eGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBBU0NJSUxpdGVy
YWwoIkRpdmlzaW9uIGJ5IHplcm8gb3IgZGl2aXNpb24gb3ZlcmZsb3cuIikpKTsKKyAgICB0aHJv
d0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBB
U0NJSUxpdGVyYWwoIkRpdmlzaW9uIGJ5IHplcm8gb3IgZGl2aXNpb24gb3ZlcmZsb3cuIikpKTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93T3V0T2ZCb3VuZHNBY2Nlc3NF
cnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIFZNRW50cnlGcmFt
ZSogdm1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKIAogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxs
ZXJGcmFtZSk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKLSAgICB2
bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBB
U0NJSUxpdGVyYWwoIk91dC1vZi1ib3VuZHMgYWNjZXNzLiIpKSk7CisgICAgdGhyb3dFeGNlcHRp
b24oY2FsbGVyRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRl
cmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKSkpOwogfQogI2VuZGlmCiAKIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICp2bSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChtaXNz
aW5nQXJnQ291bnQgPCAwKSB7CiAgICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0g
dm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4
ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUsIHNjb3BlKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwpAQCAtMTQzLDEzICsxNDksMTQgQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7
CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChtaXNzaW5nQXJn
Q291bnQgPCAwKSB7CiAgICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0gdm0tPnRv
cFZNRW50cnlGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNh
bGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldp
dGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUsIHNjb3BlKTsKICAgICB9CiAKICAgICByZXR1cm4g
bWlzc2luZ0FyZ0NvdW50OwpAQCAtMjU0LDkgKzI2MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIGlmICghYmFzZS0+aXNP
YmplY3QoKSkgewotICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxp
ZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAg
ICAKQEAgLTI4MywxMSArMjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW4KICAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CiAKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFt
ZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTc5NCw2ICs4MDMsNyBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+
c2V0Q29kZUJsb2NrKDApOwogCkBAIC04MTksNyArODI5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICB9CiAgICAgCiAgICAgICAgIEFTU0VSVChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihl
eGVjLCBjYWxsZWUpKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAg
IHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg0Niw3ICs4NTYsNyBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgfQogICAgIAogICAgIEFTU0VSVChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7
CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVy
cm9yKGV4ZWMsIGNhbGxlZSkpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgIHZt
LT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEtlZXBUaGVGcmFtZSkpOwpAQCAtODU2LDYgKzg2Niw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpOwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC04NjUsNiAr
ODc3LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNhY2hlIHRoZXNlIGtpbmRzIG9mIGNhbGxzLiBUaGV5IGNh
biBiZSBjb21tb24gYW5kIGN1cnJlbnRseSB0aGV5IGFyZQogICAgICAgICAvLyBleHBlbnNpdmUu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ0
NTgKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVI
b3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pOwogICAgIH0K
IApAQCAtODkyLDcgKzkwNSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGkKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBp
ZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHko
KSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
ZXhlYywgY2FsbGVlKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVw
VGhlRnJhbWUpKTsKQEAgLTkwMCw4ICs5MTMsOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4
ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3Ig
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPihleGVjQ2FsbGVlLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7Cisg
ICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwK
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsK
QEAgLTkyNyw2ICs5NDEsOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JX
aXRoCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBj
YWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCkBAIC05NDcsNyArOTYzLDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKTsKIAogICAgICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOworICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRo
ZUZyYW1lKSk7CkBAIC05NTYsNyArOTcyLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2
aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4
ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oZXhlY0NhbGxlZSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xv
dCk7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZy
YW1lKSk7CkBAIC05NjQsNyArOTgwLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0
dWFsRm9yV2l0aAogICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpKSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBm
dW5jdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC0xMTM5LDkgKzExNTUsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSZWdFeHAqIHJlZ2V4cCA9IHN0YXRpY19j
YXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CiAgICAgaWYgKCFyZWdleHAtPmlzVmFsaWQoKSkgewot
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBy
ZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC0xMTU2LDkgKzExNzQsMTAgQEAgVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFu
ZGxlVwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
ZXhlYykpKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtMTE2NywxMyArMTE4NiwxNSBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGF0aWNFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBlcnJvck1lc3NhZ2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGVycm9yTWVzc2FnZVZhbHVlLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSBhc1N0cmluZyhlcnJvck1lc3NhZ2VWYWx1ZSktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChyZWZl
cmVuY2VFcnJvckZsYWcpCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7
CiAgICAgZWxzZQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJf
dCBkZWJ1Z0hvb2tJRCkKQEAgLTE4NzEsMTMgKzE4OTIsMTQgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlJZAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIWJhc2VP
YmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgdWlkKSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIApAQCAtMTg5MCw2ICsx
OTEyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS50b09i
amVjdChleGVjKTsKICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5
KTsKQEAgLTE5MDksNyArMTkzMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmEKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsIHByb3BlcnR5KTsKICAgICB9CiAgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERl
bGV0ZTsKIH0KIApAQCAtMjAyNiw2ICsyMDQ5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKICAgICBJbnN0cnVjdGlvbiogcGMgPSBieXRlY29kZVBDOwogCkBA
IC0yMDM5LDcgKzIwNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1
ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQotICAgICAgICAgICAgICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0yMDQ4LDcgKzIwNzMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVu
IHdlIGNhbid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBw
ZXJmb3JtIHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0g
c2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpz
VERaVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwNjUsNiAr
MjA5MCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEluc3RydWN0aW9uKiBwYyA9IGJ5dGVjb2RlUEM7CiAKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwpAQCAtMjA5MiwyMCArMjExOSwyMCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KHNjb3BlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
ICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChz
Y29wZSwgZXhlYywgaWRlbnQsIHNsb3QpOwogICAgICAgICBpZiAoc2xvdC5nZXRWYWx1ZShleGVj
LCBpZGVudCkgPT0ganNURFpWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkgewotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlz
SW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNj
b3BlLT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7
CiAgICAgCi0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbChleGVjLCBjb2RlQmxvY2ssIHBjLCBzY29wZSwgZ2V0UHV0SW5mbywg
c2xvdCwgaWRlbnQpOwpAQCAtMjExNSw5ICsyMTQyLDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRXhjZXB0aW9uVmFsdWUpOwotICAgIHZtLT50aHJvd0V4
Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIC8vIFJlc3VsdHMgc3RvcmVkIG91dC1vZi1i
YW5kIGluIHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93ICYgdm0uY2FsbEZyYW1lRm9yQ2F0Y2gK
ICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNyArNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAog
I2RlZmluZSBMTElOVF9CRUdJTl9OT19TRVRfUEMoKSBcCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsgICAgICBcCi0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpCisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOyBcCisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcKICNk
ZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVCUygpIGRvIHsgXApAQCAtOTIsMTQgKzkzLDE0IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogI2RlZmluZSBMTElOVF9FTkRfSU1Q
TCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIDApCiAKICNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7
ICAgICAgIFwKICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAog
I2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIGRvRXhjZXB0aW9uRnV6emluZ0lmRW5hYmxlZChleGVjLCAiTExJbnRTbG93UGF0
aHMiLCBwYyk7ICAgIFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgeyAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRp
b24oKSkpIHsgICAgICAgICBcCiAgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYyk7
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNTIsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBl
eGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRXhlY1N0
YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oX19jdF9leGVjLCBleGNlcHRpb25Ub1Rocm93
KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oX19jdF9leGVjLCB0
aHJvd1Njb3BlLCBleGNlcHRpb25Ub1Rocm93KTsgICAgICAgIFwKICAgICAgICAgTExJTlRfQ0FM
TF9FTkRfSU1QTCgwLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMpKTsgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKIApAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUq
IF9fY2NlX2V4ZWNDYWxsZWUgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoX19jY2VfZXhlYywgIkxMSW50U2xv
d1BhdGhzL2NhbGwiLCBudWxscHRyKTsgXAotICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0
aW9uKCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTCgwLCBjYWxsVG9UaHJvdyhfX2Nj
ZV9leGVjQ2FsbGVlKSk7ICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCkBAIC00NjYsNiAr
NDY3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wocmVwbGFjZSkKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHN0YWNrX2NoZWNrKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBWTUVudHJ5RnJhbWUq
IHZtRW50cnlGcmFtZSA9IHZtLnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKICAgICBpZiAoIWNhbGxl
ckZyYW1lKSB7CkBAIC00ODIsOSArNDg1LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tf
Y2hlY2spCiAgICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIGRhdGFMb2dGKCJOdW0gdmFy
cyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CiAKLSAgICBkYXRhTG9n
RigiQ3VycmVudCBPUyBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLnNvZnRTdGFj
a0xpbWl0KCkpOworICAgIGRhdGFMb2dGKCJDdXJyZW50IE9TIHN0YWNrIGVuZCBpcyBhdCAlcC5c
biIsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogI2lmICFFTkFCTEUoSklUKQotICAgIGRhdGFMb2dG
KCJDdXJyZW50IEMgTG9vcCBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLmNsb29w
U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5kIGlz
IGF0ICVwLlxuIiwgdm0uY2xvb3BTdGFja0xpbWl0KCkpOwogI2VuZGlmCiAKICNlbmRpZgpAQCAt
NTAyLDcgKzUwNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogI2VuZGlm
CiAKICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpOworICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxlckZyYW1lLCB0aHJvd1Njb3BlKTsKICAgICBwYyA9IHJldHVyblRvVGhyb3coY2FsbGVy
RnJhbWUpOwogICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpOwogfQpAQCAtNzg0LDEwICs3
ODcsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZAogICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KIAotaW5saW5lIEpTVmFsdWUg
Z2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKExJS0VM
WShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJh
c2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKEpTQ2VsbDo6Y2Fu
VXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgIGlmIChSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBhc1N0cmluZyhzdWJz
Y3JpcHQpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKGV4ZWMpKSB7CkBAIC04MDYsMTAgKzgxMCwx
MCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgfQogCiAg
ICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoc2Nv
cGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVy
biBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKIH0KQEAgLTgxNyw3ICs4MjEsNyBAQCBp
bmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwodm0sIGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKQEAgLTgyNyw2ICs4MzEsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKTsKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CkBAIC04
MzUsMTYgKzg0MCwxNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
CiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAg
ICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5k
ZXgob2JqZWN0LCBleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBleGVjLCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5U
X0VORCgpOwogICAgICAgICB9Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGV4ZWMsIGks
IHZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNl
VmFsdWUucHV0QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAg
TExJTlRfRU5EKCk7CiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGV4ZWMpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGlzU3RyaWN0TW9kZSk7
CiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIExM
SU5UX0VORCgpOwogfQpAQCAtMTE4Niw2ICsxMTkxLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKICAgICBleGVjQ2FsbGVlLT5jbGVhclJldHVyblBDKCk7CkBAIC0xMjM4
LDE4ICsxMjQ0LDIwIEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwK
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCiB7CiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nRigiUGVy
Zm9ybWluZyBjYWxsIHdpdGggcmVjb3JkZWQgUEMgPSAlcFxuIiwgZXhlYy0+Y3VycmVudFZQQygp
KTsKICNlbmRpZgogICAgIAogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRK
U0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwotICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkgeworICAgICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBj
YWxsZWVBc1ZhbHVlLCBraW5kKTsKLSAgICAKKyAgICB9CiAgICAgSlNGdW5jdGlvbiogY2FsbGVl
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7Ci0gICAgVk0mIHZtID0gKnNjb3Bl
LT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRh
YmxlKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKQEAgLTEzMzUsMTIg
KzEzNDMsMTQgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeAogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9f
U0VUX1BDKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGdlbmVyaWND
YWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3QpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ29uc3RydWN0KTsKIH0KIApAQCAtMTQ5OCw2ICsxNTA4LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlYnVnKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2hhbmRsZV9leGNlcHRpb24pCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGdlbmVyaWNVbndpbmQoJnZtLCBleGVjKTsK
ICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpAQCAtMTUwNSw3ICsxNTE2LDYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2hhbmRsZV9leAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9mcm9tX3Njb3BlKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNd
LnUub3BlcmFuZCk7CiAgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJ
TlRfT1AoMikuanNWYWx1ZSgpKTsKICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8ocGNbNF0udS5v
cGVyYW5kKTsKQEAgLTE1MTYsNyArMTUyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfZnJvbV8KICAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFs
dWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5y
ZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKQEAg
LTE1MjUsNyArMTUzNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJv
bV8KICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBwcm92ZSB3ZSBuZWVk
IGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNoZWNrIG9uIHRoZSBzbG93IHBhdGgu
CiAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgQ29tbW9uU2xvd1Bh
dGhzOjp0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbChleGVjLCB2bSwgcGMsIHNjb3BlLCBzbG90
LCBpZGVudCk7CkBAIC0xNTgyLDkgKzE1OTIsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3RvX3NjCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaWZf
ZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bS5leGNlcHRpb24oKSkpCisgICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhwYywgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgMCk7CiB9CkBAIC0xNjE5
LDkgKzE2MjksMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CisKICAgICBpZiAoIWV4ZWMpCiAgICAgICAgIGV4ZWMgPSBwcm90b0Zy
YW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
MyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAtNzMsMTggKzczLDIwIEBAIHZv
aWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMs
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKK0pTVmFsdWUgY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZW5n
dGgsIEpTVmFsdWUgbmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghbGVuZ3RoLmlz
TnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChl
eGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3QsICZsZW5ndGgsIDEsIG5ld1RhcmdldCk7CiAgICAg
CiAgICAgdWludDMyX3QgbiA9IGxlbmd0aC50b1VJbnQzMihleGVjKTsKICAgICBpZiAobiAhPSBs
ZW5ndGgudG9OdW1iZXIoZXhlYykpCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBz
aXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIikpKTsKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBwcm9m
aWxlLCBnbG9iYWxPYmplY3QsIG4sIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNP
YmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIlByb3h5T2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNjAsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBwcm90b3R5cGUgPSBKU1Zh
bHVlKCkpOworSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwg
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgs
IEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKik7CiAKQEAgLTY4LDYgKzY5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUNvbnN0cgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNh
cnJheQogaW5saW5lIGJvb2wgaXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJndW1l
bnRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXJndW1lbnRWYWx1ZS5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgxLDcgKzg1LDcgQEAgaW5saW5lIGJv
b2wgaXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVgogCiAgICAgICAgIFByb3h5T2JqZWN0KiBw
cm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGFyZ3VtZW50KTsKICAgICAgICAgaWYgKHByb3h5
LT5pc1Jldm9rZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94eSB0aGF0IGhh
cyBiZWVuIHJldm9rZWQiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94
eSB0aGF0IGhhcyBiZWVuIHJldm9rZWQiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgYXJndW1lbnQgPSBwcm94eS0+dGFyZ2V0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsOSBAQCBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluCiB0ZW1wbGF0ZTxKU0FycmF5OjpTaGlmdENvdW50
TW9kZSBzaGlmdENvdW50TW9kZT4KIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iaiwgdW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2ln
bmVkIHJlc3VsdENvdW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
RUxFQVNFX0FTU0VSVChjdXJyZW50Q291bnQgPiByZXN1bHRDb3VudCk7CiAgICAgdW5zaWduZWQg
Y291bnQgPSBjdXJyZW50Q291bnQgLSByZXN1bHRDb3VudDsKIApAQCAtMjg2LDE0ICsyODksMTQg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogICAgICAgICAgICAg
dGhpc09iai0+cHV0QnlJbmRleElubGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0
eS4iKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgewotICAg
ICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgayAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDIsNiArMzA1LDkg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogdGVtcGxhdGU8SlNB
cnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lkIHVuc2hpZnQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgdW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBj
dXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENvdW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHRDb3VudCA+IGN1cnJlbnRDb3Vu
dCk7CiAgICAgdW5zaWduZWQgY291bnQgPSByZXN1bHRDb3VudCAtIGN1cnJlbnRDb3VudDsKIApA
QCAtMzEwLDcgKzMxNiw3IEBAIHZvaWQgdW5zaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAKIAogICAgIC8vIEd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuCiAgICAgaWYgKGNvdW50ID4gKFVJ
TlRfTUFYIC0gbGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTMyNyw4ICszMzMsOCBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+cHV0QnlJbmRl
eElubGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlz
T2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBA
IC0zNjEsNyArMzY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RgogICAgICAgICBjdXN0b21Kb2luQ2FzZSA9IHRydWU7CiAKICAgICBpZiAoVU5MSUtFTFkoY3Vz
dG9tSm9pbkNhc2UpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7
CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUg
YW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgogICAgIGlmICghaXNKU0FycmF5KHRoaXNPYmpl
Y3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCkBAIC02NzQsNiArNjgwLDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQpAQCAtNjk0LDgg
KzcwMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAg
ICAgcmVzdWx0ID0gdGhpc09iai0+Z2V0KGV4ZWMsIGxlbmd0aCAtIDEpOwogICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkp
IHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQogICAgICAgICBwdXRMZW5ndGgo
ZXhlYywgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwpAQCAtNzQwLDExICs3NDksMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
IAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2V0TGVu
Z3RoKGV4ZWMsIHRoaXNPYmplY3QpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTgxMiw3ICs4MjMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqZWN0LCBleGVjLCBsb3dlcikpIHsKICAgICAgICAgICAgIGlmICghdm0uZXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
KTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAg
ICAgfQogCkBAIC04MjIsNyArODMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgdXBwZXIpKSB7CiAgICAgICAg
ICAgICBpZiAoIXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC05MDIsNiArOTEzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIC8vIDE1LjQuNC4x
MgogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIXRo
aXNPYmopCkBAIC05NjYsNyArOTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
VW5kZWNpZGVkKSwgZGVsZXRlQ291bnQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgayA9IDA7IGsgPCBkZWxldGVDb3VudDsgKytrKSB7CiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayArIGJlZ2luKTsKQEAg
LTExMjMsNiArMTEzNSw4IEBAIHN0YXRpYyBib29sIG1vdmVFbGVtZW50cyhFeGVjU3RhdGUqIGV4
ZWMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbmNhdEFwcGVuZE9uZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgSlNBcnJheSogZmlyc3QsIEpTVmFsdWUgc2Vjb25kKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghaXNKU0FycmF5
KHNlY29uZCkpOwogICAgIEFTU0VSVCghc2hvdWxkVXNlU2xvd1B1dChmaXJzdC0+aW5kZXhpbmdU
eXBlKCkpKTsKICAgICBCdXR0ZXJmbHkqIGZpcnN0QnV0dGVyZmx5ID0gZmlyc3QtPmJ1dHRlcmZs
eSgpOwpAQCAtMTEzNSw3ICsxMTQ5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbmNhdEFw
cGVuZE9uZShFeAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24odHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlKHZtLCBy
ZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgMSk7CiAgICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICghcmVzdWx0LT5hcHBlbmRNZW1jcHkoZXhlYywgdm0s
IDAsIGZpcnN0KSkgewogICAgICAgICBpZiAoIW1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0
LCAwLCBmaXJzdCwgZmlyc3RBcnJheVNpemUpKSB7CkBAIC0xMTU0LDYgKzExNjgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9QCiB7CiAgICAgQVNTRVJUKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTQXJyYXkqIGZpcnN0
QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKIApA
QCAtMTE5Nyw3ICsxMjEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvUAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
dHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5U2l6ZSArIHNlY29uZEFycmF5U2l6
ZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICh0eXBlID09
IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICBkb3VibGUqIGJ1ZmZlciA9IHJlc3VsdC0+YnV0
dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjgsNiArNjgsNyBAQCB2b2lk
IEJvb2xlYW5Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh2bS0+c21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCkpOwpAQCAtNzYsNyAr
NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy50cnVlU3RyaW5nKCkpOwog
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoQm9vbGVhbk9iamVjdDo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIGlmIChhc0Jvb2xlYW5PYmplY3QodGhp
c1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKQEAg
LTg3LDEyICs4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2Yo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoQm9vbGVh
bk9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFs
VmFsdWUoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEVORF9JTVBMKCkgUkVUVVJOX1RX
TyhwYywgZXhlYykKIAogI2RlZmluZSBUSFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNl
cHRpb25Ub1Rocm93KTsgICAgICAgICAgXAorICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7ICAgICAgICAgICAgICAgXAorICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgXAogICAgICAgICBSRVRVUk5fVE9f
VEhST1coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0g
d2hpbGUgKGZhbHNlKQpAQCAtMTQwLDEzICsxNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2Rl
ZmluZSBDQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIFJFVFVSTl9UV08oKGNhbGxUYXJn
ZXQpLCAoZXhlYykpCiAKLSNkZWZpbmUgQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRXhlY1N0YXRlKiBjdEV4
ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN0UEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ0FMTF9FTkRfSU1QTChjdEV4
ZWMsIExMSW50OjpjYWxsVG9UaHJvdyhjdEV4ZWMpKTsgICAgICAgICAgICAgIFwKLSAgICB9IHdo
aWxlIChmYWxzZSkKLQogI2RlZmluZSBDQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUqIGNjZUV4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBJbnN0
cnVjdGlvbiogY2NlUEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3MywxMCBAQCBBTFdB
WVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0CiAKIGlubGluZSBib29sIG9wSW4o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKCFiYXNlVmFsLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihl
eGVjLCBiYXNlVmFsKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTg1LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgb3BJbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJvcGVydHko
ZXhlYywgaSk7CiAKICAgICBhdXRvIHByb3BlcnR5ID0gcHJvcE5hbWUudG9Qcm9wZXJ0eUtleShl
eGVjKTsKLSAgICBpZiAoZXhlYy0+dm0oKS5leGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJv
cGVydHkoZXhlYywgcHJvcGVydHkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRoc0V4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw5IEBAIHZvaWQg
aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSoKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAg
ICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
ZXJyb3IpOwogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dp
bmcgZXhjZXB0aW9uICIsIHZtLT5leGNlcHRpb24oKSwgIi5cbiIpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAkocmV2
aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDEwICszNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29uc3RydWN0
b3JPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9y
T2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOwogCiAgICAgcmV0dXJuIGNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVj
dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3Qp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTMyMCw5ICszMjAsMTAgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0
TG9jYWxlRGF0ZShFeGVjU3RhdAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VU
Q1ZhcmlhbnQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKIApAQCAtNTIyLDEzICs1MjMsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4
ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCkBAIC01NjgsOSArNTcwLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxl
RGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExv
Y2FsZURhdGVBbmRUaW1lKSk7CkBAIC01NzgsOSArNTgxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFs
dWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywg
dGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlKSk7
CkBAIC01ODgsOSArNTkyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2Nh
bGVUaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNE
YXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CkBAIC01OTgsMTMgKzYwMywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVj
LT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIHx0
aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3Rl
ZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRD
b3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90
b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAog
ICAgIEpTVmFsdWUgaGludFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4
ZWMsIGhpbnRWYWx1ZSk7CkBAIC02MTksMTggKzYyNSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFRpbWUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3Rh
bmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVl
KCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRG
dWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY0Miw5ICs2NTAs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY1Niw5ICs2NjUsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAKQEAgLTY3MCw5ICs2ODAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2Uq
IHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY4NCw5ICs2
OTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjk4LDkgKzcxMCwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7
IAogCkBAIC03MTIsOSArNzI1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
RGF5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzI2LDkgKzc0MCwxMCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFu
Y2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc0MCw5ICs3NTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTc1NCw5ICs3NzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENIb3Vy
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc2OCw5ICs3ODUsMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5j
ZSh0aGlzVmFsdWUpOyAKIApAQCAtNzgyLDkgKzgwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC03OTYsOSArODE1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vj
b25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTgxMCw5ICs4MzAsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODI0LDkgKzg0NSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7
CkBAIC04NDAsOSArODYyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
TWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBkb3VibGUg
bWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTg1Niw5ICs4NzksMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg3MCw5ICs4OTQsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUp
OyAKIApAQCAtODg0LDkgKzkwOSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21UaW1lQXJn
cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsIFdURjo6VGltZVR5cGUgaW5wdXRU
aW1lVHlwZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5p
bnRlcm5hbE51bWJlcigpOwpAQCAtOTIzLDkgKzk0OSwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgc2V0TmV3VmFsdWVGcm9tVGltCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1
ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsIFdURjo6VGlt
ZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKSB7CkBAIC0xMDM1LDkgKzEwNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5j
ZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7CkBAIC0xMDc4LDkgKzExMDYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0
YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAt
MTA5NCw2ICsxMTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4
ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMo
ZXhlYywgTm90U3RyaWN0TW9kZSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTExMTIsMTMgKzExNDIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodG9JU09WYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcg
aXMgbm90IGEgZnVuY3Rpb24iKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywg
YXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBleGVjLT5l
bXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9J
U09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoInRvSVNPU3Ry
aW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMzQgKzE5OCwzNCBAQCBi
b29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAgICAgIHx8IGVycm9y
LT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHNvdXJjZVVS
TFByb3BlcnR5TmFtZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJl
Q2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNv
bnN0cnVjdG9yTmFtZSkKK0pTT2JqZWN0KiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiY2FsbGluZyAiLCBjb25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0
b3Igd2l0aG91dCBuZXcgaXMgaW52YWxpZCIpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JOYW1lLCAiIGNv
bnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJv
d1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOworICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMpKTsKIH0K
IAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFs
IGVycm9yTWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKQogewotICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7CisgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7CiB9
CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3Nh
Z2UpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBtZXNzYWdlKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXgg
ZXJyb3IiKSkpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCi1K
U09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNz
YWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUg
PHN0ZGludC5oPgogCiAKQEAgLTcxLDIxICs3MiwyMSBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqCiAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KIAogLy8gQ29u
dmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRl
ZmF1bHQgbWVzc2FnZS4KLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqIGNvbnN0cnVjdG9yTmFtZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7Ci1KU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci1pbmxp
bmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3Rh
dGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CitKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogY29uc3RydWN0
b3JOYW1lKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVj
U3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3Nh
Z2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0
ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3Bl
Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3Rh
dGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworaW5saW5lIEpT
T2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2Nv
cGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihz
dGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiAK
IC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1
ZS4KLWlubGluZSB2b2lkIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSB7IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsg
fQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGVycm9yKSk7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KLWlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBlcnJvck1lc3NhZ2UpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93
Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1l
c3NhZ2UpKTsgfQoraW5saW5lIHZvaWQgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBleGNlcHRpb24pOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEpTVmFsdWUgZXJyb3IpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3Ip
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBUaHJvd1Njb3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZN
VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhy
b3dWTVJhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5n
ZUVycm9yKHN0YXRlLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KIAogY2xhc3MgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJpdmF0ZToK
QEAgLTEwOSw3ICsxMTAsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHN0YXRpY19j
YXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgfQog
CkBAIC0xMjEsNyArMTI0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgc3RhdGljX2Nhc3Q8
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2Up
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDE1IEBAIHZvaWQg
RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiAKIC8vIEVDTUEtMjYyIDUuMSwgMTUu
MTEuNC40CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMS4gTGV0IE8gYmUg
dGhlIHRoaXMgdmFsdWUuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBhc09iamVjdCh0aGlz
VmFsdWUpOwogCiAgICAgLy8gR3VhcmQgYWdhaW5zdCByZWN1cnNpb24hCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDE3ICszOCwxOCBAQCB1bnNpZ25lZCBudW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MoKSB7CiAvLyBDYWxsIHRoaXMgb25seSBpZiB5b3Uga25vdyB0aGF0IGV4
Y2VwdGlvbiBmdXp6aW5nIGlzIGVuYWJsZWQuCiB2b2lkIGRvRXhjZXB0aW9uRnV6emluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHdoZXJlLCB2b2lkKiByZXR1cm5QQykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBBU1NFUlQoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKTsKIAotICAgIERl
ZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhleGVjLT52bSgpLmhlYXApOworICAgIERlZmVyR0NGb3JB
V2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICBzX251bWJlck9mRXhjZXB0aW9uRnV6
ekNoZWNrcysrOwogICAgIAogICAgIHVuc2lnbmVkIGZpcmVUYXJnZXQgPSBPcHRpb25zOjpmaXJl
RXhjZXB0aW9uRnV6ekF0KCk7CiAgICAgaWYgKGZpcmVUYXJnZXQgPT0gc19udW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MpIHsKICAgICAgICAgcHJpbnRmKCJKU0MgRVhDRVBUSU9OIEZVWlo6IFRo
cm93aW5nIGZ1enogZXhjZXB0aW9uIHdpdGggY2FsbCBmcmFtZSAlcCwgc2VlbiBpbiAlcyBhbmQg
cmV0dXJuIGFkZHJlc3MgJXAuXG4iLCBleGVjLCB3aGVyZSwgcmV0dXJuUEMpOwotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKAotICAgICAgICAgICAgZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4Y2Vw
dGlvbiBGdXp6IikpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yODksMjMgKzI4OSwyMyBAQCBKU09iamVjdCogY3JlYXRl
VERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKLUpT
T2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3Qq
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
KQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU91
dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3Bl
KHZtKTsKLSAgICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRo
cm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2Nv
cGUmIHNjb3BlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGlu
Z1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbigmdm0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkVycm9ySW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUyLDkgKzUzLDkgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFG
dW5jdGlvbkVycm9yKEV4ZWNTdAogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBKU1N0cmluZyogZXJyb3JE
ZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSop
OwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAKIGNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhl
Y3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgSlNPYmplY3QqJiBleGNlcHRpb24p
CiB7CiAgICAgVk0qIHZtID0gc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgQVNTRVJUKHZtLT5oZWFwLmlzRGVmZXJyZWQo
KSk7CiAgICAgQVNTRVJUKHN0YXJ0Q29sdW1uKCkgIT0gVUlOVF9NQVgpOwpAQCAtMzE5LDggKzMy
MCw4IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICAgICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCks
IGZpcnN0TGluZSgpLCAKICAgICAgICAgbGFzdExpbmUoKSwgc3RhcnRDb2x1bW4oKSwgZW5kQ29s
dW1uKCkpOyAKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7Ci0gICAgICAgIGV4Y2VwdGlv
biA9IHZtLT50aHJvd0V4Y2VwdGlvbigKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLAorICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigKKyAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCB0aHJvd1Njb3BlLAogICAgICAgICAgICAgZXJy
b3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPm1fc291cmNlKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTQyOSwyMCArNDMwLDIzIEBAIGNvbnN0
IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0KIAogRXZhbEV4ZWN1dGFibGUqIEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5k
ZXJURFopCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5l
dmFsRW5hYmxlZCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNz
YWdlKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUV2YWxF
cnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFw
KCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
Ci0gICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgZXhlY3V0
YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1
bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMs
IGV4ZWN1dGFibGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoIXVubGlua2VkRXZhbENv
ZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxD
b2RlQmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwor
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJs
ZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTc2LDggKzc2LDExIEBAIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXQKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBD
b25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9i
amVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0
LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1
bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApAQCAtODYsNiArODksOSBAQCBKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCiAgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
IGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1w
b3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwpAQCAt
MTE2LDE0ICsxMjIsMTQgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RQogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6
OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgKmV4ZWMsIHNvdXJjZSwgZXhjZXB0aW9uLCBv
dmVycmlkZUxpbmVOdW1iZXIpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJU
KGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFy
Z2V0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0
cnVjdHVyZSk7CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4
IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhp
c1ZhbHVlKTsKQEAgLTExMiwxOSArMTE0LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Qcm8KICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgICAgIGlmIChvYmplY3QtPmlubGluZVR5cGVGbGFncygpICYgVHlwZU9mU2hv
dWxkQ2FsbEdldENhbGxEYXRhKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0
YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAh
PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjbGFzc0luZm8g
PSBvYmplY3QtPmNsYXNzSW5mbygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGNsYXNz
SW5mby0+Y2xhc3NOYW1lLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiB9CiAKIC8v
IDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kICh0aGlzQXJnIFssIGFyZzEgWywgYXJn
MiwgLi4uXV0pCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
QmluZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIC8v
IExldCBUYXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCkBAIC0xMzQsMTEgKzEzOCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXQsIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgLy8gUHJpbWl0aXZlIHZhbHVlcyBhcmUgbm90IGNhbGxhYmxlLgog
ICAgIEFTU0VSVCh0YXJnZXQuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldE9iamVj
dCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIC8v
IExldCBBIGJlIGEgbmV3IChwb3NzaWJseSBlbXB0eSkgaW50ZXJuYWwgbGlzdCBvZiBhbGwgb2Yg
dGhlIGFyZ3VtZW50IHZhbHVlcyBwcm92aWRlZCBhZnRlciB0aGlzQXJnIChhcmcxLCBhcmcyIGV0
YyksIGluIG9yZGVyLgogICAgIHNpemVfdCBudW1Cb3VuZEFyZ3MgPSBleGVjLT5hcmd1bWVudENv
dW50KCkgPiAxID8gZXhlYy0+YXJndW1lbnRDb3VudCgpIC0gMSA6IDA7CkBAIC0xNDYsNyArMTQ5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgIGlmIChu
dW1Cb3VuZEFyZ3MpIHsKICAgICAgICAgYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIG51bUJvdW5kQXJncyk7CiAg
ICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAgICAg
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQm91bmRBcmdzOyArK2kpCiAgICAg
ICAgICAgICBib3VuZEFyZ3MtPmluaXRpYWxpemVJbmRleCh2bSwgaSwgZXhlYy0+YXJndW1lbnQo
aSArIDEpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA5LCAy
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC04NywxMSArODcsMTQgQEAgSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogCiBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0g
anNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0
dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0
TW9kZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTAxLDcgKzEwNCw3IEBAIGJvb2wgY2FsbFNldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHNl
dHRlciwgY2FsbERhdGEpOwogICAgIGNhbGwoZXhlYywgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGJhc2UsIGFyZ3MpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjcsMTEgKzM2NywxNCBAQCB2b2lkIEludGxDb2xsYXRvcjo6Y3JlYXRl
Q29sbGF0b3IoRXhlY1N0CiAKIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhF
eGVjU3RhdGUmIHN0YXRlLCBTdHJpbmdWaWV3IHgsIFN0cmluZ1ZpZXcgeSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIDEwLjMuNCBDb21wYXJlU3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVD
TUEtNDAyIDIuMCkKICAgICBpZiAoIW1fY29sbGF0b3IpIHsKICAgICAgICAgY3JlYXRlQ29sbGF0
b3Ioc3RhdGUpOwogICAgICAgICBpZiAoIW1fY29sbGF0b3IpCi0gICAgICAgICAgICByZXR1cm4g
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKICAgICB9CiAKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTM3OSw3ICszODIsNyBAQCBK
U1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhlCiAgICAgVUNoYXJJdGVyYXRv
ciBpdGVyYXRvclkgPSBjcmVhdGVJdGVyYXRvcih5KTsKICAgICBhdXRvIHJlc3VsdCA9IHVjb2xf
c3RyY29sbEl0ZXIobV9jb2xsYXRvci5nZXQoKSwgJml0ZXJhdG9yWCwgJml0ZXJhdG9yWSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUu
dm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJh
bCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAgIHJldHVybiBqc051bWJlcihy
ZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiwxNiArMTA2LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVD
TUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmpl
Y3QuCiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxh
dG9yKj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIikpKTsKIAogICAgIEpT
Qm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgpOwog
ICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLAogICAg
IGlmICghYm91bmRDb21wYXJlKSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVj
dCgpOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmpl
Y3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZ
cyBsZW5ndGggcHJvcGVydHkgaXMgMi4KQEAgLTEzNCwxMCArMTM2LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuQ29sbGF0b3IucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw2ICs0
MjAsOSBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Rm9ybWF0c0Zyb21QCiAKIHZvaWQg
SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBl
eGVjLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxPcHRpb25zKQogeworICAgIFZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyAxMi4xLjEgSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0IChkYXRlVGltZUZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBkYXRl
VGltZUZvcm1hdC5bW2luaXRpYWxpemVkSW50bE9iamVjdF1dIGlzIHRydWUsIHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KICAgICAvLyAyLiBTZXQgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFs
aXplZEludGxPYmplY3RdXSB0byB0cnVlLgpAQCAtNDQwLDcgKzQ0Myw2IEBAIHZvaWQgSW50bERh
dGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBsb2NhbGVPcHQ7CiAKICAgICAvLyA4LiBMZXQgbWF0Y2hlciBiZSBHZXRPcHRpb24ob3B0aW9u
cywgImxvY2FsZU1hdGNoZXIiLCAic3RyaW5nIiwgwqsibG9va3VwIiwgImJlc3QgZml0IsK7LCAi
YmVzdCBmaXQiKS4KLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgU3RyaW5nIGxvY2FsZU1h
dGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGV4ZWMsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIg
bXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsK
ICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4KICAgICBpZiAoZXhlYy5oYWRFeGNl
cHRpb24oKSkKQEAgLTQ4Nyw3ICs0ODksNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5p
dGlhbGl6ZURhdGVUCiAgICAgICAgIC8vIGQuIExldCB0eiBiZSBDYW5vbmljYWxpemVUaW1lWm9u
ZU5hbWUodHopLgogICAgICAgICB0eiA9IGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShvcmlnaW5h
bFR6KTsKICAgICAgICAgaWYgKHR6LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoJmV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRpbWUgem9uZTogJXMiLCBvcmln
aW5hbFR6LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcigmZXhl
Yywgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRpbWUgem9uZTogJXMiLCBvcmlnaW5h
bFR6LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CkBAIC02NDcsNyArNjQ5LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdlbmVyYXRvciA9IHVkYXRwZ19vcGVuKGRhdGFM
b2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2Myw3ICs2NjUsNyBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgfQogICAgIHVkYXRw
Z19jbG9zZShnZW5lcmF0b3IpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6
ZSBEYXRlVGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzQsNyArNjc2LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVWaWV3
KG1fdGltZVpvbmUpOwogICAgIG1fZGF0ZUZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUZv
cm1hdCwgVURhdGVGb3JtYXREZWxldGVyPih1ZGF0X29wZW4oVURBVF9QQVRURVJOLCBVREFUX1BB
VFRFUk4sIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIHRpbWVab25lVmlldy51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBwYXR0ZXJuLmxlbmd0aCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwo
ImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUg
RGF0ZVRpbWVGb3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4Myw2ICs4
ODUsOSBAQCBKU09iamVjdCogSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wCiAKIEpTVmFs
dWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFj
dCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKICAgICBpZiAoIW1faW5pdGlhbGl6ZWREYXRlVGlt
ZUZvcm1hdCkgewogICAgICAgICBpbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZXhlYywganNVbmRl
ZmluZWQoKSwganNVbmRlZmluZWQoKSk7CkBAIC04OTEsNyArODk2LDcgQEAgSlNWYWx1ZSBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChFeGVjUwogCiAgICAgLy8gMS4gSWYgeCBpcyBub3QgYSBm
aW5pdGUgTnVtYmVyLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcigm
ZXhlYywgQVNDSUlMaXRlcmFsKCJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVG
b3JtYXQgZm9ybWF0KCkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGlt
ZUZvcm1hdCBmb3JtYXQoKSIpKTsKIAogICAgIC8vIERlbGVnYXRlIHJlbWFpbmluZyBzdGVwcyB0
byBJQ1UuCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC05MDMsNyAr
OTA4LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChFeGVjUwogICAgICAg
ICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCBy
ZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgIH0KICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRl
cmFsKCJmYWlsZWQgdG8gZm9ybWF0IGRhdGUgdmFsdWUiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBk
YXRlIHZhbHVlIikpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLCBTdHJpbmcocmVzdWx0
LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNy
YWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDYg
KzExMSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0
ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMi4z
LjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KICAgICBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTExNywyMyArMTIxLDIyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW0KICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBw
cm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJu
cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5
CiAgICAgaWYgKCFkdGYpCi0gICAgICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkp
KTsKKyAgICAgICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0
ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgLy8gMi4gUmV0dXJu
SWZBYnJ1cHQoZHRmKS4KICAgICBpZiAoIWR0ZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwogCiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKICAg
ICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRl
VGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsK
LSAgICAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBkdGYtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAvLyBhLiBMZXQgRiBi
ZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMi4zLjQuCiAg
ICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5v
dGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCiAgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5j
Rm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdz
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNp
ZGVkKSwgMCk7CiAgICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29w
ZSkpOwogCiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKr
dGhpcyB2YWx1ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJn
cywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0xNDgsMTYgKzE1MSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEyLjMuNSBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4w
KQogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBGSVhN
RTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAg
Y2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAgZGF0
ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGRhdGVU
aW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFkYXRlVGltZUZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGF0ZVRpbWVGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxNiBTdWtvbHNhayBTYWtzaHV3
b25nIChzdWtvbHNha0BnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTksNiArMTYwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
RgogewogICAgIC8vIDExLjEuMSBJbml0aWFsaXplTnVtYmVyRm9ybWF0IChudW1iZXJGb3JtYXQs
IGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
LiBJZiBudW1iZXJGb3JtYXQgaGFzIGFuIFtbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gaW50ZXJu
YWwgc2xvdCB3aXRoIHZhbHVlIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICAvLyAyLiBTZXQgbnVtYmVyRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1
ZS4KQEAgLTE4Niw3ICsxODgsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVO
dW1iZXJGCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OwogCiAgICAgLy8gOC4gTGV0
IG1hdGNoZXIgYmUgR2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIs
IMKrImxvb2t1cCIsICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgU3RyaW5nIG1hdGNo
ZXIgPSBpbnRsU3RyaW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCBzdGF0ZS52bSgpLnByb3BlcnR5
TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1h
dGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBm
aXQiKTsKKyAgICBTdHJpbmcgbWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oc3RhdGUsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZp
dCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3Qg
Zml0XCIiLCAiYmVzdCBmaXQiKTsKICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4K
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMCw3
ICsyMzIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAg
aWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewogICAgICAgICAvLyBhLiBJZiB0aGUgcmVzdWx0IG9m
IElzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjKSwgaXMgZmFsc2UsIHRoZW4gdGhyb3cgYSBSYW5n
ZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwg
IWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7Ci0gICAg
ICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJv
cigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3Vy
cmVuY3kgY29kZSIpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBpcyBub3Qg
YSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIzOSw3ICsyNDEsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7
CiAgICAgICAgIC8vIDIyLiBJZiBzIGlzICJjdXJyZW5jeSIgYW5kIGMgaXMgdW5kZWZpbmVkLCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmIChjdXJyZW5jeS5pc051bGwo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1
cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDIzLDExICs0MjUsMTQgQEAg
dm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVOdW1iZXJGb3JtYQogCiBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgbnVtYmVy
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTEuMy40IEZvcm1hdE51bWJlciBhYnN0cmFjdCBv
cGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKICAgICBpZiAoIW1fbnVtYmVyRm9ybWF0KSB7CiAgICAg
ICAgIGNyZWF0ZU51bWJlckZvcm1hdChzdGF0ZSk7CiAgICAgICAgIGlmICghbV9udW1iZXJGb3Jt
YXQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBu
dW1iZXIuIikpKTsKICAgICB9CiAKICAgICAvLyBNYXAgbmVnYXRpdmUgemVybyB0byBwb3NpdGl2
ZSB6ZXJvLgpAQCAtNDQzLDcgKzQ0OCw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9y
bWF0TnVtYmVyKEUKICAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIG51bWJlciwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAg
ICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZz
dGF0ZSwgU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsNiArMTAwLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVH
ZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAx
MS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQog
ICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCiAgICAgSW50bE51
bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkpOwpAQCAtMTA3LDIyICsxMTAsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRgogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUg
Y29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBp
ZiAoIW5mKQotICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0
YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAg
IG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
LmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1
dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAogICAgIGlmICghbmYpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAg
ICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgp
OwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYg
KCFib3VuZEZvcm1hdCkgewotICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJ
bnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0
ZSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3Ioc3RhdGUsIHNjb3BlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVu
Y3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgogICAgICAgICBib3VuZEZvcm1hdCA9IEpT
Qm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmpl
Y3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOwpAQCAtMTM3LDE2
ICsxMzksMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAo
RUNNQS00MDIgMi4wKQogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAg
IG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIG51bWJl
ckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFs
dWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJz
dGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW51bWJlckZvcm1hdCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZv
cm1hdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1
MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOSBAQCBib29sIGludGxCb29sZWFuT3B0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsCiAKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0
IGNoYXIqIGZhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gOS4yLjkgR2V0T3B0aW9u
IChvcHRpb25zLCBwcm9wZXJ0eSwgdHlwZSwgdmFsdWVzLCBmYWxsYmFjaykKICAgICAvLyBGb3Ig
dHlwZT0ic3RyaW5nIi4KIApAQCAtMTk1LDcgKzE5OCw3IEBAIFN0cmluZyBpbnRsU3RyaW5nT3B0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKICAgICAgICAgLy8gZC4gSWYgdmFsdWVzIGlzIG5vdCB1bmRl
ZmluZWQsIHRoZW4KICAgICAgICAgLy8gaS4gSWYgdmFsdWVzIGRvZXMgbm90IGNvbnRhaW4gYW4g
ZWxlbWVudCBlcXVhbCB0byB2YWx1ZSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICAgICAgaWYgKHZhbHVlcy5zaXplKCkgJiYgc3RkOjpmaW5kKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCksIHN0cmluZ1ZhbHVlKSA9PSB2YWx1ZXMuZW5kKCkpIHsKLSAgICAgICAgICAgIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwg
bm90Rm91bmQpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBub3RGb3VuZCkpOwogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQogCkBAIC0yMDksNiArMjEyLDkgQEAgU3RyaW5nIGludGxTdHJpbmdPcHRp
b24oRXhlY1N0YXRlJiBzdGF0ZQogCiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCB1bnNpZ25l
ZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDkuMi45IEdldE51bWJlck9wdGlvbiAob3B0aW9ucywgcHJvcGVydHks
IG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExl
dCBvcHRzIGJlIFRvT2JqZWN0KG9wdGlvbnMpLgogICAgIEpTT2JqZWN0KiBvcHRzID0gb3B0aW9u
cy50b09iamVjdCgmc3RhdGUpOwpAQCAtMjMzLDcgKzIzOSw3IEBAIHVuc2lnbmVkIGludGxOdW1i
ZXJPcHRpb24oRXhlY1N0YXRlJiBzdGEKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAv
LyAxLiBJZiB2YWx1ZSBpcyBOYU4gb3IgbGVzcyB0aGFuIG1pbmltdW0gb3IgZ3JlYXRlciB0aGFu
IG1heGltdW0sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICghKGRv
dWJsZVZhbHVlID49IG1pbmltdW0gJiYgZG91YmxlVmFsdWUgPD0gbWF4aW11bSkpIHsKLSAgICAg
ICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KCZzdGF0ZSwgKnByb3BlcnR5LnB1YmxpY05hbWUoKSArICIgaXMgb3V0IG9mIHJhbmdlIikpOwor
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91dCBvZiByYW5nZSIpKTsK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTUyNCw2ICs1MzAsOCBAQCBW
ZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiB7CiAgICAgLy8gOS4yLjEg
Q2Fub25pY2FsaXplTG9jYWxlTGlzdCAobG9jYWxlcykKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgVmVjdG9yPFN0cmluZz4gc2VlbjsKIApAQCAtNTg3LDcgKzU5NSw3IEBAIFZlY3RvcjxT
dHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoRXgKIAogICAgICAgICAgICAgLy8gaWlpLiBJ
ZiBUeXBlKGtWYWx1ZSkgaXMgbm90IFN0cmluZyBvciBPYmplY3QsIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICAgICAgICAgIGlmICgha1ZhbHVlLmlzU3RyaW5nKCkgJiYgIWtWYWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoImxvY2FsZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoImxvY2FsZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICAgICAgICAgIH0KIApAQCAtNjAy
LDcgKzYxMCw3IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoRXgKICAg
ICAgICAgICAgIC8vIHZpaS4gTGV0IGNhbm9uaWNhbGl6ZWRUYWcgYmUgQ2Fub25pY2FsaXplTGFu
Z3VhZ2VUYWcodGFnKS4KICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVkVGFnID0gY2Fu
b25pY2FsaXplTGFuZ3VhZ2VUYWcodGFnLT52YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgICAgIGlm
IChjYW5vbmljYWxpemVkVGFnLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBTdHJpbmc6
OmZvcm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1ZSgmc3RhdGUpLnV0
ZjgoKS5kYXRhKCkpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIGxh
bmd1YWdlIHRhZzogJXMiLCB0YWctPnZhbHVlKCZzdGF0ZSkudXRmOCgpLmRhdGEoKSkpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICAgICAgICAgIH0KIApA
QCAtODcwLDYgKzg3OCw5IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUo
RXgKIAogc3RhdGljIEpTQXJyYXkqIGxvb2t1cFN1cHBvcnRlZExvY2FsZXMoRXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDku
Mi42IExvb2t1cFN1cHBvcnRlZExvY2FsZXMgKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMpCiAKICAgICAvLyAxLiBMZXQgckxvY2FsZXMgYmUgQ3JlYXRlQXJyYXlGcm9tTGlzdChy
ZXF1ZXN0ZWRMb2NhbGVzKS4KQEAgLTg3OSwxMSArODkwLDEwIEBAIHN0YXRpYyBKU0FycmF5KiBs
b29rdXBTdXBwb3J0ZWRMb2NhbGVzKEUKICAgICBzaXplX3QgbGVuID0gcmVxdWVzdGVkTG9jYWxl
cy5zaXplKCk7CiAKICAgICAvLyAzLiBMZXQgc3Vic2V0IGJlIGFuIGVtcHR5IExpc3QuCi0gICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIEpTQXJyYXkqIHN1YnNldCA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCks
IDApOwogICAgIGlmICghc3Vic2V0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
MDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3Is
IEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRvci5n
ZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgbmV4dEZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPm5leHQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBDYWxsRGF0YSBuZXh0RnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBuZXh0RnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKG5leHRGdW5j
dGlvbiwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChuZXh0RnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgbmV4dEZ1bmN0aW9uQXJndW1lbnRzOwogICAgIGlmICghdmFsdWUu
aXNFbXB0eSgpKQpAQCAtNTMsNyArNTcsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgaWYgKCFy
ZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODksMTggKzkzLDIxIEBAIEpTVmFsdWUgaXRlcmF0b3JT
dGVwKEV4ZWNTdGF0ZSogZXhlYywgSlMKIAogdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CiAgICAgfQotICAgIEpTVmFsdWUgcmV0dXJuRnVuY3Rpb24gPSBpdGVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKKyAg
ICBKU1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPnJldHVybktleXdvcmQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJldHVybkZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDgsOSAr
MTE1LDkgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgIENh
bGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZXR1cm5GdW5jdGlv
biwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKHJldHVybkZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE4LDcg
KzEyNSw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBK
U1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChleGVjLCByZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVu
Y3Rpb25DYWxsVHlwZSwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSwgaXRlcmF0b3IsIHJldHVybkZ1
bmN0aW9uQXJndW1lbnRzKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI2LDcgKzEzMyw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpbm5lclJlc3VsdC5pc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE0Nywx
NCArMTU0LDE4IEBAIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHIKIAog
SlNPYmplY3QqIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBkb25lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNPYmplY3QqIHJlc3VsdE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+aXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSk7
Ci0gICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZG9uZVByb3BlcnR5T2Zm
c2V0LCBqc0Jvb2xlYW4oZG9uZSkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIHZhbHVlUHJvcGVydHlPZmZzZXQsIHZhbHVlKTsKKyAgICByZXN1bHRPYmplY3QtPnB1
dERpcmVjdCh2bSwgZG9uZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkpOworICAgIHJl
c3VsdE9iamVjdC0+cHV0RGlyZWN0KHZtLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdE9iamVjdDsKIH0KIAogSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgaXRlcmFibGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IAogICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChzdGF0ZSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTE2Miw3ICsxNzMsNyBA
QCBKU1ZhbHVlIGl0ZXJhdG9yRm9ySXRlcmFibGUoRXhlY1N0YXRlKiBzCiAgICAgQ2FsbERhdGEg
aXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rpb25D
YWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25D
YWxsRGF0YSk7CiAgICAgaWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQog
CkBAIC0xNzIsNyArMTgzLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0
ZSogcwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCiAgICAgaWYgKCFpdGVyYXRvci5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3Ioc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDks
IDIwMTItMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAg
LTc1LDYgKzc1LDkgQEAgdm9pZCBKU0FycmF5OjpzZXRMZW5ndGhXcml0YWJsZShFeGVjU3RhdAog
Ly8gRGVmaW5lZCBpbiBFUzUuMSAxNS40LjUuMQogYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJv
d0V4Y2VwdGlvbikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIGFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihvYmplY3QpOwogCiAgICAgLy8gMy4gSWYgUCBpcyAibGVuZ3RoIiwgdGhlbgpA
QCAtMTA2LDcgKzEwOSw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QKICAgICAgICAgdW5zaWduZWQgbmV3TGVuID0gZGVzY3JpcHRvci52YWx1ZSgpLnRvVUludDMy
KGV4ZWMpOwogICAgICAgICAvLyBkLiBJZiBuZXdMZW4gaXMgbm90IGVxdWFsIHRvIFRvTnVtYmVy
KCBEZXNjLltbVmFsdWVdXSksIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAg
IGlmIChuZXdMZW4gIT0gZGVzY3JpcHRvci52YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSB7Ci0gICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAg
ICBKU0M6OnRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE5MSw2ICsxOTQsOSBAQCBib29sIEpTQXJyYXk6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjCiAvLyBFQ01BIDE1LjQuNS4xCiBib29sIEpTQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7
CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3Qp
KSkKQEAgLTE5OSw3ICsyMDUsNyBAQCBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZhbHVlLnRvVUludDMyKGV4ZWMp
OwogICAgICAgICBpZiAodmFsdWUudG9OdW1iZXIoZXhlYykgIT0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihuZXdMZW5ndGgpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhp
c09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CkBAIC0zOTMsNiArMzk5LDggQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAogCiBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2
bSwgdW5zaWduZWQgc3RhcnRJbmRleCwgSlNDOjpKU0FycmF5KiBvdGhlckFycmF5KQogeworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FuRmFz
dENvcHkodm0sIG90aGVyQXJyYXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQxOCw3
ICs0MjYsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBuZXdMZW5ndGgp
KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBBU1NFUlQoY29weVR5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwpAQCAtNDMzLDYgKzQ0
MSw5IEBAIGJvb2wgSlNBcnJheTo6YXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJv
b2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFycmF5Q2xhc3M6CkBAIC00NDEsOSArNDUyLDkgQEAgYm9vbCBKU0FycmF5Ojpz
ZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICBpZiAobmV3TGVuZ3RoID49IE1JTl9T
UEFSU0VfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIG5ld0xlbmd0aCwgdGhyb3dFeGNlcHRp
b24sCi0gICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAg
ICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgfQotICAgICAg
ICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAg
IGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKQEAgLTQ1NywxMSAr
NDY4LDExIEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAg
ICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5ndGgsIGNvdW50RWxl
bWVudHMoKSkpKSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFn
ZSgKICAgICAgICAgICAgICAgICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAg
ICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAg
ICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5l
d0xlbmd0aCA+IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmICgh
ZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgbmV3TGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NzAsNyArNDgxLDcgQEAgYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICB1bnNpZ25lZCBsZW5n
dGhUb0NsZWFyID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSAtIG5ld0xlbmd0aDsKICAgICAg
ICAgdW5zaWduZWQgY29zdFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkgPSA2NDsgLy8gYSBoZXVyaXN0
aWMuCiAgICAgICAgIGlmIChsZW5ndGhUb0NsZWFyID4gbmV3TGVuZ3RoICYmIGxlbmd0aFRvQ2xl
YXIgPiBjb3N0VG9BbGxvY2F0ZU5ld0J1dHRlcmZseSkgewotICAgICAgICAgICAgcmVhbGxvY2F0
ZUFuZFNocmlua0J1dHRlcmZseShleGVjLT52bSgpLCBuZXdMZW5ndGgpOworICAgICAgICAgICAg
cmVhbGxvY2F0ZUFuZFNocmlua0J1dHRlcmZseSh2bSwgbmV3TGVuZ3RoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTQ5Nyw2ICs1MDgsOSBAQCBib29sIEpTQXJy
YXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAKIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewpAQCAtNTQ4LDcgKzU2Miw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7CiAgICAgICAg
IGlmICghbGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoIWlzTGVuZ3RoV3JpdGFibGUoKSkKLSAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtNTgwLDcgKzU5NCw3IEBAIEpT
VmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUgW1tEZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qgb2Yg
TyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0cnVlLgogICAgIGlmICghZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAg
IC8vIENhbGwgdGhlIFtbUHV0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMg
Imxlbmd0aCIsIGluZHgsIGFuZCB0cnVlLgpAQCAtNTk0LDIzICs2MDgsMjYgQEAgSlNWYWx1ZSBK
U0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogLy8gIC0gcHVzaGluZyB0byBhbiBhcnJheSBv
ZiBsZW5ndGggMl4zMi0xIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBl
cnJvci4KIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwogICAgIAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFy
cmF5Q2xhc3M6IHsKLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCAw
KTsKKyAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZCh2bSwgMCk7CiAgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6IHsK
LSAgICAgICAgY29udmVydFVuZGVjaWRlZEZvclZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKKyAg
ICAgICAgY29udmVydFVuZGVjaWRlZEZvclZhbHVlKHZtLCB2YWx1ZSk7CiAgICAgICAgIHB1c2go
ZXhlYywgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IEFycmF5V2l0aEludDMyOiB7CiAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKSB7Ci0gICAg
ICAgICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZSh2bSwgdmFsdWUpOwogICAgICAgICAgICAgcHVzaChl
eGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTYyNCw5ICs2
NDEsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMs
IGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZh
bGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC02MzgsMTUgKzY1NSwxNSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3Ro
KCk7CiAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7
CiAgICAgICAgIGlmIChsZW5ndGggPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5ndGhdLnNldChleGVjLT52bSgpLCB0
aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5ndGhd
LnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNM
ZW5ndGgobGVuZ3RoICsgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwg
dmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRo
aXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5
IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0
aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC02NTYs
MTMgKzY3MywxMyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAg
ICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7CiAgICAgICAgIGlmICghdmFsdWUu
aXNOdW1iZXIoKSkgewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVj
LT52bSgpKTsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAg
ICAgICAgICAgcHVzaChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgZG91YmxlIHZhbHVlQXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOwogICAg
ICAgICBpZiAodmFsdWVBc0RvdWJsZSAhPSB2YWx1ZUFzRG91YmxlKSB7Ci0gICAgICAgICAgICBj
b252ZXJ0RG91YmxlVG9Db250aWd1b3VzKGV4ZWMtPnZtKCkpOworICAgICAgICAgICAgY29udmVy
dERvdWJsZVRvQ29udGlndW91cyh2bSk7CiAgICAgICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjc2LDkgKzY5Myw5IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
ZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVu
Z3RoIikpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcwMyw3ICs3
MjAsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAg
IC8vIEZhc3QgY2FzZSAtIHB1c2ggd2l0aGluIHZlY3RvciwgYWx3YXlzIHVwZGF0ZSBtX2xlbmd0
aCAmIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3Jh
Z2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoIDwgc3RvcmFnZS0+dmVjdG9yTGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0uc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0u
c2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVu
Z3RoICsgMSk7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC03MTEsMTAgKzcyOCwxMCBAQCB2b2lkIEpTQXJyYXk6OnB1
c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAKICAgICAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJh
eSBvZiBpbnZhbGlkIGxlbmd0aCAoMl4zMS0xKSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhy
b3dzIGEgcmFuZ2UgZXJyb3IuCiAgICAgICAgIGlmIChzdG9yYWdlLT5sZW5ndGgoKSA+IE1BWF9B
UlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKKyAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5s
ZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVTNS4xIDE1LjQuNC43
IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTYzLDYgKzk4MCw5IEBA
IGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1QKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgdW5zaGlmdCBjYW4gYmUgaGFuZGxlZCwgZmFsc2UgdG8gZmFsbGJhY2suICAgIAog
Ym9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3Rv
cmFnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxl
bmd0aCgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwpAQCAt
OTgxLDEzICsxMDAxLDEzIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3Rv
cmEKICAgICAgICAgc3RvcmFnZSA9IG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAg
ICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzIC09IGNvdW50OwogICAgICAgICBzdG9yYWdlLT5zZXRW
ZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoICsgY291bnQpOwotICAgICAgICBzZXRCdXR0ZXJmbHlX
aXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgbmV3QnV0dGVyZmx5KTsKKyAgICAg
ICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCBuZXdCdXR0ZXJmbHkp
OwogICAgIH0gZWxzZSBpZiAoIW1vdmVGcm9udCAmJiB2ZWN0b3JMZW5ndGggLSBsZW5ndGggPj0g
Y291bnQpCiAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9y
YWdlKCk7Ci0gICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2UoZXhlYy0+dm0oKSwgbW92
ZUZyb250LCBjb3VudCkpCisgICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2Uodm0sIG1v
dmVGcm9udCwgY291bnQpKQogICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0xMDA3LDYgKzEwMjcsOSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5n
VHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZs
eS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CkBAIC0xMDIyLDEw
ICsxMDQ1LDEwIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW4KICAg
ICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRvIHRoZSB1
bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYgaXQncyBu
b3QgaG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5kZXggPj0g
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3Jh
Z2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJh
eVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkp
OwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwgb2xkTGVu
Z3RoICsgY291bnQpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBvbGRMZW5ndGggKyBjb3VudCkpIHsKKyAg
ICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0gbV9idXR0ZXJm
bHkuZ2V0KCk7CkBAIC0xMDM1LDcgKzEwNTgsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0aDsgaS0t
ID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGJ1dHRlcmZseS0+Y29u
dGlndW91cygpW2ldLmdldCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFy
dEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydElu
ZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CkBAIC0x
MDU4LDEwICsxMDgxLDEwIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4
aW4KICAgICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRv
IHRoZSB1bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYg
aXQncyBub3QgaG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5k
ZXggPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0
Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJh
eVN0b3JhZ2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFn
ZSh2bSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwg
b2xkTGVuZ3RoICsgY291bnQpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBvbGRMZW5ndGggKyBjb3VudCkp
IHsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0gbV9i
dXR0ZXJmbHkuZ2V0KCk7CkBAIC0xMDcxLDcgKzEwOTQsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0
aDsgaS0tID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodiAhPSB2
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShl
eGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVj
LCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDkgQEAgU3RydWN0dXJlKiBKU0FycmF5QnVmZmVyQ29u
c3RydWN0b3I6OmNyZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0KICAgICAgICAganNDYXN0PEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICAKQEAgLTk2LDE5
ICs5OSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAg
CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgMSk7CiAg
ICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIFN0cnVjdHVyZSogYXJyYXlC
dWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5h
cnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVm
ZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0
ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92
ZShidWZmZXIpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJBcnJheUJ1ZmZl
ciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcnJh
eUJ1ZmZlciIpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDE0ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICAKICAgICBK
U0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBzbGljZSBt
dXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIHNsaWNlIG11c3QgYmUg
YW4gYXJyYXkgYnVmZmVyLiIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJT
bGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTbGljZSByZXF1aXJl
cyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOwogICAgIAogICAgIGludDMyX3QgYmVnaW4gPSBl
eGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTYwLDExICs2MywxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJhCiAgICAgCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIGlmICghbmV3QnVmZmVyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUt
Pmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpOwogICAgIAotICAgIEpTQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1
Y3R1cmUsIG5ld0J1ZmZlcik7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIG5ld0J1ZmZlcik7CiAgICAgCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0lubGluZXMuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogCiAjZW5kaWYgLy8gSlNDSW5s
aW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwgMjAxMiwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTQs
NiArOTQsOCBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByCiAKIEpT
T2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQo
IWlzQ2VsbCgpKTsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTEwMiw4
ICsxMDQsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjCiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgZ2xv
YmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkp
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOworICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNCw2ICsxMjUsOSBAQCBKU1ZhbHVlIEpTVmFsdWU6
OnRvVGhpc1Nsb3dDYXNlKEV4ZWNTdGF0CiAKIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXpl
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVy
biBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwpAQCAtMTM3
LDggKzE0MSw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAg
ICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhblByb3RvdHlw
ZSgpOwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihleGVjLCAqdGhpcykpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTE0Niw2ICsxNDksNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3Rv
dHlwZShFCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZl
QnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CkBAIC0xNjAsNyArMTY0LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsK
ICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzIsNyArMTc2LDcgQEAgYm9vbCBKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC0xOTYsMTIgKzIwMCwxNSBAQCBib29sIEpTVmFs
dWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgfQogICAgIAogICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9B
UlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hvdWxk
VGhyb3cpOwogICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CkBAIC0yMTcsNyArMjI0LDcg
QEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlYwogICAgICAgICByZXR1
cm4gcHV0UmVzdWx0OwogICAgIAogICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0zMzgsMTMgKzM0NSwx
NSBAQCBib29sIEpTVmFsdWU6OmlzVmFsaWRDYWxsZWUoKQogCiBKU1N0cmluZyogSlNWYWx1ZTo6
dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdP
bkVycm9yKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBlcnJvclZhbHVlID0gWyZd
ICgpIC0+IEpTU3RyaW5nKiB7CiAgICAgICAgIGlmIChyZXR1cm5FbXB0eVN0cmluZ09uRXJyb3Ip
CiAgICAgICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfTsKICAgICAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFT
U0VSVCghaXNTdHJpbmcoKSk7CiAgICAgaWYgKGlzSW50MzIoKSkgewogICAgICAgICBhdXRvIGlu
dGVnZXIgPSBhc0ludDMyKCk7CkBAIC0zNjMsNyArMzcyLDcgQEAgSlNTdHJpbmcqIEpTVmFsdWU6
OnRvU3RyaW5nU2xvd0Nhc2UoRXhlYwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogICAgIGlmIChpc1N5bWJv
bCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEg
c3RyaW5nIikpOwogICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOwogICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzMyw4ICs2MzMsMTEg
QEAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9QcmltaXRpdmUoRXhlYwogCiBpbmxpbmUgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc1N0
cmluZygpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJp
bWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5nLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJpbWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5n
LiIpKTsKICAgICAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKICAgICB9CiAKQEAgLTY0OSw3ICs2
NTIsNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJlCiAgICAgaWYg
KFdURjo6ZXF1YWwoaGludFN0cmluZywgInN0cmluZyIpKQogICAgICAgICByZXR1cm4gUHJlZmVy
U3RyaW5nOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0
cmluZycuIikpOworICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1i
ZXInLCAnc3RyaW5nJy4iKSk7CiAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKIH0KIApAQCAtMTAz
MSw5ICsxMDM0LDEyIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkK
IAogQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnJlcXVpcmVPYmplY3RDb2VyY2libGUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFpc1VuZGVmaW5l
ZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAq
dGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDcsMTYgKzQ3LDE4IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBwYXNzZWRCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gcGFzc2VkQnVmZmVyOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVvZih1aW50OF90KSkp
IHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CisgICAgICAgIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0
QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSkpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5
dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBj
b250ZXh0KAogICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgQ29uc3RydWN0aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VSVChjb250ZXh0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDEy
ICsxMjIsMTUgQEAgU3RydWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5
bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRh
VmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAgIAog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0
aGUgYnl0ZU9mZnNldCkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0aGUgYnl0
ZU9mZnNldCkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTE0Myw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nl
c3MiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSkpOwog
CiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CiAgICAgdW5pb24gewpAQCAtMTY3LDEyICsxNzAsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogRW5j
b2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhv
ZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBt
dXN0IGJlIGEgRGF0YVZpZXciKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSki
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQgdmFs
dWUpIikpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CkBAIC0xOTgsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
ICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAg
IHVpbnQ4X3QqIGRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YVZpZXctPnZlY3Rv
cigpKSArIGJ5dGVPZmZzZXQ7CiAKQEAgLTIyMCwyNyArMjI2LDM2IEBAIEVuY29kZWRKU1ZhbHVl
IHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8
IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlz
fCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2aWV3LT5qc0J1ZmZlcihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmll
dyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3Rz
IHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZl
ciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZm
ZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihleGVjLCBleGVjLT5jYWxsZWUoKSkpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNG
dW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTRnVuY3Rpb24pIH07CkBAIC0zMjEsNiArMzIzLDkgQEAgc3RhdGljIEpT
VmFsdWUgcmV0cmlldmVDYWxsZXJGdW5jdGlvbihFeAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0
aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIEpTVmFsdWUgY2FsbGVy
ID0gcmV0cmlldmVDYWxsZXJGdW5jdGlvbihleGVjLCB0aGlzT2JqKTsKQEAgLTMzNSw3ICszNDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoCiAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7CiAgICAgaWYgKGZ1
bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRh
YmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxlcik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxs
ZXIiKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3Ry
aWN0IGNhbGxlciIpKSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNDIzLDYgKzQyOCw5IEBAIHZvaWQgSlNGdW5j
dGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU4KIAogYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogCiAg
ICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBA
IC00MzcsMjUgKzQ0NSwyOCBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3Vj
aCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0
aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX3JhcmVEYXRhKQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xl
YXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAg
IC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBj
bGVhciBtX3JhcmVEYXRhLgogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNP
YmplY3QpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKICAg
ICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSAm
JiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7CiAgICAgICAgIC8v
IFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVkLCBpZiB0aGlzIGlz
IG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0aGlzT2JqZWN0LT5o
YXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9r
YXksIG9rYXkpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAg
fQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgewogICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzT2JqZWN0
LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTQ4MCw2ICs0OTEsOSBAQCBib29sIEpT
RnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
aWZ5Qm91bmROYW1lSWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTQ5MCw3ICs1MDQs
NyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgICAgIC8v
IE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBv
bmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91
dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRh
KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHBy
b3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybiBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
dGhyb3dFeGNlcHRpb24pOwpAQCAtNTIwLDI3ICs1MzQsMjcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAgICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1
cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBp
ZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQo
KSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3Ip
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVz
ZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgaWYgKCF2YWx1ZUNoZWNrKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld19oCiAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgorI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTE2OCwxMiArMTY5LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIHNldEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUgPSB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihleGVjLCBqc1ZhbHVlKTsK
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtODAsOCArODAsMTEgQEAgU3RydWN0dXJlKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdGcm9tSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUg
Zmlyc3QgYXJndW1lbnQgZGlkIG5vdCByZXR1cm4gYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC5JdGVy
YXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdC4iKSk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBzdG9yYWdlOwogICAgIHdoaWxlICh0cnVlKSB7
CkBAIC0xMTgsOCArMTIxLDEwIEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXIKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNp
Z25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCiB7Ci0gICAgSlNWYWx1
ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZpcnN0QXJndW1lbnQpOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZpcnN0QXJndW1l
bnQpOwogCiAgICAgaWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxK
U0FycmF5QnVmZmVyKj4oZmlyc3RWYWx1ZSkpIHsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwpAQCAtMTI5LDcgKzEzNCw3IEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAgICAgICAgIGxlbmd0aCA9IGxl
bmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICgoYnVmZmVy
LT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgVmlld0NsYXNzOjplbGVtZW50U2l6ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsICJBcnJheUJ1ZmZlciBsZW5n
dGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQg
c2l6ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2Nv
cGUsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVs
dGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSIpOwogICAgICAgICAgICAgbGVuZ3RoID0gKGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAvIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAKICAg
ICAgICAgfQpAQCAtMTM5LDcgKzE0NCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXIKICAgICBBU1NFUlQoIW9mZnNldCAmJiAhbGVuZ3RoT3B0KTsKICAgICAKICAg
ICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIEFycmF5
QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQuIikpOwogICAgIAogICAgIC8vIEZvciBldmVy
eXRoaW5nIGJ1dCBEYXRhVmlldywgd2UgYWxsb3cgY29uc3RydWN0aW9uIHdpdGggYW55IG9mOgog
ICAgIC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEgY29weSBvZiB0aGUgb2YgdGhh
dCBhcnJheS4KQEAgLTE3NCw3ICsxNzksNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFyCiAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
ICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9y
RnVuYywgY2FsbERhdGEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1
bWVudCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0
b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKIAogICAgICAg
ICAgICAgICAgICAgICBBcmdMaXN0IGFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBpdGVyYXRvciA9IGNhbGwoZXhlYywgaXRlcmF0b3JGdW5jLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG9iamVjdCwgYXJndW1lbnRzKTsKQEAgLTIwNiwxNSArMjExLDE1IEBAIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICBpZiAoZmlyc3RWYWx1ZS5pc0ludDMy
KCkpCiAgICAgICAgIGxlbmd0aCA9IGZpcnN0VmFsdWUuYXNJbnQzMigpOwogICAgIGVsc2UgaWYg
KCFmaXJzdFZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQiKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGxlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4oZmlyc3RWYWx1ZS5hc051bWJlcigpKTsKICAgICAgICAgaWYg
KGxlbmd0aCAhPSBmaXJzdFZhbHVlLmFzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1
bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCBhcmd1bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsK
ICAgICB9CiAKICAgICBpZiAobGVuZ3RoIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VF
cnJvcihleGVjLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdh
dGl2ZSIpOwogICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxl
bmd0aCk7CiB9CiAKQEAgLTIyNCw2ICsyMjksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEdlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlv
biA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CiAgICAgU3RydWN0dXJlKiBw
YXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1
Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CkBAIC0yMzQsNyArMjQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogCiAgICAgaWYgKCFh
cmdDb3VudCkgewogICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBv
bmUgYXJndW1lbnQuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpOwogICAgIH0KQEAgLTI2OCw3
ICsyNzYsOSBAQCBDb25zdHJ1Y3RUeXBlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3IoZXhlYywgVmlld0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSkpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgVmlld0NsYXNzOjppbmZv
KCktPmNsYXNzTmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIENvbnN0cnVjdGlvbkNvbnRleHQg
Y29udGV4dChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRl
eHQodm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVz
dWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXco
dm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTY0LDE3ICs2NiwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKAogICAgIEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoCi0gICAgICAgIGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCisgICAgICAg
IHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLAog
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0OjpEb250SW5pdGlhbGl6ZSk7CiAgICAgaWYgKCFj
b250ZXh0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAg
ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4oZXhl
Yy0+dm0oKS5oZWFwKSkKLSAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcoZXhlYy0+dm0o
KSwgY29udGV4dCk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAg
ICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+
KHZtLmhlYXApKQorICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7
CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtODMsMjIgKzg3LDI0IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmUKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKLSAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5n
dGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2Yg
YnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKCFBcnJh
eUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkp
IHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkJ5dGUgb2Zmc2V0
IGlzIG5vdCBhbGlnbmVkIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
Q29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpOworICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2
bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgQVNTRVJUKGNv
bnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAgICBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4oZXhlYy0+
dm0oKS5oZWFwKSkKLSAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcoZXhlYy0+dm0oKSwg
Y29udGV4dCk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICAg
ICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZt
LmhlYXApKQorICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7Cisg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTI4LDEwICsxMzQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiAgICAgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoY2FuQWNjZXNzUmFuZ2VRdWlja2x5KG9mZnNldCwgbGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBjb25zaXN0aW5nIG9mIG9mZnNldCBhbmQg
bGVuZ3RoIGFyZSBvdXQgb2YgYm91bmRzIikpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBjb25zaXN0aW5nIG9mIG9mZnNldCBh
bmQgbGVuZ3RoIGFyZSBvdXQgb2YgYm91bmRzIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMjkwLDggKzI5OCwxMCBAQCBBcnJheUJ1ZmZlciogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogRW5jb2RlZEpTVmFsdWUgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRocm93TmV1dGVyZWRUeXBlZEFycmF5VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgb2JqZWN0LCBQcm9wZXJ0eU5hbWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgQVNTRVJUX1VOVVNFRChvYmplY3QsIGpzQ2FzdDxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyo+KEpTVmFsdWU6OmRlY29kZShvYmplY3QpKS0+aXNOZXV0ZXJlZCgpKTsK
LSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3
KiBzcGVjaWVzQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4ZW1wbGFyLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgY29uc3QgRnVuY3RvciYgZGVmYXVsdENvbnN0cnVj
dG9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IGV4ZW1wbGFy
LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTQsNyAr
NTcsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1CiAgICAgaWYg
KGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Q29uc3Ry
dWN0b3IoKTsKICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91
bGQgbm90IGJlIG51bGwiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBub3QgYmUgbnVsbCIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC03MywxMSArNzYsMTEgQEAgaW5s
aW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVzQ29uc3RydQogICAgICAgICBpZiAoIXZpZXct
PmlzTmV1dGVyZWQoKSkKICAgICAgICAgICAgIHJldHVybiB2aWV3OwogCi0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic3BlY2llcyBj
b25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKKyAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJzcGVjaWVzIGNvbnN0cnVjdG9y
IGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3IikpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC05Niw0MyArOTksNDUgQEAgaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBl
ZEluZGV4RnJvbQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1NldChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMuMjIKICAg
ICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qg
b25lIGFyZ3VtZW50IikpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+YXJndW1lbnRDb3VudCgp
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAgICAgdW5zaWduZWQg
b2Zmc2V0OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBk
b3VibGUgb2Zmc2V0TnVtYmVyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnRlZ2Vy
KGV4ZWMpOwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBpZiAob2Zmc2V0TnVtYmVyIDwgMCkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCAiT2Zmc2V0IHNob3VsZCBu
b3QgYmUgbmVnYXRpdmUiKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldE51bWJlciA8IDAp
KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiT2Zm
c2V0IHNob3VsZCBub3QgYmUgbmVnYXRpdmUiKTsKICAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bWluKG9mZnNldE51bWJlciwgc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIG9mZnNldCA9IDA7CiAKLSAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdC0+aXNO
ZXV0ZXJlZCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKLSAgICBpZiAoIXNvdXJjZUFycmF5KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHNob3Vs
ZCBiZSBhbiBvYmplY3QiKSk7CisgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VBcnJheSkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZp
cnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBvYmplY3QiKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGg7CiAgICAgaWYgKGlzVHlwZWRWaWV3KHNvdXJjZUFycmF5LT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlKSkgewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlVmll
dyA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHNvdXJjZUFycmF5KTsKLSAgICAgICAgaWYg
KHNvdXJjZVZpZXctPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICBpZiAoVU5MSUtFTFkoc291cmNlVmlldy0+aXNOZXV0ZXJlZCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgICAgICBsZW5ndGggPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJheSktPmxlbmd0aCgpOwogICAgIH0gZWxz
ZQotICAgICAgICBsZW5ndGggPSBzb3VyY2VBcnJheS0+Z2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgbGVuZ3RoID0gc291
cmNlQXJyYXktPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4
ZWMpOwogCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKICAgICB0aGlzT2JqZWN0LT5zZXQoZXhlYywgb2Zmc2V0LCBzb3VyY2VBcnJh
eSwgMCwgbGVuZ3RoLCBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKQEAgLTE0MCwxMyArMTQ1LDE1
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgLy8gMjIuMi4zLjUKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyog
dGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGxvbmcgbGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CiAgICAgbG9uZyB0byA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoZXhlYywgMCwgbGVuZ3RoKTsKQEAgLTE2NSw3ICsxNzIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgbG9uZyBjb3VudCA9IHN0
ZDo6bWluKGxlbmd0aCAtIHN0ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKIAogICAg
IGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3
Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAg
ICAgbWVtbW92ZShhcnJheSArIHRvLCBhcnJheSArIGZyb20sIGNvdW50ICogdGhpc09iamVjdC0+
ZWxlbWVudFNpemUpOwpAQCAtMTc0LDEyICsxODEsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKy8vICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTE5Myw3ICsyMDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+
aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIGF1dG8gdGFyZ2V0T3B0
aW9uID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24o
dmFsdWVUb0ZpbmQpOwpAQCAtMjE5LDE2ICsyMjgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMuMTMKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTIzOCw3ICsy
NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5
ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICBhdXRvIHRhcmdldE9wdGlvbiA9IFZp
ZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKHZhbHVlVG9G
aW5kKTsKQEAgLTI1NiwxMSArMjY3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSm9pbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogCiAgICAgLy8gMjIuMi4zLjE0CiAgICAgYXV0byBqb2luV2l0aFNlcGFyYXRvciA9IFsm
XSAoU3RyaW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29kZWRKU1ZhbHVlIHsKQEAgLTI4OSwyMSAr
MzAzLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgcmV0dXJuIGpvaW5XaXRoU2VwYXJhdG9y
KHNlcGFyYXRvclN0cmluZy0+dmlldyhleGVjKS5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8g
MjIuMi4zLjE2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0
aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxl
YXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3Qt
Pmxlbmd0aCgpOwogCkBAIC0zMjYsNyArMzQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgYXV0
byB0YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbih2YWx1ZVRvRmluZCk7CiAgICAgaWYgKCF0YXJnZXRPcHRpb24pCkBAIC0zNDUs
NyArMzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAy
Mi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihl
eGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zNTQsNyArMzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aChWTSYsIEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAyMi4yLjMuMTcKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzYzLDcg
KzM3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICAvLyAyMi4yLjMuMgogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xh
c3MqPihleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zNzIsNyArMzg4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRl
T2Zmc2V0KFZNJiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIDIyLjIuMy4zCiAgICAgVmll
d0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKQEAgLTM4MSwxMiArMzk3LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8v
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIxCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVt
ZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHN0ZDo6cmV2
ZXJzZShhcnJheSwgYXJyYXkgKyB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7CkBAIC0zOTUsMTIgKzQx
NCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTb3J0KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyAyMi4yLjMuMjUKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNz
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKICAgICB0aGlzT2JqZWN0LT5zb3J0KCk7CiAKQEAgLTQwOCwxNSArNDMwLDE3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMu
MjYKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgVmlld0NsYXNzKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5zaWduZWQgdGhpc0xlbmd0
aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBAIC00MjgsNyArNDUyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAg
ICAvLyBDbGFtcCBlbmQgdG8gYmVnaW4uCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7
CkBAIC00NDgsNyArNDcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZQogCiAgICAgQVNTRVJUKCFyZXN1bHQtPmlzTmV1dGVyZWQoKSk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIFdlIHJldHVybiBlYXJseSBoZXJl
IHNpbmNlIHdlIGRvbid0IGFsbG9jYXRlIGEgYmFja2luZyBzdG9yZSBpZiBsZW5ndGggaXMgMCBh
bmQgbWVtbW92ZSBkb2VzIG5vdCBsaWtlIG51bGxwdHJzCiAgICAgaWYgKCFsZW5ndGgpCkBAIC00
OTIsMTUgKzUxNiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mdm0sIEV4ZWNTdGF0ZSogZXhl
YykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIzCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4
ZWMtPmNhbGxlZSgpKTsKIAogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3
Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKIAogICAgIC8vIEdldCB0aGUgbGVuZ3RoIGhlcmU7IGxhdGVyIGFzc2VydCB0
aGF0IHRoZSBsZW5ndGggZGlkbid0IGNoYW5nZS4KICAgICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CkBAIC01NTIsNyArNTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4ocmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgInNwZWNpZXMgY29uc3RydWN0b3IgZGlk
IG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5
IFZpZXciKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwMiwxOSArMTIwMiwyMiBAQCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0CiAKIFVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVy
cm9yIGVycm9yOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBo
YXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJ
bmZvKCkuZXZhbENvbnRleHRUeXBlKCk7CiAgICAgCi0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldEV2YWxDb2RlQmxvY2so
Ci0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9y
LCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0uY29kZUNhY2hlKCktPmdldEV2YWxDb2Rl
QmxvY2soCisgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBl
cnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWik7CiAKICAgICBpZiAoaGFz
RGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwg
ZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNz
YWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50b0Vy
cm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTIyMywxNiArMTIyNiwxOSBAQCBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjCiAKIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQogeworICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dl
ck9mZjsKLSAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKLSAgICAg
ICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+
Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dl
ck1vZGUsIGVycm9yKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dl
cigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JP
YmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+
c291cmNlKCkpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAo
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxv
dmljaAogICoKQEAgLTc2LDExICs3NiwxNCBAQCBzdGF0aWMgQml0bWFwPDI1Nj4gbWFrZUNoYXJh
Y3RlckJpdG1hcChjCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIEpT
VmFsdWUgZW5jb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQml0bWFwPDI1Nj4mIGRvTm90RXNj
YXBlLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICAvLyAxOC4yLjYuMS4xIFJ1bnRpbWUgU2VtYW50aWNzOiBFbmNv
ZGUgKCBzdHJpbmcsIHVuZXNjYXBlZFNldCApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hMjYyLyNzZWMtZW5jb2RlCiAKLSAgICBhdXRvIHRocm93RXhjZXB0aW9uID0gW2V4ZWNd
IHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwg
VVRGLTE2IHNlcXVlbmNlLiIpKSk7CisgICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFsmc2NvcGUs
IGV4ZWNdIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBp
bGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOwogICAgIH07CiAKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CkBAIC0xNjMsNiArMTY2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgogQUxXQVlTX0lOTElORQogc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IEJpdG1hcDwyNTY+
JiBkb05vdFVuZXNjYXBlLCBib29sIHN0cmljdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIGludCBrID0gMDsKICAgICBVQ2hhciB1ID0gMDsKQEAg
LTIwMyw3ICsyMDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBj
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hhckxlbiA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHN0cmljdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVUkkgZXJyb3IiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVy
cm9yIikpKTsKICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjYXNlIHdoZXJlIHdlIGRvbid0
IHVzZSAic3RyaWN0IiBtb2RlIGlzIHRoZSAidW5lc2NhcGUiIGZ1bmN0aW9uLgogICAgICAgICAg
ICAgICAgIC8vIEZvciB0aGF0LCBpdCdzIGdvb2QgdG8gc3VwcG9ydCB0aGUgd29ua3kgIiV1IiBz
eW50YXggZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgICAgICBpZiAo
ayA8PSBsZW5ndGggLSA2ICYmIHBbMV0gPT0gJ3UnCkBAIC02NDAsMTMgKzY0NiwxNiBAQCBzdGF0
aWMgZG91YmxlIHBhcnNlRmxvYXQoU3RyaW5nVmlldyBzKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgeCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICgheC5pc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHgpOwogCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIH0KIApAQCAtODQ1LDEyICs4NTQsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICInYXJndW1l
bnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gc3RyaWN0
IG1vZGUuIik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNj
ZXNzZWQgaW4gc3RyaWN0IG1vZGUuIik7CiB9CiAKIGNsYXNzIEdsb2JhbEZ1bmNQcm90b0dldHRl
ckZ1bmN0b3IgewpAQCAtODg3LDggKzkwMCwxMSBAQCBwcml2YXRlOgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZl
cnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZlcnQg
dW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIE5vdFN0cmljdE1vZGUpKTsKIApAQCAtOTQ0LDggKzk2MCwxMSBAQCBib29sIGNoZWNrUHJv
dG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAoZXhl
Yy0+dGhpc1ZhbHVlKCkuaXNVbmRlZmluZWRPck51bGwoKSkgCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQg
b3IgbnVsbCB0byBvYmplY3QiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoZXhlYy0+dGhpc1Zh
bHVlKCkuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3Ig
bnVsbCB0byBvYmplY3QiKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAKQEAgLTk2Miw3ICs5ODEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNQCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7
CiAgICAgdGhpc09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDEx
ICsxMTAsMTQgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleAogCiBi
b29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgLy8gQWxs
IGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCiAgICAgSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZl
SW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgp
KSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOSBAQCB2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0Ojp2aXNpdENoaWxkCiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9k
dWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0eS1wCiAKICAgICBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCo+KGNlbGwpOwpAQCAtMTI5LDcgKzEzMiw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmdldE93blByb3AKICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0
RW52aXJvbm1lbnQgPSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CiAKICAgICAg
ICAgUHJvcGVydHlTbG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IHRh
cmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlT
bG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBv
bGluZVNsb3QpOworICAgICAgICBib29sIGZvdW5kID0gdGFyZ2V0RW52aXJvbm1lbnQtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCBy
ZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CiAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVT
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC0xMzcsNyArMTQwLDcgQEAgYm9v
bCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAogCiAgICAgICAgIC8vIElmIHRo
ZSB2YWx1ZSBpcyBmaWxsZWQgd2l0aCBURFogdmFsdWUsIHRocm93IGEgcmVmZXJlbmNlIGVycm9y
LgogICAgICAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIApAQCAtMTYyLDE2ICsxNjUsMjIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Z2V0T3duUHJvcAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1v
YmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNob3VsZFRocm93KQotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTMsMTcgKzIwMiwyMyBAQCB2b2lkIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWZpbmVvd25w
cm9wZXJ0eS1wLWRlc2MKICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24g
b2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0
eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVj
dFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghb2JqZWN0KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInx0aGlzfCBz
aG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBi
ZSBhIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgb2JqZWN0KSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDYgKzY4MSw5IEBA
IHN0YXRpYyB2b2lkIGdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiAKIAogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQogICAgIGlmICht
X21vZHVsZU5hbWVzcGFjZU9iamVjdCkKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmdldCgpOwpAQCAtNjk0LDExICs2OTcsMTEgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIEpTTW9kdWxlUmVjb3JkOgogICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6UmVzb2x1
dGlvbiByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIG5hbWUuZ2V0KCkpKTsKICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsK
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICci
LCBTdHJpbmcobmFtZS5nZXQoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5n
IG5hbWUgJyIsIFN0cmluZyhuYW1lLmdldCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4
cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIg
ZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBz
Y29wZSwgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3Qg
YmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoK
QEAgLTcxMCwyOSArNzEzLDMzIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJl
Y29yZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNl
dChleGVjLT52bSgpLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1
cmUoKSwgdGhpcywgdW5hbWJpZ3VvdXNOYW1lcykpOworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKICAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuZ2V0KCk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNv
ZGUoKSk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYyk7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIGV4ZWN1dGFibGUpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0
KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKICAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVj
LCBleGVjdXRhYmxlKTsKIH0KIAogdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNs
YXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25p
bnN0YW50aWF0aW9uCiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOwotICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKLQot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxl
RW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJs
ZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKIAogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRp
b24KICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgOS4KQEAgLTc0NSwxNSArNzUyLDE1
IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXQKICAgICAgICAgICAg
IFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0RW50cnku
ZXhwb3J0TmFtZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQg
YmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAi
JyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhl
Yywgc2NvcGUsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICci
LCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQu
IikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVk
IGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhw
b3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBs
KCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5k
aW5ncy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1
bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVk
IGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKQEAgLTc3OSwxNSAr
Nzg2LDE1IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXQKICAgICAg
ICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhw
b3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwogICAgICAgICAgICAgc3dpdGNoIChy
ZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFt
ZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUg
JyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3Vu
ZC4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OkFtYmlndW91czoKLSAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBv
cnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8g
YW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5
bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1l
ICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUg
cmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVy
cm9yOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygi
SW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0
YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQn
IGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsOCBAQCBKU1ZhbHVl
IFN0cmluZ2lmaWVyOjp0b0pTT05JbXBsKEpTVmFsdWUgCiBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IG1fZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICAvLyBDYWxsIHRoZSB0b0pTT04gZnVuY3Rpb24uCiAgICAgdmFsdWUgPSB0b0pTT04odmFsdWUs
IHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpAQCAtMzY4LDcgKzM3MCw3
IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXIKICAgICAvLyBIYW5k
bGUgY3ljbGUgZGV0ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhlIHN0YWNrLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIGlmIChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpTT04uc3RyaW5naWZ5
IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBj
YW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmdpZnlGYWlsZWQ7CiAgICAgICAgIH0KICAgICB9CkBAIC01ODksMTAgKzU5MSwxMyBA
QCBlbnVtIFdhbGtlclN0YXRlIHsgU3RhdGVVbmtub3duLCBBcnJheVN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPYmplY3RTdGFydFN0YXRlLCBPYmplY3RTdGFydFZpc2l0TWVt
YmVyLCBPYmplY3RFbmRWaXNpdE1lbWJlciB9OwogTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgVmVjdG9y
PFByb3BlcnR5TmFtZUFycmF5LCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHByb3BlcnR5U3Rh
Y2s7CiAgICAgVmVjdG9yPHVpbnQzMl90LCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGluZGV4
U3RhY2s7Ci0gICAgTG9jYWxTdGFjazxKU09iamVjdCwgMTY+IG9iamVjdFN0YWNrKG1fZXhlYy0+
dm0oKSk7Ci0gICAgTG9jYWxTdGFjazxKU0FycmF5LCAxNj4gYXJyYXlTdGFjayhtX2V4ZWMtPnZt
KCkpOworICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmplY3RTdGFjayh2bSk7CisgICAg
TG9jYWxTdGFjazxKU0FycmF5LCAxNj4gYXJyYXlTdGFjayh2bSk7CiAgICAgVmVjdG9yPHVuc2ln
bmVkLCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGFycmF5TGVuZ3RoU3RhY2s7CiAgICAgCiAg
ICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHN0YXRlU3Rh
Y2s7CkBAIC02MDcsNyArNjEyLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2Jq
ZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAg
ICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmls
dGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJm
bG93RXJyb3IobV9leGVjKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKG1fZXhlYywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGFycmF5U3RhY2sucHVz
aChhcnJheSk7CkBAIC02NjMsNyArNjY4LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUpKSAm
JiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKEpTQXJyYXk6OmluZm8oKSkpOwogICAgICAg
ICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBhcnJheVN0YWNrLnNpemUoKSA+IG1h
eGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgb2Jq
ZWN0U3RhY2sucHVzaChvYmplY3QpOwpAQCAtNzM2LDMxICs3NDEsMzQgQEAgTkVWRVJfSU5MSU5F
IEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgIH0KICAgICBKU09iamVjdCogZmluYWxI
b2xkZXIgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMpOwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGZpbmFsSG9sZGVyKTsKLSAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUoKS0+cHV0
KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlk
ZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKKyAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUo
KS0+cHV0KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllciwgb3V0VmFsdWUsIHNsb3QpOwogICAgIHJldHVybiBjYWxsUmV2aXZlcihmaW5hbEhvbGRl
ciwganNFbXB0eVN0cmluZyhtX2V4ZWMpLCBvdXRWYWx1ZSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1
IDE1LjEyLjIKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFy
YW1ldGVyIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0
IG9uZSBwYXJhbWV0ZXIiKSkpOwogICAgIEpTU3RyaW5nOjpTYWZlVmlldyBzb3VyY2UgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogCiAgICAgSlNWYWx1ZSB1bmZpbHRlcmVkOwotICAgIExvY2FsU2NvcGUgc2Nv
cGUoZXhlYy0+dm0oKSk7CisgICAgTG9jYWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKICAgICBpZiAo
c291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IGpzb25QYXJz
ZXIoZXhlYywgc291cmNlLmNoYXJhY3RlcnM4KCksIHNvdXJjZS5sZW5ndGgoKSwgU3RyaWN0SlNP
Tik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwog
ICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdl
KCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNv
dXJjZS5jaGFyYWN0ZXJzMTYoKSwgc291cmNlLmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAg
ICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIGlm
ICghdW5maWx0ZXJlZCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOyAgICAg
ICAgCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CiAgICAgfQog
ICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNzcxLDE4ICs3Nzks
MjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodW5maWx0ZXJlZCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXYWxrZXIoZXhlYywg
TG9jYWw8SlNPYmplY3Q+KGV4ZWMtPnZtKCksIGFzT2JqZWN0KGZ1bmN0aW9uKSksIGNhbGxUeXBl
LCBjYWxsRGF0YSkud2Fsayh1bmZpbHRlcmVkKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShXYWxrZXIoZXhlYywgTG9jYWw8SlNPYmplY3Q+KHZtLCBhc09iamVjdChmdW5jdGlvbikpLCBj
YWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOwogfQogCiAvLyBFQ01BLTI2MiB2
NSAxNS4xMi4zCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJp
bmdpZnkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJObyBpbnB1dCB0byBzdHJpbmdpZnkiKSkpOwotICAg
IExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+dm0oKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gdmFsdWUo
ZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIExvY2FsPFVua25v
d24+IHJlcGxhY2VyKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKLSAgICBMb2NhbDxV
bmtub3duPiBzcGFjZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgyKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiTm8gaW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKKyAgICBMb2NhbFNjb3BlIGxvY2FsU2Nv
cGUodm0pOworICAgIExvY2FsPFVua25vd24+IHZhbHVlKHZtLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CisgICAgTG9jYWw8VW5rbm93bj4gcmVwbGFjZXIodm0sIGV4ZWMtPmFyZ3VtZW50
KDEpKTsKKyAgICBMb2NhbDxVbmtub3duPiBzcGFjZSh2bSwgZXhlYy0+YXJndW1lbnQoMikpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gU3RyaW5naWZpZXIoZXhlYywgcmVwbGFjZXIsIHNwYWNlKS5z
dHJpbmdpZnkodmFsdWUpLmdldCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAwNiwgMjAwOCwgMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEyLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMzU0LDYg
KzEzNTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJlY3QoVk0mIHZtCiAKIGJv
b2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKIHsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMsIE5vdFN0cmljdE1vZGUpID09IHRoaXMp
OwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCgpID09IHByb3RvdHlwZSkKQEAg
LTEzNjUsNyArMTM2Niw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWMKIAogICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvd0lm
Q2FudFNldCkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM3NCw3ICsxMzc1LDcgQEAgYm9vbCBKU09iamVj
dDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYm
IG5leHRQcm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9
PSB0aGlzKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90
b19fIHZhbHVlIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0KG5l
eHRQcm90b3R5cGUpLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3RvdHlwZSAhPSBkZWZhdWx0R2V0
UHJvdG90eXBlKSkKQEAgLTE2MTYsMjggKzE2MTcsMzEgQEAgZW51bSBjbGFzcyBUeXBlSGludE1v
ZGUgeyBUYWtlc0hpbnQsIERvZQogdGVtcGxhdGU8VHlwZUhpbnRNb2RlIG1vZGUgPSBUeXBlSGlu
dE1vZGU6OkRvZXNOb3RUYWtlSGludD4KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWl0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU09iamVjdCogb2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhp
bnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQo
ZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKTsKICAgICBpZiAoZnVuY3Rpb24uaXNV
bmRlZmluZWQoKSAmJiBtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgY2FsbEFyZ3M7CiAgICAgaWYgKG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpUYWtlc0hpbnQp
IHsKICAgICAgICAgSlNTdHJpbmcqIGhpbnRTdHJpbmcgPSBudWxscHRyOwogICAgICAgICBzd2l0
Y2ggKGhpbnQpIHsKICAgICAgICAgY2FzZSBOb1ByZWZlcmVuY2U6Ci0gICAgICAgICAgICBoaW50
U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOworICAgICAg
ICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5kZWZhdWx0U3RyaW5nKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQcmVmZXJOdW1iZXI6Ci0gICAgICAgICAgICBo
aW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCk7CisgICAg
ICAgICAgICBoaW50U3RyaW5nID0gdm0uc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJlZmVyU3RyaW5nOgotICAgICAgICAgICAg
aGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpOworICAg
ICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhbGxBcmdzLmFwcGVuZChoaW50
U3RyaW5nKTsKQEAgLTE2NDUsNDAgKzE2NDksNDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBjYWxsVG9QcmltaQogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmplY3QpLCBj
YWxsQXJncyk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7
CisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0
aW9uKCk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbW9kZSA9
PSBUeXBlSGludE1vZGU6OkRvZXNOb3RUYWtlSGludCA/IEpTVmFsdWUoKSA6IHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJpbWl0aXZlIHJldHVybmVkIGFuIG9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFr
ZUhpbnQgPyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0IikpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIC8vIEVDTUEgNy4xLjEKIEpTVmFsdWUgSlNPYmplY3Q6Om9yZGluYXJ5
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQp
IGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciBk
ZWZhdWx0IHZhbHVlIG1ldGhvZHMgdGhlcmUgYXJlIG9uIG9iamVjdCdzIHByb3RvdHlwZSBjaGFp
biBhcmUKICAgICAvLyBiZWluZyB3YXRjaGVkLgotICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zdGFy
dFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnlGb3JFbnRpcmVDaGFpbihleGVj
LT52bSgpKTsKKyAgICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFsUHJv
cGVydGllc0lmTmVjZXNzYXJ5Rm9yRW50aXJlQ2hhaW4odm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZTsKICAgICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpIHsKICAgICAgICAgdmFsdWUgPSBjYWxs
VG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9T
dHJpbmcsIGhpbnQpOworICAgICAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHNjb3Bl
LmV4Y2VwdGlvbigpID09IHZhbHVlLmFzQ2VsbCgpKTsKICAgICAgICAgaWYgKHZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsK
KyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9
PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICB9IGVsc2UgewogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsK
KyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9
PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0
aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGhpbnQpOworICAgICAgICBBU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHNjb3BlLmV4Y2VwdGlvbigpID09IHZhbHVlLmFzQ2Vs
bCgpKTsKICAgICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IH0KIAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVm
YXVsdCB2YWx1ZSIpKTsKIH0KIAogSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0
IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBoaW50KQpAQCAtMTcyNywxMiArMTczOCwxNCBAQCBjb25zdCBIYXNoVGFibGVWYWx1ZSogSlNP
YmplY3Q6OmZpbmRQcm9wCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICAKIAogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmIGhhc0luc3RhbmNlVmFsdWUgIT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSB7CiAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEo
aGFzSW5zdGFuY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rp
b24oZXhlYywgdGhpcykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JoYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTE3NDcsNyArMTc2MCw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXgKICAgICAgICAgcmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1
ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpKTsKICAgICBpZiAo
aW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxl
KHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOwotICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RG
dW5jdGlvbihleGVjLCB0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihleGVjLCB0aGlz
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzYwLDE1ICsxNzczLDE3IEBAIGJvb2wg
SlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBKU09iamVjdDo6ZGVm
YXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90bykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24g
YW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnN0YW5jZW9mIGNh
bGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKQEAgLTIyMzgsNiArMjI1Myw5IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgog
Ym9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykg
PT0gaW5kZXhpbmdTaGFwZSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkp
OwogCkBAIC0yMjQ3LDggKzIyNjUsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuCiAgICAgLy8gb3IgZXF1YWwgdG8gdGhlIHZlY3RvciBsZW5ndGguCiAgICAgQVNT
RVJUKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAog
ICAgICAgICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdo
Rm9yVmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAg
ICAgICAgIHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwg
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKQEAgLTIyNjIsNyArMjI3OCw3IEBAIGJvb2wg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICB9CiAKICAgICBpZiAoIWVu
c3VyZUxlbmd0aCh2bSwgaSArIDEpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQo
KTsKQEAgLTIzMDAsNiArMjMxNiw3IEBAIHRlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmQKIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUg
b2YgdGhlIGN1cnJlbnQgdmVjdG9yLgogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7
CkBAIC0yMzI3LDcgKzIzNDQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvLCBvciBjYW4ndCB1c2UgYSB2ZWN0b3IgdG8gaG9sZCB0aGlzIHByb3Bl
cnR5IC0gYWxsb2NhdGUgYSBzcGFyc2UgbWFwICYgYWRkIHRoZSB2YWx1ZS4KLSAgICAgICAgbWFw
ID0gYWxsb2NhdGVTcGFyc2VJbmRleE1hcChleGVjLT52bSgpKTsKKyAgICAgICAgbWFwID0gYWxs
b2NhdGVTcGFyc2VJbmRleE1hcCh2bSk7CiAgICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yMzM3LDcgKzIz
NTQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgICAg
IC8vIFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUu
CiAgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRl
bnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwpAQCAtMjM0Nyw3ICsyMzY0LDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIFdlIGFy
ZSBjdXJyZW50bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8g
YmUgZG9pbmcgc28uCiAgICAgLy8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1h
cCBpZiBTcGFyc2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3Ig
aWYgYWxsb2NhdGlvbiBmYWlscy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNw
YXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0lu
QXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAg
IGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgs
IG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aCh2bSwgbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VWZWN0b3JM
ZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjk0NCw2ICsyOTYxLDkgQEAg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjUwogYm9vbCB2YWxpZGF0ZUFu
ZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgYm9vbCBpc0V4dGVuc2libGUsCiAgICAgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzQ3VycmVudERlZmluZWQs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgY3VycmVudCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIElmIHdlIGhhdmUgYSBuZXcgcHJvcGVydHkgd2UgY2Fu
IGp1c3QgcHV0IGl0IG9uIG5vcm1hbGx5CiAgICAgLy8gU3RlcCAyLgogICAgIGlmICghaXNDdXJy
ZW50RGVmaW5lZCkgewpAQCAtMjk1MSw3ICsyOTcxLDcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKAogICAgICAgICAvLyBTdGVwIDIuYQogICAgICAgICBpZiAoIWlz
RXh0ZW5zaWJsZSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBk
ZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNp
YmxlLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIW9iamVjdCkKQEAgLTI5NzQsMTIgKzI5OTQsMTIgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewog
ICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29u
ZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBjdXJyZW50
LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29u
ZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI5ODgsNyArMzAwOCw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVBy
b3BlcnR5RGVzY3JpcHRvcigKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkg
Y2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAo
ZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJl
bnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk5OSwxNCArMzAxOSwx
NCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgaWYgKGRl
c2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICE9IGN1cnJlbnQuaXNEYXRhRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNt
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlw
dG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBA
IC0zMDE2LDEzICszMDM2LDEzIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3Jp
dGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSkgewogICAgICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1ZShleGVjLCBjdXJyZW50LnZhbHVl
KCksIGRlc2NyaXB0b3IudmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93
RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVh
ZG9ubHkgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzAzMSw3ICszMDUxLDcgQEAgYm9v
bCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
cmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJy
ZW50KTsKICAgICB9CiAKQEAgLTMwNDEsMTcgKzMwNjEsMTcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFw
cGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LnNl
dHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LnNldHRl
cigpLCBkZXNjcmlwdG9yLnNldHRlcigpKSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiAhKGN1cnJlbnQu
Z2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJlbnQuZ2V0
dGVyKCksIGRlc2NyaXB0b3IuZ2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhj
ZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3Ip
IHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTMwNTksMzMgKzMwNzksMzMgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKAogICAgIC8vIFN0ZXAgMTAvMTEuCiAgICAgaWYgKCFvYmplY3QpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBvYmplY3QtPmdldERp
cmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBv
YmplY3QtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWFjY2Vzc29yKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXI7CiAg
ICAgYm9vbCBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGFjY2Vzc29yLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0
dGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CiAgICAgICAgIGlmIChjdXN0b21H
ZXR0ZXJTZXR0ZXItPnNldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0
ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3Rv
bUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVy
KSk7CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNl
dHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CiAgICAgICAgIGlmIChjdXN0b21HZXR0
ZXJTZXR0ZXItPmdldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdl
dHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7
CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRl
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNT
RVJUKGFjY2Vzc29yLmlzR2V0dGVyU2V0dGVyKCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBh
c0dldHRlclNldHRlcihhY2Nlc3Nvcik7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhT
ZXR0ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9y
LnNldHRlck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53
aXRoU2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3Iuc2V0
dGVyT2JqZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9
CiAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKSB7Ci0gICAgICAgIGdldHRlclNl
dHRlciA9IGdldHRlclNldHRlci0+d2l0aEdldHRlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOworICAgICAgICBnZXR0
ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhHZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CiAgICAgICAgIGdldHRlclNl
dHRlckNoYW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzRXF1
YWwoZGVzY3JpcHRvcikgJiYgIWdldHRlclNldHRlckNoYW5nZWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2ln
bmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGdl
dHRlclNldHRlciwgYXR0cnMgfCBBY2Nlc3Nvcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjMz
LDYgKzMyNTMsOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2luZGV4Lmh0
bWwjc2VjLWdldG1ldGhvZAogSlNWYWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgQ2FsbERhdGEmIGNhbGxEYXRhLCBDYWxsVHlwZSYgY2FsbFR5cGUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgbWV0aG9kID0gZ2V0KGV4ZWMsIGlkZW50KTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMzI0MSwx
MyArMzI2NCwxMyBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRNZXRob2QoRXhlY1N0YXRlKiBlCiAg
ICAgICAgIGlmIChtZXRob2QuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgY2FsbFR5
cGUgPSBtZXRob2QuYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1ldGhvZC5h
c0NlbGwoKSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBA
CiAjaW5jbHVkZSAiUHV0RGlyZWN0SW5kZXhNb2RlLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlT
bG90LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKLQogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTY2LDEwICs2NSwx
MSBAQCBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgVGhyb3dTY29wZTsK
IHN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJik7CiBleHRlcm4gSlNfRVhQT1JUREFUQSBjb25z
dCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3I7CiBleHRlcm4gSlNf
RVhQT1JUREFUQSBjb25zdCBjaGFyKiBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNz
TWVjaGFuaXNtRXJyb3I7CiAKQEAgLTE2NjUsMzcgKzE2NjUsNiBAQCBBTFdBWVNfSU5MSU5FIElk
ZW50aWZpZXIgbWFrZUlkZW50aWZpZXIoCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLS8vIFNlY3Rp
b24gNy4zLjE3IG9mIHRoZSBzcGVjLiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBBZGRGdW5jdGlvbj4g
Ly8gQWRkIGZ1bmN0aW9uIHNob3VsZCBoYXZlIGEgdHlwZSBsaWtlOiAoSlNWYWx1ZSwgUnVudGlt
ZVR5cGUpIC0+IGJvb2wKLXZvaWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50aW1lVHlwZU1hc2sgbGVnYWxUeXBlc0Zp
bHRlciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIEFkZEZ1bmN0aW9uIGFkZEZ1bmN0aW9u
KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgVmVjdG9yPEpTVmFsdWU+IHJlc3Vs
dDsKLSAgICBKU1ZhbHVlIGxlbmd0aFByb3BlcnR5ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMs
IGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgbGVuZ3RoQXNEb3VibGUgPSBsZW5ndGhQ
cm9wZXJ0eS50b0xlbmd0aChleGVjKTsKLSAgICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGhBc0RvdWJsZSA+PSAwLjAgJiYgbGVu
Z3RoQXNEb3VibGUgPT0gc3RkOjp0cnVuYyhsZW5ndGhBc0RvdWJsZSkpOwotICAgIHVpbnQ2NF90
IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhBc0RvdWJsZSk7Ci0gICAgZm9y
ICh1aW50NjRfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAg
IEpTVmFsdWUgIG5leHQgPSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgaW5kZXgpOwotICAgICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUnVu
dGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUobmV4dCk7Ci0gICAgICAgIGlmICgh
KHR5cGUgJiBsZWdhbFR5cGVzRmlsdGVyKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgZXhpdEVhcmx5ID0gYWRkRnVuY3Rpb24obmV4dCwgdHlwZSk7Ci0gICAgICAg
IGlmIChleGl0RWFybHkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGJvb2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGN1cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisvLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUgc3BlYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBZGRG
dW5jdGlvbj4gLy8gQWRkIGZ1bmN0aW9uIHNob3VsZCBoYXZlIGEgdHlwZSBsaWtlOiAoSlNWYWx1
ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wKK3ZvaWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50aW1lVHlwZU1hc2sgbGVn
YWxUeXBlc0ZpbHRlciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIEFkZEZ1bmN0aW9uIGFk
ZEZ1bmN0aW9uKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1
bHQ7CisgICAgSlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBsZW5ndGhBc0RvdWJsZSA9IGxlbmd0aFByb3BlcnR5
LnRvTGVuZ3RoKGV4ZWMpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aEFzRG91YmxlID49IDAuMCAmJiBsZW5ndGhBc0Rv
dWJsZSA9PSBzdGQ6OnRydW5jKGxlbmd0aEFzRG91YmxlKSk7CisgICAgdWludDY0X3QgbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aEFzRG91YmxlKTsKKyAgICBmb3IgKHVpbnQ2
NF90IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHsKKyAgICAgICAgSlNWYWx1
ZSBuZXh0ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMsIGluZGV4KTsKKyAgICAgICAgaWYgKHZt
LmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgUnVu
dGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUobmV4dCk7CisgICAgICAgIGlmICgh
KHR5cGUgJiBsZWdhbFR5cGVzRmlsdGVyKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZXhpdEVhcmx5ID0gYWRkRnVuY3Rpb24obmV4dCwg
dHlwZSk7CisgICAgICAgIGlmIChleGl0RWFybHkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIGlmIChVTkxJS0VMWShwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnVuZGVyc2NvcmVQcm90bykpCkBAIC01NSwxMCArODgsMTIgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0
KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNW
YWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICByZXR1cm4gb3JkaW5hcnlT
ZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1Zh
bHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtNjksMTAgKzEwNCwxMCBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKCiAgICAgICAgIHJldHVybiBwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0
TW9kZSgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZShl
eGVjLCB2bSwgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0
cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8odm0sIHByb3BlcnR5TmFtZSkp
OwogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkgewogICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDEyICs5NiwxMyBAQCB2b2lk
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjphZGRPd25JbnRlcm5hCiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0
ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CiAgICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RydWN0dXJlKiBwcm9taXNlU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
ZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMTQsNyArMTE1LDkgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsUHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsICJQcm9taXNlIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlByb21pc2UiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNQcm9t
aXNlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDkgKzE0MywxMiBAQCBib29sIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om5leHQoRXhlY1N0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
cGVydHlOYW1lSXRlcmF0b3JGdW5jTmV4dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0
ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgUHJvcGVydHlOYW1lSXRlcmF0b3IubmV4dCgp
IG9uIGEgbm9uLVByb3BlcnR5TmFtZUl0ZXJhdG9yIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNhbGwgUHJvcGVydHlOYW1lSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLVByb3Bl
cnR5TmFtZUl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBp
ZiAoaXRlcmF0b3ItPm5leHQoZXhlYywgcmVzdWx0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0y
MDA4LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM4MCwxMSArMzgwLDE0IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNv
bHZlUm9wZVNsb3dDYXNlKFUKIAogdm9pZCBKU1JvcGVTdHJpbmc6Om91dE9mTWVtb3J5KEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNsZWFyRmliZXJzKCk7CiAg
ICAgQVNTRVJUKGlzUm9wZSgpKTsKICAgICBBU1NFUlQobV92YWx1ZS5pc051bGwoKSk7CiAgICAg
aWYgKGV4ZWMpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogSlNWYWx1ZSBKU1N0cmlu
Zzo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRl
ci5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsMTcgKzcxLDE5IEBAIHB1YmxpYzoK
IAogICAgIEpTVmFsdWUgYnVpbGQoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgICAgICBpZiAoIW1fb2theSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgaWYgKG1faXM4Qml0KSB7CiAgICAgICAgICAg
ICBidWZmZXI4LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXI4
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyMTYuc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
aWYgKCFidWZmZXIxNi5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0
KGJ1ZmZlcjE2KSk7CiAgICAgfQogCkBAIC0xMjcsOSArMTI5LDExIEBAIGlubGluZSBKU1ZhbHVl
IGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXgKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUs
IHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPgogaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlh
bFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZ1R5cGUmIHN0cmluZywgY29uc3Qg
U3RyaW5nVHlwZXMmLi4uIHN0cmluZ3MpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RyaW5nIHJlc3Vs
dCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcsIHN0cmluZ3MuLi4pOwogICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
Sm9pbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDYgKzgxLDkgQEAgc3RhdGljIGlubGlu
ZSBTdHJpbmcgam9pblN0cmluZ3MoY29uc3QgVgogCiBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdK
b2luZXI6OmpvaW5lZExlbmd0aChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdHJpbmdzID0gbV9zdHJpbmdzLnNpemUoKTsKICAg
ICBpZiAoIW51bWJlck9mU3RyaW5ncykKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSw3ICs5NCw3
IEBAIGlubGluZSB1bnNpZ25lZCBKU1N0cmluZ0pvaW5lcjo6am9pbmVkTGUKIAogICAgIHVuc2ln
bmVkIHJlc3VsdDsKICAgICBpZiAodG90YWxMZW5ndGguc2FmZUdldChyZXN1bHQpID09IENoZWNr
ZWRTdGF0ZTo6RGlkT3ZlcmZsb3cpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZz
dGF0ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OSw2ICsxMDIs
OSBAQCBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKIEpTVmFsdWUg
SlNTdHJpbmdKb2luZXI6OmpvaW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEFTU0VSVChtX3N0cmluZ3Muc2l6ZSgpIDw9IG1fc3RyaW5ncy5jYXBhY2l0eSgpKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGpvaW5lZExlbmd0aChzdGF0ZSk7CkBAIC0xMTUsNyArMTIx
LDcgQEAgSlNWYWx1ZSBKU1N0cmluZ0pvaW5lcjo6am9pbihFeGVjU3RhdGUmIAogICAgICAgICBy
ZXN1bHQgPSBqb2luU3RyaW5nczxVQ2hhcj4obV9zdHJpbmdzLCBtX3NlcGFyYXRvciwgbGVuZ3Ro
KTsKIAogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmc3RhdGUsIFdURk1vdmUo
cmVzdWx0KSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSm9pbmVyLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCwxNiArNjAs
MjAgQEAgaW5saW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pvaW5lcihFeAogICAgIDogbV9z
ZXBhcmF0b3Ioc2VwYXJhdG9yKQogICAgICwgbV9pc0FsbDhCaXQobV9zZXBhcmF0b3IuaXM4Qml0
KCkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiB9
CiAKIGlubGluZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgTENoYXIgc2VwYXJhdG9yLCB1bnNpZ25lZCBzdHJpbmdDb3VudCkKICAgICA6IG1fc2luZ2xl
Q2hhcmFjdGVyU2VwYXJhdG9yKHNlcGFyYXRvcikKICAgICAsIG1fc2VwYXJhdG9yIHsgJm1fc2lu
Z2xlQ2hhcmFjdGVyU2VwYXJhdG9yLCAxIH0KIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIW1fc3RyaW5ncy50cnlSZXNlcnZlQ2FwYWNpdHkoc3RyaW5nQ291bnQpKSkKLSAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmc3RhdGUsIHNjb3BlKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpTU3RyaW5nSm9p
bmVyOjphcHBlbmQoU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nJiYgc3RyaW5nKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlE
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xNjYsNiArMTY3LDcgQEAgdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5
bWJvbFRhYmxlUAogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYmplY3RU
eXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIFdh
dGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogcmVnOwpAQCAtMTgyLDcgKzE4NCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5
bWJvbFRhYmxlT2IKICAgICAgICAgQVNTRVJUKCFmYXN0RW50cnkuaXNOdWxsKCkpOwogICAgICAg
ICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHB1dFJlc3VsdCA9
IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwMCw5ICsy
MDIsOSBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAgLy8g
dGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRv
bid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICBpZiAo
c3ltYm9sVGFibGVQdXRNb2RlID09IFN5bWJvbFRhYmxlUHV0TW9kZTo6SW52YWxpZGF0ZSkKLSAg
ICAgICAgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldChleGVjLT52bSgpLCBv
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywgc2V0KTsKKyAgICAgICAgc3ltYm9sVGFi
bGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCh2bSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCByZWcsIHNldCk7CiAgICAgZWxzZQotICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0
Y2hwb2ludFNldChleGVjLT52bSgpLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywg
c2V0KTsKKyAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodm0sIG9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwogICAgIHB1dFJlc3VsdCA9IHRydWU7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsOSBAQCBTdHJ1
Y3R1cmUqIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIiVU
eXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCIl
VHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CiB9CiAKIENvbnN0
cnVjdFR5cGUgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI2
ICszOSwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGZ1bmN0aW9uTmFtZSkgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBzd2l0Y2ggKHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZv
KCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU1VpbnQ4Q2xhbXBlZEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1Vp
bnQ4Q2xhbXBlZEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQzMjogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDMyQXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uTmFtZTxKU0ludDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MzI6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5PihleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVGbG9hdDY0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRB
cnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRBcnJheT4odm0sIGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5
cGVGbG9hdDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTxKU0Zsb2F0MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJh
eT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBjYXNlIFR5cGVJbnQ4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTxKU0ludDhBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxK
U0ludDhBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50ODogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQxNjogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MTY6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQx
NkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNl
IE5vdFR5cGVkQXJyYXk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVEYXRhVmlldzog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIpKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTcyLDE0ICs3MiwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBh
cmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxsKCkg
fHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IikpOwogCiAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihhcmd1bWVu
dCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3IikpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5sZW5ndGgoKSkpOwogfQpAQCAt
OTQsMTExICs5NiwxMzkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
VgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
b3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2Jq
ZWN0IikpOworICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwog
ICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hv
dWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9O
KGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0lu
ZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4o
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVj
dCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9H
ZXR0ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUg
YSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dF
TkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jUmV2ZXJzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VO
RVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDExICs1MCwxNiBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiTWFwIikpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIk1hcCIpKTsKIH0KIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm1h
cFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MSwxMSAr
NzYsMTEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENh
bGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERh
dGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7
CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGlmICghbmV4dEl0ZW0u
aXNPYmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBE
YXRhSW5saW5lcy5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBEYXRhSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDkg
QEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0bwogdGVtcGxhdGU8dHlw
ZW5hbWUgRW50cnksIHR5cGVuYW1lIEpTSXRlcmF0b3I+CiBpbmxpbmUgQ2hlY2tlZEJvb2xlYW4g
TWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjplbnN1cmVTcGFjZUZvckFwcGVuZChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAobV9j
YXBhY2l0eSA+IG1fc2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTIxMSw3ICsyMTQs
NyBAQCBpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YUltcGw8RW50cnksCiAgICAgdm9pZCog
bmV3U3RvcmFnZSA9IG51bGxwdHI7CiAgICAgRGVmZXJHQyBkZWZlcigqZXhlYy0+aGVhcCgpKTsK
ICAgICBpZiAoIWV4ZWMtPmhlYXAoKS0+dHJ5QWxsb2NhdGVTdG9yYWdlKG93bmVyLCByZXF1aXJl
ZFNpemUgKiBzaXplb2YoRW50cnkpLCAmbmV3U3RvcmFnZSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEVudHJ5KiBuZXdFbnRy
aWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdTdG9yYWdlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0
ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw5ICs1MCwxMiBAQCB2b2lk
IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXBJdGVyYXRvciogaXRlcmF0b3Ig
PSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBNYXBJdGVyYXRv
ci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBjYWxsIE1hcEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1NYXBJdGVyYXRv
ciBvYmplY3QiKSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5u
ZXh0KGNhbGxGcmFtZSwgcmVzdWx0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsMTMgKzkwLDE2IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0K
IAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJh
bWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNN
YXAqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0aGlzVmFsdWUpOwogICAgIGlmICghbWFw
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBub24tTWFwIG9iamVjdCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIHJldHVybiBtYXA7CkBAIC0xNTUsMjYgKzE1OCwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jVmFsdWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU01hcCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBNYXAgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUt
PnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0
cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBNYXAgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01h
cCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBlbnRyeSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9i
amVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3Jl
YXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
Pm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBlbnRyeSBpdGVyYXRvciBmb3Ig
YSBub24tTWFwIG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBq
c0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0
aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBm
b3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNN
YXBJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVL
ZXkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAga2V5IGl0ZXJh
dG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc01hcChFeGVjU3Rh
dGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTA5LDYgKzEwOSw4IEBAIE1vZHVsZUxvYWRlclByb3RvdHlwZTo6TW9kdWxlTG9h
ZGVyUHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90
eXBlUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgY29u
c3QgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyNyw3ICsxMjksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0LCBKU1BhcnNlckNvbW1lbnRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBl
cnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29k
ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmpl
Y3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIEFTU0VSVCht
b2R1bGVQcm9ncmFtTm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDggKzcyLDExIEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4
ZWNTdGF0ZSogZXgKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJl
dHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
Y2FsbGVySXNTdHJpY3QoZXhlYykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBo
YXMgb25seSBhIGdldHRlciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2V0dGluZyBhIHByb3BlcnR5
IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY0LDE1ICszNjQsMTggQEAgc3RhdGljIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChp
bnQzMl90IAogLy8gdG8gYXJndW1lbnQtcGx1cy1vbmUgc2lnbmlmaWNhbnQgZmlndXJlcykuCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYg
KCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IGRlY2ltYWxQ
bGFjZXNJbkV4cG9uZW50OwogICAgIGJvb2wgaXNVbmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRl
Z2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAsIDIwLCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudCwg
aXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRXhwb25l
bnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8g
SGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpKQpAQCAt
Mzk1LDE1ICszOTgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
bwogLy8gbWV0aG9kIHdpbGwgaW5zdGVhZCBmYWxsYmFjayB0byBjYWxsaW5nIFRvU3RyaW5nLiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRv
VGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICAvLyBHZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgZGVjaW1hbFBsYWNl
czsKICAgICBib29sIGlzVW5kZWZpbmVkOyAvLyBUaGlzIGlzIGlnbm9yZWQ7IHVuZGVmaW5lZCB0
cmVhdGVkIGFzIDAuCiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAs
IDIwLCBkZWNpbWFsUGxhY2VzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQo
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgidG9GaXhlZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CiAK
ICAgICAvLyAxNS43LjQuNS43IHN0YXRlcyAiSWYgeCA+PSAxMF4yMSwgdGhlbiBsZXQgbSA9IFRv
U3RyaW5nKHgpIgogICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgSW5pbml0eSwgYW5kIHN0cnVjdHVy
ZSB0aGUgY2hlY2sgc28gdGhhdCBOYU4KQEAgLTQyOCwxNSArNDM0LDE4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIHdpdGggc21hbGxlciB2YWx1ZXMgY29u
dmVydGVkIHRvIGV4cG9uZW50aWFsIHJlcHJlc2VudGF0aW9uLgogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVj
LT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAv
LyBHZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzOwogICAgIGJv
b2wgaXNVbmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMs
IDEsIDIxLCBzaWduaWZpY2FudEZpZ3VyZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
dG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgidG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MSBhbmQgMjEiKSkpOwogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3Vt
ZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5kZWZpbmVkKQpAQCAtNDg1
LDIyICs0OTQsMjMgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBpbnRlZ2VyVmFsdQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsK
ICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJh
Y3RSYWRpeEZyb21BcmdzKGV4ZWMpOwogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9TdHJpbmcoKSByYWRpeCBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSkpOwogCiAgICAgaW50MzJfdCBpbnRlZ2Vy
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7CiAgICAgaWYgKGludGVn
ZXJWYWx1ZSA9PSBkb3VibGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGludGVnZXJWYWx1ZVRvU3Ry
aW5nKGV4ZWMsIHJhZGl4LCBpbnRlZ2VyVmFsdWUpOwogCi0gICAgaWYgKHJhZGl4ID09IDEwKSB7
Ci0gICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCB2bS0+bnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkp
OwotICAgIH0KKyAgICBpZiAocmFkaXggPT0gMTApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoJnZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoZG91YmxlVmFsdWUpKSk7
CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRv
U3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpKTsKQEAgLTUxMSwxOSArNTIxLDI1IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJl
cihleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9m
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSB4OwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0b1RoaXNOdW1i
ZXIodGhpc1ZhbHVlLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
V1RGOjptYWtlU3RyaW5nKCJ0aGlzTnVtYmVyVmFsdWUgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAi
LCBqc0Nhc3Q8SlNTdHJpbmcqPihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCB0aGlzVmFsdWUp
KS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBh
dGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhp
c1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih4KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE3LDEzICsyMTcsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSBvYmplY3RWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChvYmplY3RWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgSlNWYWx1ZSBwcm90b1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm90
b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9P
YmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMjMyLDcgKzIz
NSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBpZiAo
IWNoZWNrUHJvdG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gdHJ1ZTsKICAgICBib29sIGRp
ZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90b1ZhbHVl
LCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgQVNTRVJUX1VOVVNFRChkaWRTZXRQcm90b3R5
cGUsIHZtLmV4Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CkBAIC0zNDQsOCArMzQ2LDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb3duRW51bWVyYWIKIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2MpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWluLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNj
cmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4g
b2JqZWN0LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCog
ZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0zOTAsNyArMzk0LDcgQEAgYm9vbCB0b1By
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBpZiAoIWdldC5pc1VuZGVm
aW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlm
IChnZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3Qg
YmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00
MDUsNyArNDA5LDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQog
ICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBD
YWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3Qg
YmUgYSBmdW5jdGlvbi4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00MTcsMTIgKzQyMSwxMiBAQCBib29sIHRvUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYg
KGRlc2MudmFsdWUoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9w
ZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxl
JyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVy
dHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVy
LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTQzMCwxOSArNDM0LDI1IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24g
T2JqZWN0cy4iKSk7Ci0gICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAg
ICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGlm
ICghdG9Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0
b3IpKQorICAgIGF1dG8gc3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
ID09IHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwogICAg
IEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgIE8tPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHRydWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTyk7CisgICAgb2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShvYmopOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCkBA
IC00ODUsOCArNDk1LDExIEBAIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0
YXQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBv
biBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVj
dHMuIikpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmogPSBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSk7CiAgICAgSlNPYmplY3QqIHByb3BzID0gZXhlYy0+YXJndW1lbnQoMSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKCFwcm9wcykKQEAgLTQ5NiwxNiArNTA5LDE5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFw
cm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5
IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3Rv
LmlzT2JqZWN0KCkKICAgICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVj
dChwcm90bykpCiAgICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09iamVjdCwgYXNPYmpl
Y3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0xMjcsNiArMTI3LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzQs
NyArMTM3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAg
IEpTVmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgaWYgKGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFs
aWQgZ2V0dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKIAogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDYsMTMgKzE0OSwxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRD
b25maWd1cmFibGUodHJ1ZSk7CiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cisg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MCw3ICsxNjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgSlNWYWx1ZSBzZXQgPSBleGVjLT5hcmd1bWVudCgx
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxs
RGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImludmFsaWQg
c2V0dGVyIHVzYWdlIikpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE3Miw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvCiAgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CiAKICAgICBib29sIHNo
b3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC0yNjksNiArMjc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3Mu
dW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmlu
ZygpKTsKQEAgLTMwMyw3ICszMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICBTdHJpbmcg
bmV3U3RyaW5nID0gV1RGOjp0cnlNYWtlU3RyaW5nKCJbb2JqZWN0ICIsIFdURk1vdmUodGFnKSwg
Il0iKTsKICAgICAgICAgaWYgKCFuZXdTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBuZXdTdHJpbmcpOwogICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFn
U2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIw
MDUtMjAwOSwgMjAxMy0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MCw2ICs0MCw3IEBAIHNpemVfdCBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihDYWxsRnJhbWUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgaW50MzJfdCBsZW5ndGgxID0gczEtPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3Ro
MSkKQEAgLTQ4LDcgKzQ5LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNT
dGF0ZQogICAgIGlmICghbGVuZ3RoMikKICAgICAgICAgcmV0dXJuIHMxOwogICAgIGlmIChzdW1P
dmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMikpCi0gICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKHZt
LCBzMSwgczIpOwogfQpAQCAtNTYsMTMgKzU3LDE0IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgdTIsIGNvbnN0IFN0cmlu
ZyYgdTMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoMSA9IHUxLmxlbmd0
aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMiA9IHUyLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVu
Z3RoMyA9IHUzLmxlbmd0aCgpOwogICAgIAogICAgIGlmIChsZW5ndGgxIDwgMCB8fCBsZW5ndGgy
IDwgMCB8fCBsZW5ndGgzIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgCiAgICAgaWYgKCFsZW5ndGgxKQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywganNTdHJpbmcodm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7CkBAIC03Miw3ICs3NCw3IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MikpOwogCiAg
ICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBsZW5ndGgyLCBsZW5ndGgzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNS
b3BlU3RyaW5nOjpjcmVhdGUoZXhlYy0+dm0oKSwganNTdHJpbmcodm0sIHUxKSwganNTdHJpbmco
dm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7CiB9CkBAIC04MCwxMiArODIsMTMgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZQogQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3Ry
aW5ncywgdW5zaWduZWQgY291bnQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKICAgICBKU1JvcGVTdHJpbmc6
OlJvcGVCdWlsZGVyIHJvcGVCdWlsZGVyKCp2bSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBzdHJpbmdzWy1zdGF0aWNf
Y2FzdDxpbnQ+KGkpXS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmICghcm9wZUJ1aWxkZXIuYXBwZW5k
KHYudG9TdHJpbmcoZXhlYykpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgIH0KIAogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CkBA
IC05NCwxMyArOTcsMTQgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lz
dAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbUFyZ3VtZW50cyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNSb3BlU3Ry
aW5nOjpSb3BlQnVpbGRlciByb3BlQnVpbGRlcigqdm0pOwogICAgIHJvcGVCdWlsZGVyLmFwcGVu
ZCh0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IGV4
ZWMtPmFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3Ry
aW5nKGV4ZWMpKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICB9CiAKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw5IEBAIFByb3h5Q29u
c3RydWN0b3I6OlByb3h5Q29uc3RydWN0b3IoVk0mIHYKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVk
IHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUg
dGFyZ2V0IGFuZCB0aGUgaGFuZGxlciIpKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwpAQCAtODEsNyArODIsOCBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5LnJldm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxl
ZCIpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
KyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQ
cm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxs
ZWQiKSk7CiB9CiAKIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtOTQs
OCArOTYsOSBAQCB2b2lkIFByb3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNCiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKICAgICBpZiAoZXhlYy0+bmV3VGFyZ2V0KCkuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFy
Z2V0IG9mIFByb3h5IGNvbnN0cnVjdCBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgibmV3
LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CiAK
ICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDAp
OwpAQCAtMTExLDcgKzExNCw4IEBAIENvbnN0cnVjdFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3QKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb3h5IikpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5IikpOwogfQogCiBDYWxsVHlwZSBQcm94
eUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpAQCAtNzksMTkgKzgwLDIwIEBAIFN0cnVj
dHVyZSogUHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmcKIAogdm9pZCBQcm94eU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGFyZ2V0LCBK
U1ZhbHVlIGhhbmRsZXIpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQSBQ
cm94eSdzICd0YXJnZXQnIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91
bGQgYmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChQcm94
eU9iamVjdCogdGFyZ2V0QXNQcm94eSA9IGpzRHluYW1pY0Nhc3Q8UHJveHlPYmplY3QqPih0YXJn
ZXQpKSB7CiAgICAgICAgIGlmICh0YXJnZXRBc1Byb3h5LT5oYW5kbGVyKCkuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94
eSdzIGhhbmRsZXIgaXMgYW5vdGhlciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91
bGQgbm90IGhhdmUgYmVlbiByZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94eSdzIGhhbmRsZXIgaXMgYW5vdGhl
ciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91bGQgbm90IGhhdmUgYmVlbiByZXZv
a2VkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgh
aGFuZGxlci5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4gT2JqZWN0IikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBIFByb3h5J3Mg
J2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTExNiw4ICsxMTgsOSBAQCBzdGF0aWMgY29uc3QgY2hhciogc19wcm94eUFscmVhZHlS
ZXZva2VkCiBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm94eU9iamVjdCogcHJveHlPYmplY3QsIEpTVmFsdWUgcmVjZWl2ZXIsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVU
b1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMzUsNyArMTM4LDcgQEAgc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSBwcm94eU9iamVjdC0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVy
cm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtMTU5LDEwICsxNjIs
MTAgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogICAgIGlmICh0
YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAh
ZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHRyYXBS
ZXN1bHQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJh
YmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFz
IHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQn
IHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBz
aG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3BlcnR5IikpOwogICAg
ICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLmdldHRlcigpLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHBy
b3BlcnR5IHdpdGhvdXQgYSBnZXR0ZXIgc2hvdWxkIGJlIHVuZGVmaW5lZCIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNz
b3IgcHJvcGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIikpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xODUsOCArMTg4LDkgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUdldChFeGVjU3RhdGUqIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0
aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNPYmplY3QqIHRhcmdldCA9
IHRoaXMtPnRhcmdldCgpOwpAQCAtMjAwLDcgKzIwNCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1JbnRlcm5hbE1ldGhvZEcKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+
aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicmVzdWx0IG9mICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBhbiBPYmplY3Qg
b3IgdW5kZWZpbmVkIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBjYWxsIHNo
b3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMjM0LDcgKzIzOCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5RGVzY3Jp
cHRvckRlZmluZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghdGFy
Z2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29u
ZmlndXJhYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJXaGVuIHRoZSByZXN1bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgaXMgdW5kZWZpbmVkIHRoZSB0YXJnZXQgbXVzdCBiZSBjb25maWd1cmFibGUiKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IHRoaXMg
ZG9lc24ndCB3b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJveHkuIFdlIGRvbid0IGhhdmUg
aXNFeHRlbnNpYmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgZml0cyB3LyBQcm94eXMuCkBA
IC0yNDYsNyArMjUwLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9k
RwogICAgICAgICAgICAgLy8gRklYTUU6IENvbWUgdXAgd2l0aCBhIHRlc3QgZm9yIHRoaXMgZXJy
b3IuIEknbSBub3Qgc3VyZSBob3cgdG8gYmVjYXVzZQogICAgICAgICAgICAgLy8gT2JqZWN0LnNl
YWwobykgd2lsbCBtYWtlIGFsbCBmaWVsZHMgW1tDb25maWd1cmFibGVdXSBmYWxzZS4KICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzNzYK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXaGVuICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgJ3RhcmdldCcg
b2YgYSBQcm94eSBzaG91bGQgYmUgZXh0ZW5zaWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hv
dWxkIGJlIGV4dGVuc2libGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtMjY0LDEzICsyNjgsMTMgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kRwogICAgIGJvb2wgdmFsaWQgPSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLAogICAgICAg
ICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmlu
ZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlmICgh
dmFsaWQpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJl
c3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGli
bGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Rl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5
RGVzY3JpcHRvckRlZmluZWQgfHwgdGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZp
Z3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3duIHByb3Bl
cnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFyZ2V0JyIp
KTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNv
bmZpZ3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3duIHBy
b3BlcnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFyZ2V0
JyIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI5
MSw4ICsyOTUsOSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwpAQCAtMzA3LDcgKzMxMiw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKIAogICAgIEpTVmFsdWUgaGFu
ZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzM4LDE0ICszNDMsMTQg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaXNQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKSB7
CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycg
bXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7Cisg
ICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydGllcyIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAg
ICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdo
YXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmpl
Y3Qgd2l0aCBhIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3Qg
cmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmplY3Qgd2l0aCBh
IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM1Niw4ICszNjEsMTAgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiBib29sIFByb3h5T2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFleGVjLT52
bSgpLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBzbG90LmRpc2FibGVDYWNo
aW5nKCk7CkBAIC0zOTQsOCArNDAxLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZh
dWx0UHV0RnVuYwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0UHV0KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC00MDQsNyArNDEyLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChF
eGVjU3RhdGUqIAogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7
CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2Up
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC00MzYsMTEgKzQ0NCwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KEV4ZWNTdGF0ZSogCiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmICFk
ZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghc2FtZVZhbHVlKGV4ZWMs
IGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBh
IG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBz
aG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9u
IHRoZSAndGFyZ2V0JyIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBhIG5vbi1jb25m
aWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBzaG91bGQgZWl0
aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9uIHRoZSAndGFy
Z2V0JyIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vz
c29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgaGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3Ig
cHJvcGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDg2LDE0ICs0OTQsMTUg
QEAgYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0
KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0g
anNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxl
clZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2Vk
RXJyb3JNZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVj
dCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC01MzUsMTQgKzU0
NCwxNSBAQCBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQogICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1
ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJl
YWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nh
c3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAt
NTY5LDcgKzU3OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJv
bSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hv
dWxkIGJlIGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKQEAgLTU5MCw4ICs2MDAsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0
ZUZ1bmN0aW9uCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uIHBlcmZv
cm1EZWZhdWx0RGVsZXRlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MDAsNyArNjExLDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MzEsNyArNjQyLDcgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBkZXNjcmlwdG9yOwogICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmICghZGVzY3JpcHRv
ci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91
bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1
cmFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91bGQg
cmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFi
bGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC02
NjYsMTQgKzY3NywxNSBAQCBib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNl
U29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVy
KCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC03MDIsNyArNzE0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bVByZXZlbnRFeHRlbnNpbwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0
YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5J3MgJ3ByZXZlbnRFeHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2gg
aXRzIHRhcmdldCBpcyBleHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTcxOCwx
NCArNzMwLDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2IKIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAg
aWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlB
bHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC03NTcsMTEgKzc3MCwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRl
bnNpYmxlKEV4CiAgICAgaWYgKHRyYXBSZXN1bHRBc0Jvb2wgIT0gaXNUYXJnZXRFeHRlbnNpYmxl
KSB7CiAgICAgICAgIGlmIChpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgICAgIEFTU0VS
VCghdHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5l
ZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0
dXJuZWQgdHJ1ZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5l
ZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0
dXJuZWQgdHJ1ZSIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNU
YXJnZXRFeHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNCb29sKTsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBv
YmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRh
cmdldCBpcyBub24tZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC03NzYsOCArNzg5LDkgQEAgYm9vbCBQcm94eU9i
amVjdDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KgogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURl
ZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC03OTEsNyArODA1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5k
bGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC04MzYsMTEgKzg1MCwxMSBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtRGVmaW5lT3duUHJvcGVyCiAKICAgICBpZiAoIWlzVGFyZ2V0RGVzY3JpcHRvckRlZmlu
ZWQpIHsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0
eScgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1
cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJv
eHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0IGlzIG5vbi1leHRl
bnNpYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGlmIChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSkgewotICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFw
IHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVuIHRob3VnaCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVu
ZGVmaW5lZCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBm
b3IgYSBub24tY29uZmlndXJhYmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIikpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTg1MywxMSArODY3LDExIEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKICAgICBib29sIHRocm93
RXhjZXB0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBpc0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5h
bWUsIHRhcmdldElzRXh0ZW5zaWJsZSwgZGVzY3JpcHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3Vy
cmVudCwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlmICghaXNDb21wYXRpYmxlRGVzY3JpcHRvcikg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAn
ZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFy
Z2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIp
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQ
cm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHRyYXAncyBpbnB1dCBkZXNj
cmlwdG9yIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChzZXR0aW5n
Q29uZmlndXJhYmxlVG9GYWxzZSAmJiB0YXJnZXREZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdk
ZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydHkgb24gaXRzIHRhcmdldCBldmVuIHRob3VnaCB0aGUgaW5wdXQgZGVzY3JpcHRvciB0byB0
aGUgdHJhcCBzYWlkIGl0IG11c3QgZG8gc28iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAg
ZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJnZXQg
ZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBtdXN0
IGRvIHNvIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtODczLDEz
ICs4ODcsMTQgQEAgYm9vbCBQcm94eU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYgogdm9p
ZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgdHJhcFJlc3VsdCwgRW51bWVyYXRpb25Nb2RlIGVudW1lcmF0
aW9uTW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsK
ICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTk2OSw3ICs5ODQsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJv
cGVydHlOCiAKICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Tm9uQ29u
ZmlndXJhYmxlS2V5cykgewogICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tl
ZFJlc3VsdEtleXMoaW1wbCkgPT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyAndGFyZ2V0JyBo
YXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwgIicgdGhh
dCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7CisgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJQcm94eSBv
YmplY3QncyAndGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0
cmluZyhpbXBsKSwgIicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktl
eXMnIHRyYXAiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC05
NzksMTMgKzk5NCwxMyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlO
CiAKICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Q29uZmlndXJhYmxl
S2V5cykgewogICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tlZFJlc3VsdEtl
eXMoaW1wbCkgPT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyBub24tZXh0ZW5zaWJsZSAndGFy
Z2V0JyBoYXMgY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQg
d2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiUHJveHkgb2Jq
ZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSAn
IiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9tIHRoZSAn
b3duS2V5cycgdHJhcCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBt
ZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1leHRl
bnNpYmxlIHRhcmdldCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCByZXR1cm5lZCBh
IGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgbm9uLWV4dGVuc2libGUgdGFyZ2V0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTAyMiwxNCArMTAzNywxNSBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgQVNTRVJUKHByb3RvdHlw
ZS5pc09iamVjdCgpIHx8IHByb3RvdHlwZS5pc051bGwoKSk7CiAKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFs
dWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA1Nyw3ICsx
MDczLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIAog
ICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNh
bnRTZXQpCi0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxk
IG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQg
dG8gc3VjY2VlZCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRp
Y2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlv
biB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTA3MSw3ICsxMDg3LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFBy
b3RvdHlwZShFeAogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3Nl
dFByb3RvdHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1l
eHRlbnNpYmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMg
dGhlIGN1cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxz
ZSIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIGl0cyB0YXJn
ZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDg2
LDE0ICsxMTAyLDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCoK
IEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICB9CiAKQEAgLTExMTUsNyArMTEzMiw3IEBAIEpTVmFsdWUgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKIAogICAg
IGlmICghdHJhcFJlc3VsdC5pc09iamVjdCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVy
J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBv
ciBudWxsIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhl
ciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgfQogCkBAIC0xMTI5LDcgKzExNDYsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0UHJvdG90eXBlCiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHRhcmdldFByb3RvdHlwZSwgdHJh
cFJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRhcmdl
dCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5cGUi
KSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVuc2libGUgdGFyZ2V0
IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3RvdHlwZSIp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUsMjYgKzk1LDI5IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHYKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2Vj
LXJlZmxlY3QuY29uc3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3Ry
dWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKIAog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGU7CiAgICAgaWYgKCF0YXJnZXQuaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3Rv
ciIpKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMik7CiAgICAgICAgIGlmICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBj
b25zdHJ1Y3RvciBpZiBwcmVzZW50IikpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5j
b25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYg
cHJlc2VudCIpKSk7CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwogICAgIEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+YXJndW1lbnQoMSkpOwogICAgIGlmICghYXJndW1lbnRzT2JqZWN0KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAgIGNyZWF0ZUxpc3RGcm9t
QXJyYXlMaWtlKGV4ZWMsIGFyZ3VtZW50c09iamVjdCwgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMs
IEFTQ0lJTGl0ZXJhbCgiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiKSwgWyZdIChKU1Zh
bHVlIHZhbHVlLCBSdW50aW1lVHlwZSkgLT4gYm9vbCB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQodmFsdWUpOwpAQCAtMTI5LDkgKzEzMiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LmRlZmluZXByb3BlcnR5CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxl
Y3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCIpKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NSwyNSArMTUxLDMxIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBSZWZsZWN0
LmRlZmluZVByb3BlcnR5IHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGUgZGVmaW5l
T3duUHJvcGVydHkgb3BlcmF0aW9uIGZhaWxzLgogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSBmYWxz
ZTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93
blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdykpKTsKIH0KIAogLy8gRklYTUU6IFJlZmxlY3QuZW51bWVyYXRlIGlzIHJlbW92
ZWQgaW4gRUNNQSAyMDE2IGRyYWZ0LgogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlZmxlY3QuZW51bWVyYXRlCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RFbnVtZXJhdGUoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5lbnVtZXJhdGUgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVmbGVjdC5lbnVtZXJhdGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZSgpLCBhc09iamVjdCh0YXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVj
dC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJv
cGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTgwLDkg
KzE5MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldG93bnByb3BlcnR5
ZGVzY3JpcHRvcgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgYXV0byBrZXkgPSBleGVjLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE5NCwxOCArMjA5LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamUKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0
cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdl
dFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXRQcm90
b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yo
ZXhlYywgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBh
biBvYmplY3QiKSkpOwogCiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSBhc09iamVjdCh0YXJnZXQp
LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MjE2LDIwICsyMzcsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5vd25rZXlz
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxl
Y3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvd25Qcm9w
ZXJ0eUtleXMoZXhlYywganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9k
ZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2
ZW50ZXh0ZW5zaW9ucwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIGJv
b2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHJldmVudEV4dGVu
c2lvbnMob2JqZWN0LCBleGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwpAQCAtMjM4
LDkgKzI2NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0IHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkp
OwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OwpAQCAtMjU0LDI1ICsyODQsMjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZQogICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFw
cGVuIGluIHN0cmljdCBtb2RlLgogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxz
ZTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXRP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJv
dG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUg
dGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXRQcm90b3R5
cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBK
U1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm90by5pc09iamVj
dCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2Yg
cmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiKSkpOwogCiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKICAgICBpZiAoIWNoZWNrUHJv
dG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZTsKICAgICBib29sIGRpZFNl
dFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90bywgc2hvdWxk
VGhyb3dJZkNhbnRTZXQpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw5IEBAIGlubGluZSBT
dHJ1Y3R1cmUqIGdldFJlZ0V4cFN0cnVjdHVyZShFeGUKIAogaW5saW5lIFJlZ0V4cEZsYWdzIHRv
RmxhZ3MoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZsYWdzKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKGZsYWdzLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBOb0ZsYWdzOwogICAg
IEpTU3RyaW5nKiBmbGFnc1N0cmluZyA9IGZsYWdzLnRvU3RyaW5nKGV4ZWMpOwpAQCAtMjIyLDEz
ICsyMjUsMTUgQEAgaW5saW5lIFJlZ0V4cEZsYWdzIHRvRmxhZ3MoRXhlY1N0YXRlKiBleAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRGbGFnczsK
ICAgICBpZiAocmVzdWx0ID09IEludmFsaWRGbGFncykKLSAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNv
bnN0cnVjdG9yLiIpKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG5ld1RhcmdldCwgSlNWYWx1ZSBwYXR0ZXJuQXJnLCBKU1ZhbHVlIGZsYWdzQXJnKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIHBhdHRlcm4gPSBwYXR0ZXJuQXJnLmlzVW5kZWZpbmVkKCkg
PyBlbXB0eVN0cmluZygpIDogcGF0dGVybkFyZy50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIzOSw3ICsyNDQsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHJlZ0V4cENyZWF0ZShFeGVjU3Rh
dGUqCiAKICAgICBSZWdFeHAqIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBm
bGFncyk7CiAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JN
ZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldFJlZ0V4cFN0cnVjdHVyZShleGVjLCBnbG9iYWxPYmpl
Y3QsIG5ld1RhcmdldCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDggQEAgTWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0
OjptYXRjaChFeGVjU3RhdAogdGVtcGxhdGU8dHlwZW5hbWUgRml4RW5kRnVuYz4KIEpTVmFsdWUg
Y29sbGVjdE1hdGNoZXMoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcs
IGNvbnN0IFN0cmluZyYgcywgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yLCBSZWdFeHAq
IHJlZ0V4cCwgY29uc3QgRml4RW5kRnVuYyYgZml4RW5kKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IGNvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCAwKTsKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtMTk3LDcgKzE5OSw3IEBAIEpT
VmFsdWUgY29sbGVjdE1hdGNoZXMoVk0mIHZtLCBFeGVjU3RhdGUKICAgICAgICAgICAgIE1hdGNo
UmVzdWx0IHNhdmVkUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICAgICAgZG8gewogICAgICAgICAg
ICAgICAgIGlmIChhcnJheS0+bGVuZ3RoKCkgKyBtYXRjaENvdW50ID49IE1BWF9TVE9SQUdFX1ZF
Q1RPUl9MRU5HVEgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVnRXhw
LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKQEAg
LTQzLDIyICs0NCwyOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldExhc3RJbmRleChFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5kZXgpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAg
ICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYm9vbCBzZXRM
YXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRU
aHJvdykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBpZiAoTElLRUxZKG1f
bGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4LnNldChleGVj
LT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNWYWx1
ZSBnZXRMYXN0SW5kZXgoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw5ICs5OCwxMiBAQCB2b2lkIFJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJl
bihKU0NlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVz
dEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhS
ZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMp
OwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTA5LDkgKzExMiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
Z09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyMCw5ICsxMjYsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzMsOSArMTQyLDEyIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgUmVnRXhwKiByZWdFeHA7CiAgICAgSlNW
YWx1ZSBhcmcwID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC0xNDMsNyArMTU1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgIAogICAgIGlmIChhcmcwLmlu
aGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhw
IGZyb20gYW5vdGhlci4iKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3Ry
dWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKTsKICAgICAgICAgcmVnRXhwID0gYXNS
ZWdFeHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmlu
ZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKQEAgLTE1NiwxNSArMTY4LDE1IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+dm0oKSwgcGF0dGVybiwgZmxhZ3Mp
OworICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwog
ICAgIH0KIAogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3Nh
Z2UoKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAKLSAgICBhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5zZXRSZWdFeHAoZXhlYy0+dm0oKSwgcmVnRXhwKTsKKyAgICBh
c1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5zZXRSZWdFeHAodm0sIHJlZ0V4cCk7CiAgICAgYXNS
ZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIH0KQEAgLTIxMiw5ICsyMjQsMTIgQEAgc3Rh
dGljIGlubGluZSBGbGFnc1N0cmluZyBmbGFnc1N0cmluZyhFeAogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsK
IApAQCAtMjIyLDcgKzIzNyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5W
YWx1ZSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgc291cmNlVmFs
dWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0yNDIsMTEgKzI1NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlw
ZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+Z2xvYmFs
KCkpKTsKQEAgLTI1NCwxMSArMjcxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlcklnbm9yZUNhc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0
aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5p
Z25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5p
Z25vcmVDYXNlKCkpKTsKQEAgLTI2NiwxMSArMjg2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwogICAgIH0KIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5tdWx0aWxpbmUoKSkpOwpAQCAtMjc4LDExICszMDEsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuc3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5zdGlja3koKSkpOwpAQCAtMjkwLDExICszMTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT51bmljb2RlKCkpKTsKQEAgLTMwMiw5ICszMzEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiKSk7CiAKICAg
ICBhdXRvIGZsYWdzID0gZmxhZ3NTdHJpbmcoZXhlYywgYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNDIxLDExICs0NTMsMTQgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyUwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkp
KSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5m
bygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
QVNDSUlMaXRlcmFsKCIoPzopIikpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLnNvdXJjZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCIpKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnJlZ0V4cCgpLT5wYXR0ZXJuKCk7CkBAIC01MzksNiArNTc0LDcgQEAgdm9pZCBnZW5l
cmljU3BsaXQoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Nw
bGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBbaGFu
ZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgLy8gMi4g
W2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgpAQCAtNjQ0LDcgKzY4MCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgfSk7CiAgICAgCiAgICAgaWYgKHJl
c3VsdExlbmd0aCArIGRyeVJ1bkNvdW50ID49IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlamVjdC5oCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOCArMzMsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGlubGluZSBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhy
b3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIG1lc3NhZ2UpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MSArNTEsMTYgQEAgdm9pZCBTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlNldCIpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXQiKSk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRl
cm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0
dXJlKiBzZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUo
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzIsNyArNzcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgQ2FsbERhdGEgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYg
KGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGZvckVh
Y2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTAgKzUwLDEzIEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1
bmNOZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHJlc3VsdDsKICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nh
c3Q8SlNTZXRJdGVyYXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRl
cmF0b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBh
IG5vbi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNhbGwgU2V0SXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLVNldEl0ZXJhdG9yIG9iamVjdCIpKSk7
CiAKICAgICBpZiAoaXRlcmF0b3ItPm5leHQoY2FsbEZyYW1lLCByZXN1bHQpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KGNhbGxGcmFt
ZSwgcmVzdWx0LCBmYWxzZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MyArODQsMTYgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bQogCiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVO
b3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKSk7CisgICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwg
dGhpc1ZhbHVlKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU1NldCog
c2V0ID0ganNEeW5hbWljQ2FzdDxKU1NldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFzZXQpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVy
YXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1TZXQgb2JqZWN0IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
cmV0dXJuIHNldDsKQEAgLTE0MSwxOCArMTQ0LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW4KICAgICAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0
UHJvdG9GdW5jVmFsdWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU1NldCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUt
PnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0
cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU2V0KiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU1Nl
dCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIFNldCBlbnRyeSBpdGVyYXRvciBmb3IgYSBub24tU2V0IG9i
amVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXRJdGVyYXRvcjo6Y3Jl
YXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIFNldCBlbnRyeSBpdGVyYXRvciBmb3Ig
YSBub24tU2V0IG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXRJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc1NldChFeGVjU3RhdGUq
IGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEy
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtOTAsNiArOTAsOCBAQCBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRS
ZXN1bHQgU3BhcnNlQXJyCiAKIGJvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAg
ICAKICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKQEAgLTEwMSw3ICsxMDMs
NyBAQCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTCiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAg
ICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKQEAgLTE0OCwxNCArMTUwLDE3IEBAIHZvaWQgU3BhcnNlQXJyYXlF
bnRyeTo6Z2V0KFByb3BlcnR5RGVzY3IKIAogYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFw
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSkgewogICAgICAgICBpZiAoYXR0cmlidXRlcyAm
IFJlYWRPbmx5KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHNldChleGVjLT52bSgpLCBtYXAsIHZhbHVlKTsKKyAg
ICAgICAgc2V0KHZtLCBtYXAsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC05MCw2ICs5MCw5IEBAIEpTQ2VsbCogSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9t
Q2hhckNvZGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CkBAIC0xMDIsNyArMTA1
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogICAgICAgICB1
aW50MzJfdCBjb2RlUG9pbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29kZVBvaW50QXNEb3Vi
bGUpOwogCiAgICAgICAgIGlmIChjb2RlUG9pbnQgIT0gY29kZVBvaW50QXNEb3VibGUgfHwgY29k
ZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJndW1lbnRzIGNv
bnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyIpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlz
IG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyIpKSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1Q
KGNvZGVQb2ludCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hh
cj4oY29kZVBvaW50KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC02Myw2ICs2Myw5IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUkKIAogYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZ
KGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC03MCw3ICs3Myw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQpAQCAtODAsMTAgKzgzLDEzIEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogYm9vbCBTdHJpbmdP
YmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODksNiArMjg5LDkgQEAgc3RydWN0IFN0cmluZ1JhbmdlIHsKIAogc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBleGVj
LCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
UmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAocmFuZ2VDb3VudCA9PSAxKSB7CiAgICAgICAgIGludCBzb3VyY2VTaXplID0gc291
cmNlLmxlbmd0aCgpOwogICAgICAgICBpbnQgcG9zaXRpb24gPSBzdWJzdHJpbmdSYW5nZXNbMF0u
cG9zaXRpb247CkBAIC0zMTEsNyArMzE0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1NwbGljZVN1YgogICAgICAgICBjb25zdCBMQ2hhciogc291cmNlRGF0YSA9IHNvdXJjZS5j
aGFyYWN0ZXJzOCgpOwogICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOwogICAgICAgICBpZiAoIWltcGwpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAgICAg
aW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3Vu
dDsgaSsrKSB7CkBAIC0zMjksNyArMzMyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1NwbGljZVN1YgogCiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50IGJ1ZmZlclBvcyA9IDA7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsKQEAgLTM0NCw2ICsz
NDcsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAKIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMo
RXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNv
bnN0IFN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKHJhbmdlQ291bnQgPT0gMSAmJiBzZXBhcmF0b3JDb3VudCA9PSAwKSB7CiAg
ICAgICAgIGludCBzb3VyY2VTaXplID0gc291cmNlLmxlbmd0aCgpOwogICAgICAgICBpbnQgcG9z
aXRpb24gPSBzdWJzdHJpbmdSYW5nZXNbMF0ucG9zaXRpb247CkBAIC0zNjQsNyArMzcwLDcgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgICAgICAgICAgYWxs
U2VwYXJhdG9yczhCaXQgPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKHRvdGFsTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAg
ICBpZiAoIXRvdGFsTGVuZ3RoKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsK
QEAgLTM3NSw3ICszODEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3ViCiAKICAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh0b3RhbExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICAgICAgaWYgKCFpbXBs
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
ICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRvckNvdW50KTsK
ICAgICAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CkBAIC00MDAsNyArNDA2LDcgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgIFVDaGFyKiBidWZmZXI7CiAgICAg
YXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0
aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50IG1heENvdW50ID0gc3RkOjptYXgocmFu
Z2VDb3VudCwgc2VwYXJhdG9yQ291bnQpOwogICAgIGludCBidWZmZXJQb3MgPSAwOwpAQCAtNzUy
LDEwICs3NTgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNrT2JqZWN0Q29lcmNpYmxlKAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIEpTU3RyaW5n
KiByZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlJiBleGVjLCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
ciwgdW5zaWduZWQgcmVwZWF0Q291bnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENoYXJhY3RlclR5
cGUqIGJ1ZmZlciA9IG51bGxwdHI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChyZXBlYXRDb3VudCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZleGVjKTsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKCZleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtNzk3LDggKzgwNiwxMCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJl
cGxhY2UoCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2UoCiAgICAgVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHNlYXJjaFZhbHVl
LCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC04NDEsNiAr
ODUyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgLy8gQWxzbyB1c2VkIGZvciB2YWx1ZU9mLgogCkBAIC04NTAsMTQg
Kzg2NCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAg
aWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhTdHJpbmdPYmplY3Q6OmluZm8oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmdPYmplY3QodGhpc1ZhbHVlKS0+aW50ZXJuYWxW
YWx1ZSgpKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmc6OlNhZmVWaWV3IHN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKQEAgLTg3NCw5ICs4OTEsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmc6OlNhZmVWaWV3IHN0cmluZyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKQEAgLTkwMyw5ICs5MjMsMTIg
QEAgc3RhdGljIGlubGluZSBVQ2hhcjMyIGNvZGVQb2ludEF0KGNvbnN0IAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1
ZS50b1dURlN0cmluZyhleGVjKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CkBAIC05MjksMjAgKzk1MiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Q29uY2F0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N0cmluZygp
ICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHRoaXNWYWx1ZSksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSk7CiAKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZ0Zyb21Bcmd1bWVudHMoZXhlYywgdGhpc1ZhbHVl
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQo
MSk7CkBAIC05NzcsOSArMTAwNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
TGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBK
U1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwpAQCAtMTAxNCw5ICsxMDQ2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTIwMSw5ICsxMjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgdW5zaWduZWQgbGVuOwogICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IDA7CiAgICAgU3RyaW5n
IHVTdHJpbmc7CkBAIC0xMjU3LDkgKzEyOTUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBidWlsdGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMjk3LDkgKzEzMzgsMTIgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmlu
ZyBsb3dlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7
CkBAIC0xMzEwLDkgKzEzNTQsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Rv
VXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJj
aWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3Ry
aW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYg
cyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmluZyB1cHBlcmNhc2VkU3RyaW5nID0gcy5j
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7CkBAIC0xMzIzLDkgKzEzNzAsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEzNDAsMTAg
KzEzOTAsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogI2lm
IEVOQUJMRShJTlRMKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3Rh
dGUqIHN0YXRlLCBpbnQzMl90ICgqY29udmVydENhc2UpKFVDaGFyKiwgaW50MzJfdCwgY29uc3Qg
VUNoYXIqLCBpbnQzMl90LCBjb25zdCBjaGFyKiwgVUVycm9yQ29kZSopKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIDEuIExldCBPIGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1
ZSkuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCBzY29wZSk7CiAKICAgICAvLyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICBKU1N0cmlu
Zyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhzdGF0ZSk7CkBAIC0xNDExLDEwICsxNDY0LDEw
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1MKICAgICAgICAgVmVj
dG9yPFVDaGFyPiBidWZmZXIocmVzdWx0TGVuZ3RoKTsKICAgICAgICAgY29udmVydENhc2UoYnVm
ZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2
aWV3TGVuZ3RoLCB1dGY4TG9jYWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKICAgICAgICAgaWYg
KFVfRkFJTFVSRShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKICAgICAgICAgbG93ZXIg
PSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgdV9lcnJvck5hbWUo
ZXJyb3IpKTsKIAogICAgIC8vIDE4LiBSZXR1cm4gTC4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHN0YXRlLCBsb3dlcikpOwpAQCAtMTQzOCw5ICsxNDkxLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCaWcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NDksOSArMTUwNSwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU21hbGwoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NjAsOSArMTUxOSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NzEsOSArMTUzMywxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ4Miw5ICsxNTQ3LDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGaXhlZChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5Myw5ICsxNTYx
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTA0LDkg
KzE1NzUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0cmlrZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUx
NSw5ICsxNTg5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWIoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1
MjYsOSArMTYwMywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3VwKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NTM3LDkgKzE2MTcsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xv
cihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMTU1Myw5ICsxNjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNG
b250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMTYwNSw5ICsxNjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTE2MjEsOSArMTcxMCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTY2Nyw4ICsxNzU5LDExIEBAIGVudW0gewogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUgdHJpbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBpbnQgdHJpbUtpbmQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcg
c3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTcy
MCwyMSArMTgxNSwyMyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1bmNhdGVU
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0
aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIFN0cmluZyBzdHJp
bmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24g
PSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJF
eHByZXNzaW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTc1NiwyMSArMTg1MywyMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAg
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEw
KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUu
ZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQpAQCAtMTgwOCwyMSArMTkwNywyMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
SW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBTdHJp
bmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHBy
ZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhw
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAog
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTg1NSw0MiArMTk1Niw1MSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ0l0ZXJh
dG9yU3RydWN0dXJlKCksIHN0cmluZykpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBub3JtYWxpemUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVQ2hhciogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3Ro
LCBVTm9ybWFsaXphdGlvbk1vZGUgZm9ybSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGludDMyX3Qgbm9ybWFsaXplZFN0cmluZ0xl
bmd0aCA9IHVub3JtX25vcm1hbGl6ZShzb3VyY2UsIHNvdXJjZUxlbmd0aCwgZm9ybSwgMCwgbnVs
bHB0ciwgMCwgJnN0YXR1cyk7CiAKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykgJiYgc3RhdHVz
ICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CiAgICAgICAgIC8vIFRoZSBiZWhhdmlvciBp
cyBub3Qgc3BlY2lmaWVkIHdoZW4gbm9ybWFsaXplIGZhaWxzLgogICAgICAgICAvLyBOb3cgd2Ug
dGhyb3cgYSB0eXBlIGVyb3JyIHNpbmNlIGl0IHNlZW1zIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBzdHJpbmcgYXJlIGludmFsaWQuCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAK
ICAgICBVQ2hhciogYnVmZmVyID0gbnVsbHB0cjsKICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICB1bm9ybV9ub3JtYWxpemUoc291cmNl
LCBzb3VyY2VMZW5ndGgsIGZvcm0sIDAsIGJ1ZmZlciwgbm9ybWFsaXplZFN0cmluZ0xlbmd0aCwg
JnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nOjpTYWZlVmll
dyBzb3VyY2UgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTkxMSw3ICsyMDIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICBlbHNlIGlmIChmb3JtU3RyaW5nID09ICJORktE
IikKICAgICAgICAgICAgIGZvcm0gPSBVTk9STV9ORktEOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlvbiBmb3Jt
IikpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBh
bnkgbm9ybWFsaXphdGlvbiBmb3JtIikpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCBzb3VyY2UuZ2V0KCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCksIHNvdXJjZS5sZW5ndGgoKSwgZm9ybSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlz
aW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxMS0yMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDcgKzI4LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092ZXJm
bG93RXJyb3IoKQogewotICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1f
ZXhlYyk7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihtX2V4ZWMsIHNjb3BlKTsKIH0KIAogSlNWYWx1ZSBTdHJpbmdSZWN1cnNpb25DaGVja2Vy
OjplbXB0eVN0cmluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtODcsNyArODcsOSBAQCBKU09iamVjdCogU3ltYm9sOjp0
b09iamVjdChFeGVjU3RhdGUqIGV4CiAKIGRvdWJsZSBTeW1ib2w6OnRvTnVtYmVyKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgbnVtYmVyIikpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0
IGEgc3ltYm9sIHRvIGEgbnVtYmVyIikpOwogICAgIHJldHVybiAwLjA7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTEwLDE2ICsxMTAsMTkgQEAgY29uc3QgY2hhciog
U3ltYm9sS2V5Rm9yVHlwZUVycm9yID0gIlN5bQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXN5bWJvbFZhbHVlLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgU3ltYm9sS2V5Rm9yVHlwZUVycm9yKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJv
bEtleUZvclR5cGVFcnJvcikpOwogCiAgICAgU3ltYm9sSW1wbCogdWlkID0gYXNTeW1ib2woc3lt
Ym9sVmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpOwogICAgIGlmICghdWlkLT5zeW1ib2xSZWdp
c3RyeSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmZXhlYy0+dm0oKS5zeW1ib2xS
ZWdpc3RyeSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGV4
ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS5rZXlGb3JTeW1ib2woKnVpZCkpKTsKKyAgICBBU1NF
UlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHZtLnN5bWJvbFJlZ2lzdHJ5KCku
a2V5Rm9yU3ltYm9sKCp1aWQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC03MiwxNiArNzIsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFN5
bWJvbFZhbHVlT2ZUeXBlRXJybwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgU3ltYm9sKiBzeW1i
b2wgPSBudWxscHRyOwogICAgIGlmICh0aGlzVmFsdWUuaXNTeW1ib2woKSkKICAgICAgICAgc3lt
Ym9sID0gYXNTeW1ib2wodGhpc1ZhbHVlKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7CiAgICAgICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKICAgICAgICAgaWYg
KCF0aGlzT2JqZWN0LT5pbmhlcml0cyhTeW1ib2xPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9s
VG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbChqc0Nhc3Q8U3lt
Ym9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiAgICAgfQogCkBAIC05
MCwxNiArOTMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzU3ltYm9sKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFN5bWJv
bFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pbmhlcml0
cyhTeW1ib2xPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rocm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCisjaWYg
RU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKworbmFtZXNwYWNlIHsKKworLy8gTG9n
cyBhbGwgVGhyb3dTY29wZSBhY3Rpdml0eSB0byBoZWxwIGRlYnVnIHRoZSBzb3VyY2Ugb2YgYSB2
ZXJpZmljYXRpb24gZmFpbHVyZS4KK2Jvb2wgdHJhY2VPbiA9IGZhbHNlOworCisvLyBBIG1vcmUg
dmVyYm9zZSBsb2dnaW5nIG9wdGlvbiB0byBkdW1wIHRoZSBDKysgc3RhY2sgdHJhY2UgYXQgc3Ry
YXRlZ2ljIHBvaW50cyB0byBhaWQgZGVidWdnaW5nLgorYm9vbCB0cmFjZVdpdGhTdGFja1RyYWNl
cyA9IGZhbHNlOworCisvLyBEaXNhYmxlZCB0ZW1wb3JhcmlseSB1bnRpbCBhbGwga25vd24gdmVy
aWZpY2F0aW9uIGZhaWx1cmVzIGFyZSBmaXhlZC4KK2Jvb2wgdmVyaWZpY2F0aW9uT24gPSBmYWxz
ZTsKKwordW5zaWduZWQgdHJhY2VDb3VudCA9IDA7Cit9OworCisvKgorICAgIFRocm93U2NvcGUg
dmVyaWZpY2F0aW9uIHdvcmtzIHRvIHNpbXVsYXRlIGV4Y2VwdGlvbiB0aHJvd3MgYW5kIGNhdGNo
IGNhc2VzIHdoZXJlCisgICAgZXhjZXB0aW9uIGNoZWNrcyBhcmUgbWlzc2luZy4gVGhpcyBpcyBo
b3cgaXQgd29ya3M6CisKKyAxLiBUaGUgVk0gaGFzIGEgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0
IHRoYXQgaW5kaWNhdGVzIHdoZXJlIGFuIGV4Y2VwdGlvbiBjaGVjayBpcworICAgIG5lZWRlZC4g
WW91IGNhbiB0aGluayBvZiB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0IGJlaW5nIHNldCBh
cyBhIHNpbXVsYXRlZAorICAgIHRocm93LgorCisgMi4gRXZlcnkgdGhyb3cgc2l0ZSBtdXN0IGRl
Y2xhcmUgYSBUaHJvd1Njb3BlIGluc3RhbmNlIHVzaW5nIERFQ0xBUkVfVEhST1dfU0NPUEUgYXQK
KyAgICB0aGUgdG9wIG9mIGl0cyBmdW5jdGlvbiAoYXMgZWFybHkgYXMgcG9zc2libGUpIGUuZy4K
KyAKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgLi4uKTsKKyAgICAgICAgfQorCisgICAgTm90ZTogVk06OnRocm93RXhj
ZXB0aW9uKCkgbWV0aG9kcyBhcmUgcHJpdmF0ZSwgYW5kIG9ubHkgY2FsbGVhYmxlYnkgdGhlIFRo
cm93U2NvcGUKKyAgICBmcmllbmQgY2xhc3MuIEFsbCB0aHJvd3MgbXVzdCBnbyB0aHJvdWdoIGEg
VGhyb3dTY29wZS4gSGVuY2UsIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQKKyAgICBhbnkgZnVuY3Rp
b24gdGhhdCBjYW4gdGhyb3cgd2lsbCBoYXZlIGEgVGhyb3dTY29wZS4KKworICAgIE5vdGU6IGJ5
IGNvbnZlbnRpb24sIGV2ZXJ5IHRocm93IGhlbHBlciBmdW5jdGlvbiBtdXN0IHRha2UgYSBUaHJv
d1Njb3BlIGFyZ3VtZW50CisgICAgaW5zdGVhZCBvZiBpbnN0YW50aWF0aW5nIGl0cyBvd24gVGhy
b3dTY29wZS4gIFRoaXMgYWxsb3dzIHRoZSB0aHJvdyB0byBiZSBhdHRyaWJ1dGVkCisgICAgdG8g
dGhlIGNsaWVudCBjb2RlIHJhdGhlciB0aGFuIHRoZSB0aHJvdyBoZWxwZXIgaXRzZWxmLgorCisg
My4gVmVyaWZpY2F0aW9uIG9mIG5lZWRlZCBleGNlcHRpb24gY2hlY2tzCisKKyAgICBhLiBPbiBj
b25zdHJ1Y3Rpb24sIGVhY2ggVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25lZWRF
eGNlcHRpb25DaGVjayBpcworICAgICAgIG5vdCBzZXQuCisgCisgICAgICAgVGhpcyBlbnN1cmVz
IHRoYXQgdGhlIGNhbGxlciBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBoYXMgY2hlY2tlZCBmb3Ig
ZXhjZXB0aW9ucworICAgICAgIHdoZXJlIG5lZWRlZCBiZWZvcmUgZG9pbmcgbW9yZSB3b3JrIHdo
aWNoIGxlZCB0byBjYWxsaW5nIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorCisgICAgYi4gT24gZGVz
dHJ1Y3Rpb24sIGVhY2ggVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25lZWRFeGNl
cHRpb25DaGVjayBpcworICAgICAgIG5vdCBzZXQuIFRoaXMgdmVyaWZpY2F0aW9uIHdpbGwgYmUg
c2tpcHBlZCBpZiB0aGUgVGhyb3dTY29wZSBoYXMgYmVlbiByZWxlYXNlZAorICAgICAgIChzZWUg
KDUpIGJlbG93KS4KKworICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBmdW5jdGlvbiB0aGF0
IG93bnMgdGhpcyBUaHJvd1Njb3BlIGlzIG5vdCBtaXNzaW5nIGFueQorICAgICAgIGV4Y2VwdGlv
biBjaGVja3MgYmVmb3JlIHJldHVybmluZy4KKyAKKyAgICBjLiBXaGVuIHRocm93aW5nIGFuIGV4
Y2VwdGlvbiwgdGhlIFRocm93U2NvcGUgd2lsbCB2ZXJpZnkgdGhhdCBWTTo6bV9uZWVkRXhjZXB0
aW9uQ2hlY2sKKyAgICAgICBpcyBub3Qgc2V0LCB1bmxlc3MgaXQncyBiZWVuIGFzayB0byByZXRo
cm93IHRoZSBzYW1lIEV4Y2VwdGlvbiBvYmplY3QuCisKKyA0LiBTaW11bGF0ZWQgdGhyb3dzCisK
KyAgICBUaHJvd3MgYXJlIHNpbXVsYXRlZCBieSBzZXR0aW5nIHRoZSBtX25lZWRFeGNlcHRpb25D
aGVjayBiaXQuCisKKyAgICBUaGUgYml0IHdpbGwgb25seSBiZSBzZXQgaW4gdGhlIFRocm93U2Nv
cGUgZGVzdHJ1Y3RvciBleGNlcHQgd2hlbiB0aGUgVGhyb3dTY29wZQorICAgIGRldGVjdHMgdGhl
IGNhbGxlciBpcyBhIExMSW50IG9yIEpJVCBmdW5jdGlvbi4gTExJbnQgb3IgSklUIGZ1bmN0aW9u
cyB3aWxsIGFsd2F5cworICAgIGNoZWNrIGZvciBleGNlcHRpb25zIGFmdGVyIGEgaG9zdCBDKysg
ZnVuY3Rpb24gcmV0dXJucyB0byBpdC4gSG93ZXZlciwgdGhleSB3aWxsCisgICAgbm90IGNsZWFy
IHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQuCisKKyAgICBIZW5jZSwgaWYgdGhlIFRocm93
U2NvcGUgZGVzdHJ1Y3RvciBkZXRlY3RzIHRoZSBjYWxsZXIgaXMgYSBMTEludCBvciBKSVQgZnVu
Y3Rpb24sCisgICAgaXQgd2lsbCBqdXN0IHNraXAgdGhlIHNldHRpbmcgb2YgdGhlIGJpdC4KKwor
ICAgIE5vdGU6IHRoZXJlIGlzIG5vIG5lZWQsIGFuZCBpdCBpcyBpbmNvcnJlY3QgdG8gc2V0IHRo
ZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQKKyAgICBpbiB0aGUgdGhyb3dFeGNlcHRpb24gbWV0
aG9kcy4gVGhpcyBpcyBiZWNhdXNlLCBpbiBwcmFjdGljZSwgd2UgYWx3YXlzIHJldHVybgorICAg
IGltbWVkaWF0ZWx5IGFmdGVyIHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gSXQgZG9lc24ndCBtYWtl
IHNlbnNlIHRvIHNldCB0aGUgYml0IGluCisgICAgdGhlIHRocm93IGp1c3QgdG8gaGF2ZSB0byBj
bGVhciBpdCBpbW1lZGlhdGVseSBhZnRlciBiZWZvcmUgd2UgZG8gdmVyaWZpY2F0aW9uIGluCisg
ICAgdGhlIFRocm93U2NvcGUgZGVzdHJ1Y3Rvci4KKworIDUuIFVzaW5nIFRocm93U2NvcGU6OnJl
bGVhc2UoKQorCisgICAgVGhyb3dTY29wZTo6cmVsZWFzZSgpIHNob3VsZCBvbmx5IGJlIHVzZWQg
YXQgdGhlIGJvdHRvbSBvZiBhIGZ1bmN0aW9uIGlmOgorIAorICAgIGEuIFRoaXMgZnVuY3Rpb24g
aXMgZ29pbmcgdG8gbGV0IGl0cyBjYWxsZXIgY2hlY2sgYW5kIGhhbmRsZSB0aGUgZXhjZXB0aW9u
LgorIAorICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gZ29vKCk7IC8vIG1heSB0aHJvdy4KKworICAgICAgICAgICAgLi4uIC8vIENsZWFudXAgY29k
ZSB0aGF0IHdpbGwgYXJlIG5vdCBhZmZlY3RlZCBieSBhIHBlbmRpbmcgZXhjZXB0aW9ucy4KKwor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOyAvLyB0ZWxsIHRoZSBUaHJvd1Njb3BlIHRoYXQg
dGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorIAorICAgIGIuIFRoaXMgZnVuY3Rpb24gaXMgZ29pbmcgdG8g
ZG8gYSB0YWlsIGNhbGwgdGhhdCBtYXkgdGhyb3cuCisKKyAgICAgICAgdm9pZCBmb28oLi4uKQor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsgLy8gdGVs
bCB0aGUgVGhyb3dTY29wZSB0aGF0IHRoZSBjYWxsZXIgd2lsbCBoYW5kbGUgdGhlIGV4Y2VwdGlv
bi4KKyAgICAgICAgICAgIHJldHVybiBnb28oKTsgLy8gbWF5IHRocm93LgorICAgICAgICB9Cisg
CisgICAgVGhyb3dTY29wZTo6cmVsZWFzZSgpIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgY29k
ZSBwYXRocyB0aGF0IGJyYW5jaC4gRm9yIGV4YW1wbGU6CisgCisgICAgICAgIHZvaWQgZm9vKC4u
LikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdvbzEoKTsgLy8gbWF5IHRocm93
LgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOyAvLyA8PT09PT09PT09PT09PT09PT09PSB0
aGUgV1JPTkcgd2F5ICEhIQorICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgCisgICAgICAgICAgICByZXN1bHQgPSBnb28yKCk7IC8vIG1heSB0aHJvdy4K
KyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
IAorICAgIFRoZSBhYm92ZSB3aWxsIHJlc3VsdCBpbiBhIHZlcmlmaWNhdGlvbiBmYWlsdXJlIGlu
IGdvbzIoKSdzIFRocm93U2NvcGUuICBUaGUgcHJvcGVyIHdheQorICAgIHRvIGZpeCB0aGlzIHZl
cmlmaWNhdGlvbiBpcyB0byBkbyB3aXRoZXIgKDYpIG9yICg3KSBiZWxvdy4KKyAKKyAgNi4gQ2hl
Y2tpbmcgZXhjZXB0aW9ucyB3aXRoIFRocm93U2NvcGU6OmV4Y2VwdGlvbigpCisgCisgICAgIFRo
cm93U2NvcGU6OmV4Y2VwdGlvbigpIHJldHVybnMgdGhlIHRocm93biBFeGNlcHRpb24gb2JqZWN0
IGlmIHRoZXJlIGlzIG9uZSBwZW5kaW5nLgorICAgICBFbHNlIGl0IHJldHVybnMgbnVsbHB0ci4K
KyAKKyAgICAgSXQgYWxzbyBjbGVhcnMgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCB0aGVy
ZWJ5IGluZGljYXRpbmcgdGhhdCB3ZSd2ZSBzYXRpc2lmZWQKKyAgICAgdGhlIG5lZWRlZCBleGNl
cHRpb24gY2hlY2suCisgCisgICAgIFRoaXMgaXMgaG93IHdlIGRvIGl0OgorIAorICAgICAgICB2
b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBnb28xKCk7IC8v
IG1heSB0aHJvdy4KKyAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5IHRo
cm93LgorICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgCisgICAgQnV0IHNvbWV0aW1lcywgZm9yIG9wdGltaXphdGlvbiByZWFzb25zLCB3ZSBt
YXkgY2hvb3NlIHRvIHRlc3QgdGhlIHJlc3VsdCBvZiB0aGUgY2FsbGVlCisgICAgZnVuY3Rpb24g
aW5zdGVhZCBkb2luZyBhIGxvYWQgb2YgdGhlIFZNIGV4Y2VwdGlvbiB2YWx1ZS4gU2VlICg3KSBi
ZWxvdy4KKyAKKyA3LiBDaGVja2luZyBleGNlcHRpb24gYnkgY2hlY2tpbmcgY2FsbGVlIHJlc3Vs
dAorIAorICAgIFRoaXMgYXBwcm9hY2ggc2hvdWxkIG9ubHkgYmUgYXBwbGllZCB3aGVuIGl0IG1h
a2VzIGEgZGlmZmVyZW5jZSB0byBwZXJmb3JtYW5jZS4KKyAgICBJZiB3ZSBuZWVkIHRvIGRvIHRo
aXMsIHdlIHNob3VsZCBhZGQgYW4gQVNTRVJUKCkgdGhhdCBpbnZva2VzIFRocm93U2NvcGU6OmV4
Y2VwdGlvbigpCisgICAgYW5kIHZlcmlmeSB0aGUgcmVzdWx0LiBTaW5jZSBUaHJvd1Njb3BlIHZl
cmlmaWNhdGlvbiBpcyBvbmx5IGRvbmUgb24gREVCVUcgYnVpbGRzLAorICAgIHRoaXMgQVNTRVJU
IHdpbGwgc2F0aXNmeSB0aGUgdmVyaWZpY2F0aW9uIHJlcXVpcmVtZW50cyB3aGlsZSBub3QgaW1w
YWN0aW5nIHBlcmZvcm1hbmNlLgorIAorICAgIFRoaXMgaXMgaG93IHdlIGRvIGl0OgorCisgICAg
ICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgICAgICBib29sIGZhaWxlZCA9IGdvbzEo
KTsgLy8gbWF5IHRocm93LgorICAgICAgICAgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gZmFpbGVkKQorICAgICAgICAgICAgaWYgKGZhaWxlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5IHRocm93LgorICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgCisgOC4g
RGVidWdnaW5nIHZlcmlmaWNhdGlvbiBmYWlsdXJlcy4KKworICAgIGEuIFdoZW4gdmVyaWZpY2F0
aW9uIGZhaWxzLCB5b3Ugd2lsbCBzZWUgYSBoZWxwZnVsIG1lc3NhZ2UgZm9sbG93ZWQgYnkgYW4g
YXNzZXJ0aW9uIGZhaWx1cmUuCisgICAgICAgRm9yIGV4YW1wbGU6CisgCisgICAgRkFJTEVEIGV4
Y2VwdGlvbiBjaGVjayB2ZXJpZmljYXRpb246CisgICAgICAgIEV4Y2VwdGlvbiB0aHJvd24gZnJv
bSBUaHJvd1Njb3BlIFsyXSBFeGl0OiBzZXRVcENhbGwgQCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVu
U291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHA6MTI0
NQorICAgICAgICBpcyB1bmNoZWNrZWQgaW4gVGhyb3dTY29wZSBbMV06IHZhcmFyZ3NTZXR1cCBA
IC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoxMzk4CisKKyAgICAgICBUaGUgbWVzc2FnZSB0ZWxscyB5b3Ug
dGhhdCBmYWlsdXJlIHdhcyBkZXRlY3RlZCBhdCBpbiB2YXJhcmdzU2V0dXAoKSBAIExMSW50U2xv
d1BhdGhzLmNwcAorICAgICAgIGxpbmUgMTM5OCwgYW5kIHRoYXQgdGhlIG1pc3NpbmcgZXhjZXB0
aW9uIGNoZWNrIHNob3VsZCBoYXZlIGhhcHBlbmVkIHNvbWV3aGVyZSBiZXR3ZWVuCisgICAgICAg
dGhlIGNhbGwgdG8gc2V0VXBDYWxsKCkgQCBMTEludFNsb3dQYXRocy5jcHAgbGluZSAxMjQ1IGFu
ZCBpdC4KKworICAgICAgIElmIHRoYXQgaXMgaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLCB5b3Ug
Y2FuIC4uLgorCisgICAgYi4gVHVybiBvbiBUaHJvd1Njb3BlIHRyYWNpbmcKKyAKKyAgICAgICBK
dXN0IHNldCB0cmFjZU9uPXRydWUgYXQgdGhlIHRvcCBvZiBUaHJvd1Njb3BlLmNwcCwgYW5kIHJl
YnVpbGQuIFRoZXJlYWZ0ZXIsIHlvdSBzaG91bGQKKyAgICAgICBzZWUgYSB0cmFjZSBvZiBUaHJv
d1Njb3BlcyBiZWluZyBlbnRlcmVkIGFuZCBleGl0ZWQgYXMgd2VsbCBhcyB0aGVpciBkZXB0aCBl
LmcuCisKKyAgICBUaHJvd1Njb3BlIFsxXSBFbnRlcjogbGxpbnRfc2xvd19wYXRoX2pmYWxzZSBA
IC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoxMDMyCisgICAgVGhyb3dTY29wZSBbMV0gRXhpdDogbGxpbnRf
c2xvd19wYXRoX2pmYWxzZSBAIC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2UvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoxMDMyCisKKyAgICAgICBZb3Ug
d2lsbCBhbHNvIHNlZSB0cmFjZXMgb2Ygc2ltdWxhdGVkIHRocm93cyBlLmcuCisKKyAgICBUaHJv
d1Njb3BlIFsyXSBUaHJvdyBmcm9tOiBzZXRVcENhbGwgQCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVu
U291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHA6MTI0
NQorCisgICAgICAgSWYgdGhhdCBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24sIHlvdSBjYW4g
Li4uCisKKyAgICBjLiBUdXJuIG9uIFRocm93U2NvcGUgc3RhY2sgZHVtcHMKKworICAgICAgIEp1
c3Qgc2V0IHRyYWNlV2l0aFN0YWNrVHJhY2VzPXRydWUgYXQgdGhlIHRvcCBvZiBUaHJvd1Njb3Bl
LmNwcCwgYW5kIHJlYnVpbGQuCisgICAgICAgVGhlcmVhZnRlciwgeW91IHNob3VsZCBzZWUgYSBz
dGFjayB0cmFjZXMgYXQgdmFyaW91cyByZWxldmFudCBUaHJvd1Njb3BlIGV2ZW50cy4KKworICAg
IGQuIFVzaW5nIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKCkKKworICAgICAgIElmIHlvdSBo
YXZlIGlzb2xhdGVkIHRoZSBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVjayB0byBhIGZ1bmN0aW9uIHRo
YXQgaXMgbGFyZ2UgYnV0CisgICAgICAgaXMgdW5zdXJlIHdoaWNoIHN0YXRlbWVudCBjYW4gdGhy
b3cgYW5kIGlzIG1pc3NpbmcgdGhlIGNoZWNrLCB5b3UgY2FuIHNwcmlua2xlCisgICAgICAgdGhl
IGZ1bmN0aW9uIHdpdGggY2FsbHMgdG8gdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKS4KKwor
ICAgICAgIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKCkgd2lsbCBsb2cgYSBsaW5lICJOZWVk
IGV4Y2VwdGlvbiBjaGVjayBhdCAuLi4iIHRoYXQKKyAgICAgICBpbmxjdWRlcyB0aGUgZmlsZSBh
bmQgbGluZSBudW1iZXIgb25seSB3aGVuIGl0IHNlZSB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sg
c2V0LgorICAgICAgIFRoaXMgd2lsbCB0ZWxsIHlvdSB3aGljaCBzdGF0ZW1lbnQgc2ltdWxhdGVk
IHRoZSB0aHJvdyB0aGF0IGlzIG5vdCBiZWluZyBjaGVja2VkCisgICAgICAgaS5lLiB0aGUgb25l
IHRoYXQgcHJlY2VkZWQgdGhlIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKCkgdGhhdCBwcmlu
dGVkIGEgbGluZS4KKyovCisKK1Rocm93U2NvcGU6OlRocm93U2NvcGUoVk0mIHZtLCBUaHJvd1Nj
b3BlTG9jYXRpb24gbG9jYXRpb24pCisgICAgOiBtX3ZtKHZtKQorICAgICwgbV9wcmV2aW91c1Nj
b3BlKHZtLm1fdG9wVGhyb3dTY29wZSkKKyAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCisgICAg
LCBtX2RlcHRoKG1fcHJldmlvdXNTY29wZSA/IG1fcHJldmlvdXNTY29wZS0+bV9kZXB0aCArIDEg
OiAwKQoreworICAgIG1fdm0ubV90b3BUaHJvd1Njb3BlID0gdGhpczsKKworICAgIGlmICh0cmFj
ZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUg
WyIsIG1fZGVwdGgsICJdIEVudGVyOiAiLCBsb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBs
b2NhdGlvbi5maWxlLCAiOiIsIGxvY2F0aW9uLmxpbmUpOworICAgICAgICBpZiAobV92bS5tX25l
ZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAgIGRhdGFMb2coIiwgbmVlZHMgY2hlY2siKTsK
KyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAgICBpZiAodHJhY2VXaXRoU3RhY2tUcmFj
ZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKyAgICB9CisKKyAgICB2ZXJp
ZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlOjpTY29wZUVudHJ5KTsKK30KKwor
VGhyb3dTY29wZTo6flRocm93U2NvcGUoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fdm0ubV90
b3BUaHJvd1Njb3BlKTsKKworICAgIGlmICghbV9pc1JlbGVhc2VkKQorICAgICAgICB2ZXJpZnlF
eGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlOjpTY29wZUV4aXQpOworICAgIGVsc2Ug
eworICAgICAgICAvLyBJZiB3ZSByZWxlYXNlZCB0aGUgc2NvcGUsIHRoYXQgbWVhbnMgd2UncmUg
bGV0dGluZyBvdXIgY2FsbGVycyBkbyB0aGUKKyAgICAgICAgLy8gZXhjZXB0aW9uIGNoZWNrLiBI
b3dldmVyLCBiZWNhdXNlIG91ciBjYWxsZXIgbWF5IGJlIGEgTExJbnQgb3IgSklUCisgICAgICAg
IC8vIGZ1bmN0aW9uICh3aGljaCBhbHdheXMgY2hlY2tzIGZvciBleGNlcHRpb25zIGJ1dCB3b24n
dCBjbGVhciB0aGUKKyAgICAgICAgLy8gbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0KSwgd2Ugc2hv
dWxkIGNsZWFyIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGhlcmUKKyAgICAgICAgLy8gYW5kIGxldCBj
b2RlIGJlbG93IGRlY2lkZSBpZiB3ZSBuZWVkIHRvIHNpbXVsYXRlIGEgcmUtdGhyb3cuCisgICAg
ICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICB9CisKKyAgICBib29s
IHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IGZhbHNlOworICAgIHZvaWQqIHByZXZpb3VzU2Nv
cGUgPSBtX3ByZXZpb3VzU2NvcGU7CisgICAgdm9pZCogdG9wQ2FsbEZyYW1lID0gbV92bS50b3BD
YWxsRnJhbWU7CisgICAgCisgICAgLy8gSWYgdGhlIHRvcENhbGxGcmFtZSB3YXMgcHVzaGVkIG9u
IHRoZSBzdGFjayBhZnRlciB0aGUgcHJldmlvdXNTY29wZSB3YXMgaW5zdGFudGlhdGVkLAorICAg
IC8vIHRoZW4gdGhpcyBWTUVudHJ5IHRocm93U2NvcGUgd2lsbCBiZSByZXR1cm5pbmcgdG8gTExJ
TlQgb3IgSklUIGNvZGUgdGhhdCBhbHdheXMgZG8KKyAgICAvLyBhbiBleGNlcHRpb24gY2hlY2su
IEluIHRoYXQgY2FzZSwgc2tpcCB0aGUgc2ltdWxhdGVkIHRocm93IGJlY2F1c2UgdGhlIExMSW50
IGFuZCBKSVQKKyAgICAvLyB3aWxsIGJlIGNoZWNraW5nIGZvciB0aGUgZXhjZXB0aW9uIHRoZWly
IG93biB3YXkgaW5zdGVhZCBvZiBjYWxsaW5nIHZtLmV4Y2VwdGlvbigpLgorICAgIGlmICh0b3BD
YWxsRnJhbWUgJiYgcHJldmlvdXNTY29wZSA+IHRvcENhbGxGcmFtZSkKKyAgICAgICAgd2lsbEJl
SGFuZGxlQnlMTEludE9ySklUID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAoIXdpbGxCZUhhbmRsZUJ5
TExJbnRPckpJVCkKKyAgICAgICAgc2ltdWxhdGVUaHJvdygpOworCisgICAgaWYgKHRyYWNlT24p
IHsKKyAgICAgICAgZGF0YUxvZygiPCIsIHRyYWNlQ291bnQrKywgIj4gVGhyb3dTY29wZSBbIiwg
bV9kZXB0aCwgIl0gRXhpdDogIiwgbV9sb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBtX2xv
Y2F0aW9uLmZpbGUsICI6IiwgbV9sb2NhdGlvbi5saW5lKTsKKyAgICAgICAgaWYgKCF3aWxsQmVI
YW5kbGVCeUxMSW50T3JKSVQpCisgICAgICAgICAgICBkYXRhTG9nKCIsIHdpdGggcmV0aHJvdyIp
OworICAgICAgICBpZiAobV92bS5tX25lZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAgIGRh
dGFMb2coIiwgbmVlZHMgY2hlY2siKTsKKyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAg
ICBpZiAodHJhY2VXaXRoU3RhY2tUcmFjZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNrdHJh
Y2UoKTsKKyAgICB9CisKKyAgICBtX3ZtLm1fdG9wVGhyb3dTY29wZSA9IG1fcHJldmlvdXNTY29w
ZTsKK30KKwordm9pZCBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGlmIChtX3ZtLmV4Y2VwdGlvbigpICYmIG1f
dm0uZXhjZXB0aW9uKCkgIT0gZXhjZXB0aW9uKQorICAgICAgICB2ZXJpZnlFeGNlcHRpb25DaGVj
a05lZWRJc1NhdGlzZmllZChTaXRlOjpUaHJvdyk7CisgICAgCisgICAgbV92bS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBleGNlcHRpb24pOworfQorCitKU1ZhbHVlIFRocm93U2NvcGU6OnRocm93RXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKK3sKKyAgICBpZiAoIWVycm9y
LmlzQ2VsbCgpIHx8ICFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KGVycm9yLmFzQ2VsbCgpKSkK
KyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6VGhyb3cp
OworICAgIAorICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKK30K
KworSlNPYmplY3QqIFRocm93U2NvcGU6OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIG9iaikKK3sKKyAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4ob2Jq
KSkKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hlY2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6VGhy
b3cpOworICAgIAorICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7Cit9
CisKK3ZvaWQgVGhyb3dTY29wZTo6cHJpbnRJZk5lZWRDaGVjayhjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIHVuc2lnbmVkIGxpbmUpCit7CisgICAgaWYgKG1fdm0u
bV9uZWVkRXhjZXB0aW9uQ2hlY2spCisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50Kyss
ICI+IE5lZWQgZXhjZXB0aW9uIGNoZWNrIGF0ICIsIGZ1bmN0aW9uTmFtZSwgIiBAICIsIGZpbGUs
ICI6IiwgbGluZSwgIlxuIik7Cit9CisKK3ZvaWQgVGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdygp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobV92bS5tX3RvcFRocm93U2NvcGUpOworICAgIG1fdm0u
bV9zaW11bGF0ZWRUaHJvd1BvaW50TG9jYXRpb24gPSBtX2xvY2F0aW9uOworICAgIG1fdm0ubV9z
aW11bGF0ZWRUaHJvd1BvaW50RGVwdGggPSBtX2RlcHRoOworICAgIG1fdm0ubV9uZWVkRXhjZXB0
aW9uQ2hlY2sgPSB0cnVlOworCisgICAgaWYgKHRyYWNlT24pIHsKKyAgICAgICAgZGF0YUxvZygi
PCIsIHRyYWNlQ291bnQrKywgIj4gVGhyb3dTY29wZSBbIiwgbV9kZXB0aCwgIl0gVGhyb3cgZnJv
bTogIiwgbV9sb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBtX2xvY2F0aW9uLmZpbGUsICI6
IiwgbV9sb2NhdGlvbi5saW5lLCAiXG4iKTsKKyAgICAgICAgaWYgKHRyYWNlV2l0aFN0YWNrVHJh
Y2VzKQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAgfQorfQorCit2b2lk
IFRocm93U2NvcGU6OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFRocm93U2Nv
cGU6OlNpdGUgc2l0ZSkKK3sKKyAgICBpZiAoIXZlcmlmaWNhdGlvbk9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoVU5MSUtFTFkobV92bS5tX25lZWRFeGNlcHRpb25DaGVjaykpIHsKKyAg
ICAgICAgYXV0byBmYWlsRGVwdGggPSBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludERlcHRoOwor
ICAgICAgICBhdXRvJiBmYWlsTG9jYXRpb24gPSBtX3ZtLm1fc2ltdWxhdGVkVGhyb3dQb2ludExv
Y2F0aW9uOworCisgICAgICAgIGF1dG8gc2l0ZU5hbWUgPSBbXSAoU2l0ZSBzaXRlKSAtPiBjb25z
dCBjaGFyKiB7CisgICAgICAgICAgICBzd2l0Y2ggKHNpdGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
U2l0ZTo6U2NvcGVFbnRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkVudHJ5IjsKKyAgICAg
ICAgICAgIGNhc2UgU2l0ZTo6U2NvcGVFeGl0OgorICAgICAgICAgICAgICAgIHJldHVybiAiRXhp
dCI7CisgICAgICAgICAgICBjYXNlIFNpdGU6OlRocm93OgorICAgICAgICAgICAgICAgIHJldHVy
biAiVGhyb3ciOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9OworCisg
ICAgICAgIGRhdGFMb2coCisgICAgICAgICAgICAiRkFJTEVEIGV4Y2VwdGlvbiBjaGVjayB2ZXJp
ZmljYXRpb246XG4iCisgICAgICAgICAgICAiICAgIEV4Y2VwdGlvbiB0aHJvd24gZnJvbSBUaHJv
d1Njb3BlIFsiLCBmYWlsRGVwdGgsICJdICIsIHNpdGVOYW1lKHNpdGUpLCAiOiAiLCBmYWlsTG9j
YXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgZmFpbExvY2F0aW9uLmZpbGUsICI6IiwgZmFpbExv
Y2F0aW9uLmxpbmUsICJcbiIKKyAgICAgICAgICAgICIgICAgaXMgdW5jaGVja2VkIGluIFRocm93
U2NvcGUgWyIsIG1fZGVwdGgsICJdOiAiLCBtX2xvY2F0aW9uLmZ1bmN0aW9uTmFtZSwgIiBAICIs
IG1fbG9jYXRpb24uZmlsZSwgIjoiLCBtX2xvY2F0aW9uLmxpbmUsICJcbiIKKyAgICAgICAgICAg
ICJcbiIpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNo
ZWNrKTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVEhST1dfU0NPUEVfVkVSSUZJQ0FU
SU9OKQorICAgIAorfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UaHJvd1Njb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK2NsYXNzIEpTT2JqZWN0OworCisjaWYg
RU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKworY2xhc3MgVGhyb3dTY29wZSB7Citw
dWJsaWM6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgVGhyb3dTY29wZShWTSYsIFRocm93U2NvcGVM
b2NhdGlvbik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgflRocm93U2NvcGUoKTsKKworICAgIFZN
JiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwg
SlNPYmplY3QqKTsKKworICAgIGlubGluZSBFeGNlcHRpb24qIGV4Y2VwdGlvbigpCisgICAgewor
ICAgICAgICBtX3ZtLm1fbmVlZEV4Y2VwdGlvbkNoZWNrID0gZmFsc2U7CisgICAgICAgIHJldHVy
biBtX3ZtLmV4Y2VwdGlvbigpOworICAgIH0KKworICAgIGlubGluZSB2b2lkIHJlbGVhc2UoKSB7
IG1faXNSZWxlYXNlZCA9IHRydWU7IH0KKworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJp
bnRJZk5lZWRDaGVjayhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUs
IHVuc2lnbmVkIGxpbmUpOworCitwcml2YXRlOgorICAgIHZvaWQgc2ltdWxhdGVUaHJvdygpOwor
CisgICAgZW51bSBjbGFzcyBTaXRlIHsKKyAgICAgICAgU2NvcGVFbnRyeSwKKyAgICAgICAgU2Nv
cGVFeGl0LAorICAgICAgICBUaHJvdworICAgIH07CisgICAgdm9pZCB2ZXJpZnlFeGNlcHRpb25D
aGVja05lZWRJc1NhdGlzZmllZChTaXRlKTsKKworICAgIFZNJiBtX3ZtOworICAgIFRocm93U2Nv
cGUqIG1fcHJldmlvdXNTY29wZTsKKyAgICBUaHJvd1Njb3BlTG9jYXRpb24gbV9sb2NhdGlvbjsK
KyAgICB1bnNpZ25lZCBtX2RlcHRoOworICAgIGJvb2wgbV9pc1JlbGVhc2VkIHsgZmFsc2UgfTsK
K307CisKKyNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9fKSBcCisgICAgSlNDOjpUaHJv
d1Njb3BlKHZtX18sIEpTQzo6VGhyb3dTY29wZUxvY2F0aW9uKF9fRlVOQ1RJT05fXywgX19GSUxF
X18sIF9fTElORV9fKSkKKworI2RlZmluZSB0aHJvd1Njb3BlUHJpbnRJZk5lZWRDaGVjayhzY29w
ZV9fKSBcCisgICAgc2NvcGVfXy5wcmludElmTmVlZENoZWNrKF9fRlVOQ1RJT05fXywgX19GSUxF
X18sIF9fTElORV9fKQorCisjZWxzZSAvLyBub3QgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNB
VElPTikKKworY2xhc3MgVGhyb3dTY29wZSB7CitwdWJsaWM6CisgICAgVGhyb3dTY29wZShWTSYg
dm0pCisgICAgICAgIDogbV92bSh2bSkKKyAgICB7IH0KKworICAgIFZNJiB2bSgpIGNvbnN0IHsg
cmV0dXJuIG1fdm07IH0KKyAgICAKKyAgICB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBl
eGNlcHRpb24pOyB9CisgICAgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgdmFsdWUp
OyB9CisgICAgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9iaikgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOyB9CisgICAg
CisgICAgRXhjZXB0aW9uKiBleGNlcHRpb24oKSB7IHJldHVybiBtX3ZtLmV4Y2VwdGlvbigpOyB9
CisgICAgdm9pZCByZWxlYXNlKCkgeyB9CisgICAgCitwcml2YXRlOgorICAgIFZNJiBtX3ZtOwor
fTsKKworI2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKKyAgICBKU0M6OlRocm93
U2NvcGUodm1fXykKKworI2VuZGlmIC8vIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04p
CisKK0FMV0FZU19JTkxJTkUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBzY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworfQorCitBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2NvcGUudGhyb3dFeGNlcHRpb24oZXhlYywgdmFsdWUp
OworfQorCitBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU09iamVjdCogb2JqKQoreworICAgIHJldHVybiBz
Y29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVMb2NhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGVM
b2NhdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGVMb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBUaHJvd1Njb3BlTG9jYXRpb24geworICAgIFRo
cm93U2NvcGVMb2NhdGlvbigpIHsgfQorICAgIFRocm93U2NvcGVMb2NhdGlvbihjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIHVuc2lnbmVkIGxpbmUpCisgICAgICAg
IDogZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKKyAgICAgICAgLCBmaWxlKGZpbGUpCisgICAg
ICAgICwgbGluZShsaW5lKQorICAgIHsgfQorICAgIAorICAgIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBjaGFyKiBmaWxlIHsgbnVsbHB0ciB9OworICAg
IHVuc2lnbmVkIGxpbmUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QAogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNp
bmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJUaHJvd1Njb3BlTG9jYXRpb24uaCIKICNpbmNs
dWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlZNRW50cnlSZWNvcmQuaCIKQEAgLTEwOCw2ICsxMDksNyBAQCBjbGFzcyBT
dHJ1Y3R1cmU7CiBjbGFzcyBSZWdFeHA7CiAjZW5kaWYKIGNsYXNzIFN5bWJvbDsKK2NsYXNzIFRo
cm93U2NvcGU7CiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRXZhbENv
ZGVCbG9jazsKIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNDQ5LDEwICs0
NTEsNiBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uKiBsYXN0RXhjZXB0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0RXhjZXB0aW9uOyB9CiAgICAgSlNDZWxsKiogYWRkcmVzc09mTGFzdEV4Y2Vw
dGlvbigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKio+KCZtX2xhc3RFeGNlcHRp
b24pOyB9CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEV4Y2VwdGlvbiopOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dF
eGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7Ci0KICAgICB2b2lk
IHNldEZhaWxOZXh0TmV3Q29kZUJsb2NrKCkgeyBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrID0gdHJ1
ZTsgfQogICAgIGJvb2wgZ2V0QW5kQ2xlYXJGYWlsTmV4dE5ld0NvZGVCbG9jaygpCiAgICAgewpA
QCAtNjQ0LDYgKzY0MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBtX2xhc3RFeGNlcHRpb24gPSBl
eGNlcHRpb247CiAgICAgfQogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4Y2Vw
dGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOwor
CiAjaWYgRU5BQkxFKEFTU0VNQkxFUikKICAgICBib29sIG1fY2FuVXNlQXNzZW1ibGVyOwogI2Vu
ZGlmCkBAIC02NjgsNiArNjcwLDEzIEBAIHByaXZhdGU6CiAKICAgICBFeGNlcHRpb24qIG1fZXhj
ZXB0aW9uIHsgbnVsbHB0ciB9OwogICAgIEV4Y2VwdGlvbiogbV9sYXN0RXhjZXB0aW9uIHsgbnVs
bHB0ciB9OworI2lmIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04pCisgICAgVGhyb3dT
Y29wZSogbV90b3BUaHJvd1Njb3BlIHsgbnVsbHB0ciB9OworICAgIFRocm93U2NvcGVMb2NhdGlv
biBtX3NpbXVsYXRlZFRocm93UG9pbnRMb2NhdGlvbjsKKyAgICB1bnNpZ25lZCBtX3NpbXVsYXRl
ZFRocm93UG9pbnREZXB0aCB7IDAgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9uZWVkRXhjZXB0aW9u
Q2hlY2sgeyBmYWxzZSB9OworI2VuZGlmCisKICAgICBib29sIG1fZmFpbE5leHROZXdDb2RlQmxv
Y2sgeyBmYWxzZSB9OwogICAgIERlbGV0ZVByb3BlcnR5TW9kZSBtX2RlbGV0ZVByb3BlcnR5TW9k
ZSB7IERlbGV0ZVByb3BlcnR5TW9kZTo6RGVmYXVsdCB9OwogICAgIGJvb2wgbV9nbG9iYWxDb25z
dFJlZGVjbGFyYXRpb25TaG91bGRUaHJvdyB7IHRydWUgfTsKQEAgLTY5MCw2ICs2OTksOCBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0NoaWNrZW4+IG1fc2hh
ZG93Q2hpY2tlbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eT4gbV9ieXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OworCisgICAgZnJpZW5kIGNsYXNzIFRocm93
U2NvcGU7CiB9OwogCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkocmV2aXNpb24gMjA1MTc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1FbnRyeVNjb3BlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFZN
RW50cnlTY29wZShWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
flZNRW50cnlTY29wZSgpOwogCisgICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2Jh
bE9iamVjdDsgfQogCiAgICAgdm9pZCBhZGREaWRQb3BMaXN0ZW5lcihzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25z
dHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsMTEgKzQ4LDE2IEBAIHZvaWQgV2Vha01hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bigKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYWtNYXAoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiV2Vha01hcCIpKTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJXZWFrTWFwIikp
OwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RXZWFr
TWFwKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9i
YWxPYmplY3QoKTsKICAgICBTdHJ1Y3R1cmUqIHdlYWtNYXBTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwg
Z2xvYmFsT2JqZWN0LT53ZWFrTWFwU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKQEAgLTY5LDExICs3NCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zCiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENh
bGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKGFkZGVyRnVuY3Rpb24s
IGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9
PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJh
YmxlLCBbJl0oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dEl0ZW0pIHsKICAg
ICAgICAgaWYgKCFuZXh0SXRlbS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTYsMTUgKzU2LDE4IEBAIHZvaWQgV2Vha01hcFByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0KIAogc3RhdGljIFdlYWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5v
bi1vYmplY3QiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdU
Rjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBub24tb2JqZWN0Iikp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoSlNXZWFrTWFwKiB3
ZWFrTWFwID0ganNEeW5hbWljQ2FzdDxKU1dlYWtNYXAqPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biB3ZWFrTWFwLT53ZWFrTWFwRGF0YSgpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1l
LCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24tV2Vh
a01hcCBvYmplY3QiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RG
OjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAg
b2JqZWN0IikpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC05OSwxMyArMTAyLDE2IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2UKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBwcm90b0Z1bmNXZWFrTWFwU2V0KENhbGxGcmFtZSogY2FsbEZyYW1l
KQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01h
cERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1Zh
bHVlIGtleSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFrZXkuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIFdURjo6QVNDSUlMaXRlcmFsKCJBdHRlbXB0ZWQgdG8gc2V0IGEgbm9uLW9iamVjdCBrZXkg
aW4gYSBXZWFrTWFwIikpKTsKLSAgICBtYXAtPnNldChjYWxsRnJhbWUtPnZtKCksIGFzT2JqZWN0
KGtleSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFs
KCJBdHRlbXB0ZWQgdG8gc2V0IGEgbm9uLW9iamVjdCBrZXkgaW4gYSBXZWFrTWFwIikpKTsKKyAg
ICBtYXAtPnNldCh2bSwgYXNPYmplY3Qoa2V5KSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMSAr
NDgsMTYgQEAgdm9pZCBXZWFrU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKAogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha1NldChFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90
QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFrU2V0IikpOworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtTZXQiKSk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtTZXQoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgp
OwogICAgIFN0cnVjdHVyZSogd2Vha1NldFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmpl
Y3QtPndlYWtTZXRTdHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpA
QCAtNjksNyArNzQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
CiAgICAgQ2FsbERhdGEgYWRkZXJGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVy
RnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rp
b25DYWxsRGF0YSk7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUpKTsKIAogICAgIGZvckVhY2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0m
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU0LDE1ICs1NCwxOCBAQCB2b2lkIFdlYWtTZXRQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNCiAKIHN0YXRpYyBXZWFrTWFwRGF0YSogZ2V0V2Vha01hcERhdGEoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUs
IFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBub24tb2JqZWN0
IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJ
TGl0ZXJhbCgiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKEpTV2Vha1NldCogd2Vha1NldCA9
IGpzRHluYW1pY0Nhc3Q8SlNXZWFrU2V0Kj4odmFsdWUpKQogICAgICAgICByZXR1cm4gd2Vha1Nl
dC0+d2Vha01hcERhdGEoKTsKIAotICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpB
U0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQgb2Jq
ZWN0IikpOworICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlM
aXRlcmFsKCJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVjdCIp
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtODYsMTMgKzg5LDE2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJvdG9GdW5jV2UKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNXZWFrU2V0QWRkKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAg
IFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBXZWFrTWFwRGF0YSogbWFwID0gZ2V0V2Vha01hcERhdGEoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1hcCkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIGtleSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFrZXkuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6
QVNDSUlMaXRlcmFsKCJBdHRlbXB0ZWQgdG8gYWRkIGEgbm9uLW9iamVjdCBrZXkgdG8gYSBXZWFr
U2V0IikpKTsKLSAgICBtYXAtPnNldChjYWxsRnJhbWUtPnZtKCksIGFzT2JqZWN0KGtleSksIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFsKCJBdHRlbXB0ZWQgdG8gYWRk
IGEgbm9uLW9iamVjdCBrZXkgdG8gYSBXZWFrU2V0IikpKTsKKyAgICBtYXAtPnNldCh2bSwgYXNP
YmplY3Qoa2V5KSwganNVbmRlZmluZWQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIH0KIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE3NSkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTYtMDgtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjZSB0aGUgVGhyb3dTY29wZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50
aWF0ZSBhIFRocm93U2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjExNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAtIEludHJvZHVjZWQgdGhlIEVO
QUJMRShUSFJPV19TQ09QRV9WRVJJRklDQVRJT04pIGZsYWcuCisKIDIwMTYtMDgtMjcgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxQYXJz
ZXIgc2hvdWxkIHBhcnNlIHJlbGF0aXZlIFVSTHMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24g
MjA1MTc1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAt
OTE4LDYgKzkxOCwxMCBAQAogI2RlZmluZSBFTkFCTEVfTUFTTV9QUk9CRSAwCiAjZW5kaWYKIAor
I2lmbmRlZiBFTkFCTEVfVEhST1dfU0NPUEVfVkVSSUZJQ0FUSU9OCisjZGVmaW5lIEVOQUJMRV9U
SFJPV19TQ09QRV9WRVJJRklDQVRJT04gKCFkZWZpbmVkKE5ERUJVRykpCisjZW5kaWYKKwogLyog
UGljayB3aGljaCBhbGxvY2F0b3IgdG8gdXNlOyB3ZSBvbmx5IG5lZWQgYW4gZXhlY3V0YWJsZSBh
bGxvY2F0b3IgaWYgdGhlIGFzc2VtYmxlciBpcyBjb21waWxlZCBpbi4KICAgIE9uIG5vbi1XaW5k
b3dzIHg4Ni02NCwgaU9TLCBhbmQgQVJNNjQgd2UgdXNlIGEgc2luZ2xlIGZpeGVkIG1tYXAsIG9u
IG90aGVyIHBsYXRmb3JtcyB3ZSBtbWFwIG9uIGRlbWFuZC4gKi8KICNpZiBFTkFCTEUoQVNTRU1C
TEVSKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzU5IEBACisyMDE2LTA4LTI5ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgdGhlIFRo
cm93U2NvcGUgYW5kIGZvcmNlIGV2ZXJ5IHRocm93IHNpdGUgdG8gaW5zdGFudGlhdGUgYSBUaHJv
d1Njb3BlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBpcyBvbmx5IGFuIGludGVybmFsIEFQSSBjaGFuZ2Uu
IElmIGl0IGJ1aWxkcywgaXQgc2hvdWxkIGJlIGdvb2QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0FwcGxlUGF5U2Vzc2lvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0FwcGxl
UGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTQmxvYik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGhtSWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNDYmNQYXJhbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlQWVzS2V5R2VuUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUht
YWNQYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSG1hY0tleVBhcmFtcyk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVSc2FLZXlHZW5QYXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlUnNhT2FlcFBhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSc2FTc2FQYXJh
bXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRKU0FycmF5RnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U3RyaW5nRnJvbUpTT04p
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9vbGVhbkZyb21KU09OKToKKyAgICAgICAgKFdlYkNv
cmU6OmdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFs
Z29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjp0cnlKV0tLZXlPcHNWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZVVzYWdlcyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGFP
Y3RldFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9L
ZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEpXS0Fs
Z29yaXRobVRvSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0s6OnNlcmlhbGl6ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRp
b25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b09wZXJhdGlvbkRhdGFGcm9tSlNW
YWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dXBncmFkZUVs
ZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEN1c3RvbUVsZW1lbnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
RE9NRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmVuZm9yY2VSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjp0b1NtYWxsZXJJbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9TbWFsbGVyVUlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpjYW5BY2Nlc3NEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjp0aHJvd1R5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd05vdFN1cHBvcnRl
ZEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93SW52YWxpZFN0YXRlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6dGhyb3dTZWN1cml0eUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRo
cm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVu
dFR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjp0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dTZXF1ZW5jZVR5cGVFcnJvcik6Cisg
ICAgICAgIChXZWJDb3JlOjp0aHJvd05vbkZpbml0ZVR5cGVFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjp0aHJvd0dldHRlclR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1NldHRl
clR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1RoaXNUeXBlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FsbFRocm93VHlwZUVycm9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNTZXF1ZW5jZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRv
TmF0aXZlQXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlOjpjYWxs
VGhyb3dUeXBlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluQ29uc3RydWN0b3I8
SlNDbGFzcz46OmNhbGxDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01D
b252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V3JhcHBlclR5cGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Oml0ZXJh
dG9yQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oml0ZXJhdG9yRm9yRWFjaCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTUl0ZXJhdG9yUHJvdG90eXBlPEpTV3JhcHBlcj46Om5leHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
V2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldFRpbWVvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldEludGVydmFsKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
SlNEYXRhQ3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1
bWVudDo6Y3JlYXRlVG91Y2hMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRG9jdW1lbnQ6Omdl
dENTU0NhbnZhc0NvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1M
Q2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxDYW52YXNF
bGVtZW50OjpnZXRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1l
bnQ6OnByb2JhYmx5U3VwcG9ydHNDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6
b3Blbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0hUTUxFbGVtZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25TdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkRpcmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNIaXN0b3J5OjpwdXNoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNIaXN0b3J5
OjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0xv
Y2F0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYURl
dmljZXM6OmdldFVzZXJNZWRpYSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZWRpYVN0cmVh
bVRyYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVkaWFTdHJlYW1UcmFjazo6
Z2V0U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRD
YXBhYmlsaXRpZXMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lc3NhZ2VQb3J0QXJyYXkpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6Omhh
bmRsZVBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvRGVj
aXNpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN0cnVjdEpTTXV0YXRpb25PYnNlcnZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjphcHBlbmRD
aGlsZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTTm9kZUZpbHRlcjo6YWNjZXB0Tm9kZSk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0SlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1NWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1NWR0xlbmd0aDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OmNv
bnZlcnRUb1NwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMMlJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Z2V0UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6ZGF0YUZ1bmN0aW9uZik6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25p
KToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbk1hdHJpeCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRv
S2V5VXNhZ2VzRnJvbUpTVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnNpZ24p
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGlnZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJD
b3JlOjppbXBvcnRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86
OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpleHBvcnRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dl
YktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dv
cmtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1dvcmtlcik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6Omludm9rZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lQmFzZTo6dGhyb3dTdGFja092ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lRGVzZXJpYWxpemVyOjp0aHJvd1ZhbGlkYXRpb25FcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6
YXRpb25GYWlsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0
aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAg
ICAoR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKEdl
bmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzKToK
KyAgICAgICAgKEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayk6CisgICAgICAgIChHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVET01PYmplY3RFeGNpdGluZ0F0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlw
ZUZ1bmN0aW9uUG9zdE1lc3NhZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJGdW5jdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0
dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjMpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RFeGNlcHRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlv
bkNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0
cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2Jh
bE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFs
T2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5k
UHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24xKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY1JlYWRPbmx5QXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0
aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIx
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxl
bWVudGFsU3RhdGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxTdHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
U3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0
aWNBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFs
U3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
SW1wbGVtZW50c01ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kNCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blN1cHBsZW1lbnRhbE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kNCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEl0ZXJhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEl0ZXJhYmxlQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVz
dEF0dHJpYnV0ZUN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlv
blRlc3RDdXN0b21GdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0Tm9kZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RO
b2RlTmFtZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y05vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9u
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0
ZWFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNO
b25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNTZXR0ZXJFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRldGVy
bWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydDxUZXN0T2JqOjpFbnVtVHlwZT4pOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydDxUZXN0T2JqOjpPcHRpb25hbD4pOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydDxBbHRlcm5hdGVFbnVtTmFtZT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxUZXN0
T2JqOjpFbnVtQT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxUZXN0T2JqOjpFbnVtQj4p
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxUZXN0T2JqOjpFbnVtQz4pOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydDxUZXN0T2JqOjpLaW5kPik6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0PFRlc3RPYmo6OlNpemU+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVzdE9iajo6
Q29uZmlkZW5jZT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVzdE9i
ajo6RGljdGlvbmFyeT4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVz
dE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9s
ZXJhdGVOdWxsPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxBbHRlcm5h
dGVEaWN0aW9uYXJ5TmFtZT4pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0
b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seUxvbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRW51bUF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQnl0ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT2N0
ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialNob3J0QXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpVbnNpZ25lZFNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25n
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpV
c3ZzdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3RPYmpBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialVuZm9yZ2VhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVudW1BdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialhNTE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
VHlwZWRBcnJheUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25XaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialN0
cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakN1c3RvbUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT25mb28pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqT253ZWJraXRmb28pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDYWNoZWRBdHRyaWJ1dGUxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hl
ZEF0dHJpYnV0ZTIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQW55QXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnRlbnREb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpNdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqSW1tdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqU3RyYXdiZXJy
eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpEZXNjcmlwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpJZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpIYXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlRG91YmxlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialB1
dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
U3RyaW5naWZpZXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqRW51bUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQnl0ZUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alNob3J0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDbGFtcGVkU2hvcnRB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMb25nQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3RPYmpBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51
bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqWE1MT2JqQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpDcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9ialJlZmxlY3RlZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJl
ZmxlY3RlZFVTVlVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tSW50ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9i
alJlZmxlY3RlZEN1c3RvbVVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RP
YmpUeXBlZEFycmF5QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ3VzdG9tQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPbndl
YmtpdGZvbyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5k
U2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakFueUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqSW1tdXRhYmxlUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyYXdi
ZXJyeSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpJZCk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRF
bnVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialN0cmluZ2lmaWVyQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvbjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhv
ZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Qnl0ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkJ5dGVNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9jdGV0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
QXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
TnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbldp
dGhNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q3VzdG9tTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dFN0YXRlVm9pZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRTdGF0ZU9iaik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1l
bnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1
bHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdv
T3B0aW9uYWxBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3Ry
aW5nQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNV
bmRlZmluZWQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
Z0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxMb25nTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25n
TG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFNlcXVlbmNlSXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW4pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEFueSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlcklzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlv
bkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlv
bkFuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENh
bGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDEwKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDExKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIx
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01l
dGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoT3B0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRo
b2RXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Myk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JbW11dGFi
bGVQb2ludEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25Qcm9taXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VG
dW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJv
bWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudFByb21pc2UpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRG
dW5jdGlvbjFQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yUHJvbWlzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1
bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25U
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNl
cHRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2spOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
T3ZlcmxvYWQyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxPdmVybG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRp
b25hbE92ZXJsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQXR0YWNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25z
dHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMSk6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNCk6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0
cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMSk6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
V2l0aFNlcXVlbmNlMik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhT
ZXF1ZW5jZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T3Zl
cnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbSk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VSZWFkb25seVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1
Yk9iaik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9u
Z0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVk
ZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
dHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRS
ZXF1aXJlc0luY2x1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc2F0dHJpYnV0
ZVJlYWRvbmx5KToKKyAgICAgICAgKFdlYkNvcmU6OmpzYXR0cmlidXRlQ29uc3RydWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6anNyZWFkb25seUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTcmVhZG9u
bHlDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNT
dGF0ZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2Qp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjp0b0pTUHJpbWl0aXZlKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNl
Ojptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAoT2JqY0luc3RhbmNl
OjppbnZva2VNZXRob2QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6Ok9iamNGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0FycmF5OjpzZXRWYWx1ZUF0KToKKyAgICAgICAg
KEpTQzo6QmluZGluZ3M6Ok9iamNBcnJheTo6dmFsdWVBdCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X3V0aWxpdHkuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW06CisgICAg
ICAgIChKU0M6OkJpbmRpbmdzOjp0aHJvd0Vycm9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGlt
ZV9hcnJheS5jcHA6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6bGVuZ3RoR2V0dGVyKToK
KyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpwdXQpOgorICAgICAgICAoSlNDOjpSdW50aW1l
QXJyYXk6OnB1dEJ5SW5kZXgpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6
CisgICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcik6CisgICAgICAgIChK
U0M6OmNhbGxSdW50aW1lTWV0aG9kKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZmFsbGJhY2tPYmpl
Y3RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZmllbGRH
ZXR0ZXIpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6bWV0aG9kR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpwdXQpOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6ZGVmYXVsdFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorCiAyMDE2LTA4
LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgRml4IFdpbmRvd3MgYnVpbGQgYWZ0ZXIgcjIwNTE2MQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNl
c3Npb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNSArNDAsMTggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlT
ZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Np
b24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiQXBwbGVQ
YXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24iKSk7CiAKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBwbGVQYXlTZXNzaW9uOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZN
RXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRl
KSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgdWludDE2X3Qgc3RhdHVzID0g
Y29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKQEAgLTcwLDE1ICs3MywxOCBAQCBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21w
bGV0ZVNoaXBwCiAKIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Npb246OmNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTQXBwbGVQYXlTZXNz
aW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxlUGF5U2Vzc2lvbio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJBcHBsZVBheVNlc3Npb24i
LCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5
U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbiIpKTsKIAogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNBcHBsZVBheVNlc3Npb246Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1F
cnJvcigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB1aW50MTZfdCBzdGF0dXMgPSBj
b252ZXJ0PHVpbnQxNl90PihzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pOwpAQCAtMTA0LDE1ICsxMTAsMTggQEAgSlNWYWx1ZSBKU0FwcGxlUGF5U2Vzc2lvbjo6Y29t
cGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVBheW1lbnRN
ZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CiAgICAgSlNBcHBsZVBheVNlc3Np
b24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQYXlTZXNzaW9uKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIkFwcGxlUGF5U2Vzc2lvbiIs
ICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIkFwcGxlUGF5U2Vz
c2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7CiAKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBwbGVQYXlTZXNzaW9uOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3Io
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRGljdGlvbmFyeSBuZXdUb3RhbCA9IHsg
JnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCbG9iQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYzLDEyICs2
NCwxNSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSYgZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3Ig
PSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NF
UlQoanNDb25zdHJ1Y3Rvcik7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiQmxvYiIpOworICAgICAgICByZXR1cm4gdGhyb3dD
b25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKGV4ZWMsIHNj
b3BlLCAiQmxvYiIpOwogCiAgICAgaWYgKCFleGVjLmFyZ3VtZW50Q291bnQoKSkgewogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgQmxvYjo6Y3JlYXRlKCkpKTsKQEAgLTg3LDcgKzkxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogICAgICAgICBKU1Zh
bHVlIGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgxKTsKIAog
ICAgICAgICBpZiAoIWJsb2JQcm9wZXJ0eUJhZ1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgIlNlY29uZCBhcmd1bWVudCBvZiB0aGUg
Y29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0Iik7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJTZWNvbmQgYXJndW1lbnQgb2YgdGhlIGNv
bnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIE9iamVjdCIpOwogCiAgICAgICAgIC8vIEdpdmVuIHRo
ZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFuIG9iamVjdC4KICAgICAgICAg
SlNPYmplY3QqIGJsb2JQcm9wZXJ0eUJhZ09iamVjdCA9IGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlLnRv
T2JqZWN0KCZleGVjKTsKQEAgLTEwMiw3ICsxMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICAgICAgaWYgKGNvbnRhaW5zRW5kaW5ncykgewogICAg
ICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50IiAmJiBlbmRpbmdzICE9ICJuYXRp
dmUiKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCAiVGhl
IGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFuc3BhcmVudFwiIG9yIFwibmF0
aXZlXCIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywg
c2NvcGUsICJUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJlIGVpdGhlciBcInRyYW5zcGFyZW50
XCIgb3IgXCJuYXRpdmVcIiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQXR0ZW1wdCB0byBn
ZXQgdGhlIHR5cGUgcHJvcGVydHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzQ4LDggKzM0OCwxMSBAQCBib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cHV0RGVsZWdh
dGUoCiAKIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0
aG1EaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiArNTQsOSBAQCBlbnVtIGNsYXNz
IEhhc2hSZXF1aXJlbWVudCB7CiAKIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5Ojpn
ZXRBbGdvcml0aG1JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciYgYWxnb3JpdGhtSWRlbnRpZmllcikKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIHR5cGVkZWYgKEFsZ29yaXRobSBvciBET01TdHJpbmcpIEFsZ29yaXRobUlk
ZW50aWZpZXI7CiAKICAgICBTdHJpbmcgYWxnb3JpdGhtTmFtZTsKQEAgLTgxLDcgKzg0LDcgQEAg
Ym9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFsZwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIWFsZ29yaXRobU5hbWUuY29udGFpbnNPbmx5QVNDSUkoKSkgewot
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTIyLDgg
KzEyNSwxMSBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3JpdGhtKEpTRGljdGlvbmFyCiAKIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzQ2JjUGFyYW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTE0MCw3ICsxNDYsNyBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+CiAgICAgfQogCiAgICAgaWYgKGl2RGF0YS5zZWNvbmQgIT0gMTYpIHsK
LSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVj
LCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0ZXMiKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCAiQUVTLUNC
QyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0ZXMiKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtMTUxLDggKzE1NywxMSBAQCBzdGF0aWMgUmVmUHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4gY3JlYXRlQWVzS2V5R2VuUGFyYW1zKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTY5
LDggKzE3OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAK
IHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlSG1hY1BhcmFt
cyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTE4Nyw4ICsxOTksMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+IGNyZWF0ZUhtYWNLZXlQYXJhbXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMDksOCAr
MjI0LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3Rh
dGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FLZXlHZW5QYXJh
bXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzIsNyArMjUwLDcgQEAgc3RhdGljIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IHB1YmxpY0V4
cG9uZW50QXJyYXkgPSB0b1VpbnQ4QXJyYXkocHVibGljRXhwb25lbnRWYWx1ZSk7CiAgICAgaWYg
KCFwdWJsaWNFeHBvbmVudEFycmF5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
IkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVudCIpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiRXhwZWN0ZWQgYSBVaW50OEFycmF5IGluIHB1Ymxp
Y0V4cG9uZW50Iik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXN1bHQt
PnB1YmxpY0V4cG9uZW50LmFwcGVuZChwdWJsaWNFeHBvbmVudEFycmF5LT5kYXRhKCksIHB1Ymxp
Y0V4cG9uZW50QXJyYXktPmJ5dGVMZW5ndGgoKSk7CkBAIC0yNTAsOCArMjY4LDExIEBAIHN0YXRp
YyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FPYWVwUGFyYW1zKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTI4NCw4ICszMDUsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVJzYVNz
YVBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDEzICszOCwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNDcnlwdG86OmdldFJhbmRvbVZh
bHVlcyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFy
Z3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEpTVmFsdWUgYnVmZmVyID0gc3RhdGUuYXJn
dW1lbnQoMCk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXlCdWZmZXJWaWV3ID0g
dG9BcnJheUJ1ZmZlclZpZXcoYnVmZmVyKTsKICAgICBpZiAoIWFycmF5QnVmZmVyVmlldykKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMoYXJyYXlCdWZmZXJWaWV3LmdldCgpLCBlYyk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRp
b25KV0suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTUyLDYgKzUyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9v
bCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29u
c3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSWRl
bnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBrZXkpOwog
ICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpHZXQpOwogCkBAIC02MSw3ICs2NCw3IEBAIHN0YXRpYyBib29sIGdldEpTQXJyYXlGcm9t
SlNPTihFeGVjU3RhdGUKICAgICBKU1ZhbHVlIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBp
ZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBpZiAo
IWlzSlNBcnJheSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5n
Ojpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVzXCIgSlNPTiBrZXkiLCAga2V5KSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgiRXhw
ZWN0ZWQgYW4gYXJyYXkgZm9yIFwiJXNcIiBKU09OIGtleSIsICBrZXkpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzIsNiArNzUsOSBAQCBzdGF0aWMgYm9vbCBnZXRKU0Fy
cmF5RnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdldFN0cmluZ0Zyb21KU09OKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNoYXIqIGtleSwgU3RyaW5nJiBy
ZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNv
biwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTg0LDcgKzkw
LDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJvbUpTT04oRXhlY1N0YXRlKgogICAgICAgICAv
LyBDYW4gZ2V0IGFuIG91dCBvZiBtZW1vcnkgZXhjZXB0aW9uLgogICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3RlZCBhIHN0cmluZyB2YWx1ZSBm
b3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgc3RyaW5nIHZhbHVlIGZvciBcIiVz
XCIgSlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTkzLDYgKzk5LDkgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJvbUpTT04oRXhlY1N0YXRlKgog
CiBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMs
IGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTEwMiw3ICsxMTEsNyBAQCBzdGF0aWMgYm9vbCBnZXRC
b29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gc2xvdC5nZXRW
YWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
KTsKICAgICBpZiAoIWpzVmFsdWUuaXNCb29sZWFuKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgYm9vbGVhbiB2YWx1ZSBmb3IgXCIl
c1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgYm9vbGVhbiB2YWx1ZSBmb3IgXCIlc1wiIEpT
T04ga2V5IiwgIGtleSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMTIs
MTcgKzEyMSwyMCBAQCBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAK
IHN0YXRpYyBib29sIGdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGJhc2U2NHVybEVuY29kZWROdW1iZXI7CiAg
ICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihleGVjLCBqc29uLCBrZXksIGJhc2U2NHVybEVuY29k
ZWROdW1iZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWJhc2U2NFVSTERl
Y29kZShiYXNlNjR1cmxFbmNvZGVkTnVtYmVyLCByZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRh
dGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBKV0siKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0WzBdID09IDApIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdlciBt
dXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQgdGhl
IHZhbHVlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9j
dGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC0xMzIsMTYgKzE0NCwxOSBAQCBzdGF0aWMgYm9vbCBnZXRCaWdJbnRlZ2VyVmVj
dG9yRnJvbUpTT04oCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OkpTQ3J5cHRvS2V5U2Vy
aWFsaXphdGlvbkpXSyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYganNvblN0cmluZykK
ICAgICA6IG1fZXhlYyhleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBqc29uVmFs
dWUgPSBKU09OUGFyc2UoZXhlYywganNvblN0cmluZyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWpzb25WYWx1ZSB8fCAhanNvblZh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uIikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9qc29uLnNldChtX2V4ZWMtPnZtKCks
IGFzT2JqZWN0KGpzb25WYWx1ZSkpOworICAgIG1fanNvbi5zZXQodm0sIGFzT2JqZWN0KGpzb25W
YWx1ZSkpOwogfQogCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6On5KU0NyeXB0b0tleVNl
cmlhbGl6YXRpb25KV0soKQpAQCAtMTY1LDYgKzE4MCw5IEBAIHN0YXRpYyBSZWY8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4gY3IKIAogT3B0aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlND
cnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdvcml0aG0oQ3J5cHRvQWxnb3Jp
dGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMqIHN1Z2dl
c3RlZFBhcmFtZXRlcnMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZ2V0U3Ry
aW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJhbGciLCBtX2p3a0FsZ29yaXRobU5h
bWUpKSB7CiAgICAgICAgIC8vIEFsZ29yaXRobSBpcyBvcHRpb25hbCBpbiBKV0suCiAgICAgICAg
IHJldHVybiBDcnlwdG9BbGdvcml0aG1QYWlyIHsgc3VnZ2VzdGVkQWxnb3JpdGhtLCBzdWdnZXN0
ZWRQYXJhbWV0ZXJzIH07CkBAIC0yMTYsNyArMjM0LDcgQEAgT3B0aW9uYWw8Q3J5cHRvQWxnb3Jp
dGhtUGFpcj4gSlNDcnlwdG9LZQogICAgICAgICBhbGdvcml0aG0gPSBhbGdvcml0aG1SZWdpc3R5
LmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNfS1cpOwogICAgICAgICBwYXJh
bWV0ZXJzID0gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzKTsKICAgICB9
IGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sg
YWxnb3JpdGhtICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihtX2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGFsZ29yaXRobSAiICsgbV9qd2tBbGdv
cml0aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogCkBAIC0yNTQsOSAr
MjcyLDEyIEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+IEpTQ3J5cHRvS2UKIAogc3Rh
dGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBDcnlwdG9LZXlVc2Fn
ZSYgdXNhZ2VzLCBjb25zdCBTdHJpbmcmIG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiB0cnlPcGVy
YXRpb24sIENyeXB0b0tleVVzYWdlIHRyeVVzYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KG9wZXJhdGlvbiA9PSB0cnlPcGVyYXRpb24pIHsKICAgICAgICAgaWYgKHVzYWdlcyAmIHRyeVVz
YWdlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpX
SyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlvbiIpKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGNv
bnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlvbiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICB1c2FnZXMgfD0gdHJ5VXNhZ2U7CkBAIC0yNjYsNiArMjg3
LDkgQEAgc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRlKgogCiB2b2lkIEpT
Q3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKENyeXB0b0tleVVzYWdl
JiBzdWdnZXN0ZWRVc2FnZXMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENyeXB0b0tl
eVVzYWdlIGp3a1VzYWdlcyA9IDA7CiAKICAgICBKU0FycmF5KiBrZXlPcHM7CkBAIC0yNzUsNyAr
Mjk5LDcgQEAgdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uYwogICAgICAg
ICAgICAgU3RyaW5nIG9wZXJhdGlvbjsKICAgICAgICAgICAgIGlmICghanNWYWx1ZS5nZXRTdHJp
bmcobV9leGVjLCBvcGVyYXRpb24pKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRlIGNvdWxkIG5vdCBiZSBwcm9jZXNz
ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRlIGNvdWxkIG5vdCBiZSBwcm9jZXNz
ZWQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKCF0cnlKV0tLZXlPcHNWYWx1ZShtX2V4ZWMsIGp3a1VzYWdlcywgb3BlcmF0aW9uLCBB
U0NJSUxpdGVyYWwoInNpZ24iKSwgQ3J5cHRvS2V5VXNhZ2VTaWduKSkKQEAgLTMxMCw3ICszMzQs
NyBAQCB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jCiAgICAgICAgIGVs
c2UgaWYgKGp3a1VzZVN0cmluZyA9PSAic2lnIikKICAgICAgICAgICAgIGp3a1VzYWdlcyB8PSAo
Q3J5cHRvS2V5VXNhZ2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgIlVuc3VwcG9ydGVkIEpXSyBr
ZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJcIiIpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIlVuc3VwcG9ydGVkIEpXSyBrZXkgdXNlIHZhbHVl
IFwiIiArIGp3a1VzZVN0cmluZyArICJcIiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMzYyLDIxICszODYsMjQgQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6
YXRpb25KV0s6OmtleVNpegogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlw
dG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRTZXF1ZW5jZSgpIGNvbnN0CiB7Cisg
ICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBrZXlCYXNlNjRVUkw7CiAgICAgaWYgKCFnZXRTdHJp
bmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImsiLCBrZXlCYXNlNjRVUkwpKSB7CiAg
ICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNyZXQga2V5IGRhdGEgaXMgbm90IHByZXNl
bnQgaXMgSldLIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJTZWNyZXQga2V5IGRhdGEgaXMgbm90IHByZXNlbnQgaXMgSldLIikpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBWZWN0b3I8dWludDhfdD4gb2N0
ZXRTZXF1ZW5jZTsKICAgICBpZiAoIWJhc2U2NFVSTERlY29kZShrZXlCYXNlNjRVUkwsIG9jdGV0
U2VxdWVuY2UpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBKV0siKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29kZSBi
YXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG9jdGV0U2VxdWVuY2Uuc2l6ZSgpICogOCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlk
IGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9l
eGVjLCBzY29wZSwgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgIiArIG1fandrQWxnb3JpdGht
TmFtZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMzg1LDI0ICs0MTIs
MjcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvSwogCiBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlE
YXRhUlNBQ29tcG9uZW50cygpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFZlY3Rvcjx1
aW50OF90PiBtb2R1bHVzOwogICAgIFZlY3Rvcjx1aW50OF90PiBleHBvbmVudDsKICAgICBWZWN0
b3I8dWludDhfdD4gcHJpdmF0ZUV4cG9uZW50OwogCiAgICAgaWYgKCFnZXRCaWdJbnRlZ2VyVmVj
dG9yRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJuIiwgbW9kdWx1cykpIHsKICAgICAg
ICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBcIm5cIiBtZW1iZXIgaXMgbWlz
c2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiblwiIG1lbWJlciBpcyBtaXNzaW5nIikpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG1vZHVs
dXMuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5IHNp
emUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3IgIiAr
IG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgbV9qc29uLmdldCgp
LCAiZSIsIGV4cG9uZW50KSkgewogICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWly
ZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJlXCIgbWVt
YmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
NDU4LDIyICs0ODgsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRv
SwogICAgICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBpZiAoIWVsZW1lbnQuaXNPYmplY3QoKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBcIm90aFwiIGFycmF5
IG1lbWJlciBpcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
bV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgXCJvdGhcIiBhcnJheSBtZW1iZXIgaXMg
bm90IGFuIG9iamVjdCIpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgYXNPYmpl
Y3QoZWxlbWVudCksICJyIiwgaW5mby5wcmltZUZhY3RvcikpIHsKICAgICAgICAgICAgIGlmICgh
bV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvciht
X2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmltZSBmYWN0b3IgZm9yIGEgcHJpbWUg
aW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmltZSBmYWN0b3IgZm9y
IGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpT
T04obV9leGVjLCBhc09iamVjdChlbGVtZW50KSwgImQiLCBpbmZvLmZhY3RvckNSVEV4cG9uZW50
KSkgewogICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IGZh
Y3RvciBDUlQgZXhwb25lbnQgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwor
ICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9uZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIg
ZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgYXNPYmplY3Qo
ZWxlbWVudCksICJ0IiwgaW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCkpIHsKICAgICAgICAgICAg
IGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGNvZWZmaWNp
ZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQg
ZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnki
KSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBvdGhl
clByaW1lSW5mb3MuYXBwZW5kKGluZm8pOwpAQCAtNDg0LDEwICs1MTQsMTMgQEAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvSwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
S2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhKCkgY29uc3QKIHsK
KyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3a0tleVR5cGU7CiAgICAgaWYgKCFnZXRTdHJp
bmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImt0eSIsIGp3a0tleVR5cGUpKSB7CiAg
ICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJrdHlcIiBtZW1iZXIg
aXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwia3R5XCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNDk3LDcgKzUzMCw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sKICAgICBpZiAoandrS2V5VHlw
ZSA9PSAiUlNBIikKICAgICAgICAgcmV0dXJuIGtleURhdGFSU0FDb21wb25lbnRzKCk7CiAKLSAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiArIGp3
a0tleVR5cGUpOworICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsICJVbnN1cHBvcnRl
ZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC01NjAsNiArNTkzLDkgQEAgc3RhdGljIHZvaWQgYWRkQm9vbFRvSlNPTihFeGVjU3RhdGUq
IGV4ZQogCiBzdGF0aWMgdm9pZCBhZGRKV0tBbGdvcml0aG1Ub0pTT04oRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCoganNvbiwgY29uc3QgQ3J5cHRvS2V5JiBrZXkpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBTdHJpbmcgandrQWxnb3JpdGhtOwogICAgIHN3aXRjaCAoa2V5LmFsZ29yaXRobUlkZW50
aWZpZXIoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6SE1BQzoKQEAg
LTY1Miw3ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBhZGRKV0tBbGdvcml0aG1Ub0pTT04oRXhlY1N0
CiAKICAgICBpZiAoandrQWxnb3JpdGhtLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFRoZSBzcGVj
IGRvZXNuJ3QgY3VycmVudGx5IHRlbGwgd2hldGhlciBleHBvcnQgc2hvdWxkIGZhaWwsIG9yIGp1
c3Qgc2tpcCAiYWxnIiAod2hpY2ggaXMgYW4gb3B0aW9uYWwga2V5IGluIEpXSykuCi0gICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5IGFsZ29yaXRobSBhbmQgc2l6
ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sgYWxnb3JpdGhtIGlkZW50aWZpZXIiKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIktleSBhbGdvcml0aG0g
YW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldLIGFsZ29yaXRobSBpZGVudGlmaWVyIikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02ODksMTAgKzcyNSwxMyBAQCBzdGF0aWMgdm9p
ZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0YXRlKiBlCiAKIFN0cmluZyBKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0b0tleSYg
a2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+
IGtleURhdGEgPSBrZXkuZXhwb3J0RGF0YSgpOwogICAgIGlmICgha2V5RGF0YSkgewogICAgICAg
ICAvLyBUaGlzIGdlbmVyYWxseSBzaG91bGRuJ3QgaGFwcGVuIGFzIGxvbmcgYXMgYWxsIGtleSB0
eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLCBidXQgYXMgdW5kZXJseWluZyBsaWJyYXJpZXMg
cmV0dXJuIGVycm9ycywgdGhlcmUgbWF5IGJlIHNvbWUgcmFyZSBmYWlsdXJlIGNvbmRpdGlvbnMu
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhw
b3J0IGtleSBtYXRlcmlhbCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgIH0KIApAQCAtNzEzLDcgKzc1Miw3IEBAIFN0cmluZyBKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmkKICAgICBlbHNlIGlmIChpczxDcnlwdG9LZXlE
YXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpKQogICAgICAgICBidWlsZEpTT05Gb3JSU0FDb21w
b25lbnRzKGV4ZWMsIGRvd25jYXN0PENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzPigqa2V5RGF0
YSksIHJlc3VsdCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiS2V5IGRvZXNuJ3Qgc3VwcG9ydCBleHBvcnRLZXkiKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIktleSBkb2Vzbid0IHN1cHBv
cnQgZXhwb3J0S2V5IikpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcAkocmV2aXNpb24gMjA1MTc1KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsMTIgKzM2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9v
bCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIodmFsdWUpKQogICAgICAg
ICByZXN1bHQgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5k
YXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgZWxzZSBpZiAoUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbHVlKSkKICAgICAg
ICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlclZp
ZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwogICAgIGVsc2Ug
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlC
dWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRv
T3BlcmF0aW9uRGF0YSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlCdWZmZXJWaWV3IG9iamVjdHMg
Y2FuIGJlIHBhc3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRhIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5LDcgKzEwOSw5IEBAIHZvaWQgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVm
PEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKKyAgICBWTSYgdm0gPSBtX2lz
b2xhdGVkV29ybGQtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghbV9jb25zdHJ1Y3Rv
cikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHZvaWQgSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKIAogICAgIEVsZW1lbnQqIHdyYXBwZWRFbGVtZW50ID0g
SlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50KTsKICAgICBpZiAoIXdyYXBwZWRF
bGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50KSB7Ci0gICAgICAgIHRocm93SW52
YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZmFpbGVk
IHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICB0aHJvd0ludmFsaWRTdGF0ZUVycm9y
KCpzdGF0ZSwgc2NvcGUsICJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBmYWlsZWQgdG8gdXBn
cmFkZSBhbiBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgd3JhcHBlZEVs
ZW1lbnQtPnNldEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRSZWdp
c3RyeUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMTMgKzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEpTT2JqZWN0
KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmplY3QmIHBy
b3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIGNhbGxiYWNrID0gcHJvdG90eXBlLmdldCgmc3RhdGUsIGlkKTsKICAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChjYWxsYmFj
ay5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWNhbGxi
YWNrLmlzRnVuY3Rpb24oKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQSBj
dXN0b20gZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gY2FsbGJhY2suZ2V0T2JqZWN0KCk7CkBA
IC01Niw4ICs1OSwxMSBAQCBzdGF0aWMgSlNPYmplY3QqIGdldEN1c3RvbUVsZW1lbnRDYWxsYmFj
CiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNkb20tY3VzdG9tZWxlbWVudHJlZ2lz
dHJ5LWRlZmluZQogSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWUoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRlKS0+dG9BdG9taWNTdHJpbmco
JnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKQEAgLTY1
LDcgKzcxLDcgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdpc3RyeTo6ZGVmaW5lKAogCiAg
ICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7
CiAgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJUaGUgc2Vjb25kIGFyZ3Vt
ZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0
IGJlIGEgY29uc3RydWN0b3IiKSk7CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gY29uc3Ry
dWN0b3JWYWx1ZS5nZXRPYmplY3QoKTsKIAogICAgIC8vIEZJWE1FOiBUaHJvdyBhIFR5cGVFcnJv
ciBpZiBjb25zdHJ1Y3RvciBkb2Vzbid0IGluaGVyaXQgZnJvbSBIVE1MRWxlbWVudC4KQEAgLTc1
LDExICs4MSwxMSBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoCiAg
ICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OlZhbGlkOgogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Q29u
ZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczoKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUg
YXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOworICAgICAgICByZXR1cm4gdGhyb3dT
eW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5h
bWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOwogICAg
IGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKLSAgICAg
ICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBl
bGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOworICAgICAgICByZXR1cm4gdGhy
b3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50
IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOwogICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5h
bWVWYWxpZGF0aW9uU3RhdHVzOjpDb250YWluc1VwcGVyQ2FzZToKLSAgICAgICAgcmV0dXJuIHRo
cm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUg
Y2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1l
bnQgbmFtZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNlIGxldHRlciIpKTsKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogQ2hlY2sgcmUtZW50cmFuY3kgaGVyZS4KQEAgLTg3LDIxICs5MywyMCBA
QCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUoCiAKICAgICBDdXN0b21F
bGVtZW50UmVnaXN0cnkmIHJlZ2lzdHJ5ID0gd3JhcHBlZCgpOwogICAgIGlmIChyZWdpc3RyeS5m
aW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpIHsKLSAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJv
cihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVt
ZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOworICAgICAgICB0aHJvd05vdFN1cHBvcnRl
ZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxl
IGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAocmVnaXN0cnkuY29udGFpbnNDb25z
dHJ1Y3Rvcihjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdGhyb3dOb3RTdXBwb3J0ZWRFcnJvcihz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50
cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOworICAgICAgICB0aHJvd05vdFN1cHBvcnRlZEVycm9y
KHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRpcGxlIGN1c3Rv
bSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOwogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKICAgICB9CiAKLSAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdCgpLT52bSgpOwog
ICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjb25zdHJ1Y3Rvci0+Z2V0KCZzdGF0ZSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmICghcHJvdG90eXBlVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcidzIHByb3RvdHlwZSBtdXN0IGJlIGFu
IG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IncyBwcm90b3R5cGUgbXVz
dCBiZSBhbiBvYmplY3QiKSk7CiAgICAgSlNPYmplY3QmIHByb3RvdHlwZU9iamVjdCA9ICphc09i
amVjdChwcm90b3R5cGVWYWx1ZSk7CiAKICAgICBRdWFsaWZpZWROYW1lIG5hbWUobnVsbEF0b20s
IGxvY2FsTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDIwNTE3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzOCwxOCArMzM4LDI0IEBAIEpTVmFsdWUgY3JlYXRlRE9NRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXgKIAogdm9pZCBzZXRET01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb25Db2RlIGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFlYyB8fCBleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMpKTsKKyAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKGV4ZWMsIGVjKSk7CiB9CiAKIHZv
aWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmIGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFlYy5jb2RlIHx8
IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYy5jb2RlLCBl
Yy5tZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZURPTUV4
Y2VwdGlvbihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CiB9CiAKICN1bmRlZiBUUllfVE9f
Q1JFQVRFX0VYQ0VQVElPTgpAQCAtNDMwLDEzICs0MzYsMTYgQEAgc3RhdGljIFN0cmluZyByYW5n
ZUVycm9yU3RyaW5nKGRvdWJsZSB2YQogCiBzdGF0aWMgZG91YmxlIGVuZm9yY2VSYW5nZShFeGVj
U3RhdGUmIHN0YXRlLCBkb3VibGUgeCwgZG91YmxlIG1pbmltdW0sIGRvdWJsZSBtYXhpbXVtKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWlu
aW11bSwgbWF4aW11bSkpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBy
YW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0pKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogICAgIHggPSB0cnVuYyh4KTsKICAgICBpZiAoeCA8IG1pbmltdW0gfHwgeCA+IG1h
eGltdW0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCByYW5nZUVycm9yU3RyaW5n
KHgsIG1pbmltdW0sIG1heGltdW0pKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBtYXhpbXVtKSk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICByZXR1cm4geDsKQEAgLTQ3NSw2ICs0ODQsOSBAQCBzdHJ1Y3Qg
SW50VHlwZUxpbWl0czx1aW50MTZfdD4gewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGF0aWMg
aW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIElu
dGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWUgJiYgc3RkOjpp
c19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25seSBiZSB1c2VkIGZvciBzaWduZWQgaW50
ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVkZWYgSW50VHlwZUxpbWl0czxUPiBMaW1pdHNUcmFp
dDsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNT
dGF0ZSYgCiAgICAgICAgIGNhc2UgTm9ybWFsQ29udmVyc2lvbjoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENsYW1wOgogICAgICAgICAgICAgcmV0
dXJuIGQgPCBMaW1pdHNUcmFpdDo6bWluVmFsdWUgPyBMaW1pdHNUcmFpdDo6bWluVmFsdWUgOiBM
aW1pdHNUcmFpdDo6bWF4VmFsdWU7CkBAIC01MjEsNiArNTMzLDkgQEAgc3RhdGljIGlubGluZSBU
IHRvU21hbGxlckludChFeGVjU3RhdGUmIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGF0aWMg
aW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBJ
bnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25lZDxUPjo6dmFsdWUgJiYgc3Rk
Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25seSBiZSB1c2VkIGZvciB1bnNpZ25l
ZCBpbnRlZ3JhbCB0eXBlcyIpOwogCiAgICAgdHlwZWRlZiBJbnRUeXBlTGltaXRzPFQ+IExpbWl0
c1RyYWl0OwpAQCAtNTMzLDcgKzU0OCw3IEBAIHN0YXRpYyBpbmxpbmUgVCB0b1NtYWxsZXJVSW50
KEV4ZWNTdGF0ZSYKICAgICAgICAgY2FzZSBOb3JtYWxDb252ZXJzaW9uOgogICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFQ+KGQpOwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNl
IENsYW1wOgogICAgICAgICAgICAgcmV0dXJuIExpbWl0c1RyYWl0OjptYXhWYWx1ZTsKQEAgLTc2
Miw2ICs3NzcsOSBAQCBET01XaW5kb3cmIGZpcnN0RE9NV2luZG93KEV4ZWNTdGF0ZSogZXhlCiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJpdHlSZXBvcnRpbmdPcHRpb24gcmVw
b3J0aW5nT3B0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdGFyZ2V0RG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzcyLDcgKzc5MCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0MKIAogICAgIHN3aXRjaCAocmVwb3J0aW5nT3B0
aW9uKSB7CiAgICAgY2FzZSBUaHJvd1NlY3VyaXR5RXJyb3I6Ci0gICAgICAgIHRocm93U2VjdXJp
dHlFcnJvcigqc3RhdGUsIHRhcmdldERvY3VtZW50LT5kb21XaW5kb3coKS0+Y3Jvc3NEb21haW5B
Y2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CisgICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigq
c3RhdGUsIHNjb3BlLCB0YXJnZXREb2N1bWVudC0+ZG9tV2luZG93KCktPmNyb3NzRG9tYWluQWNj
ZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIExvZ1Nl
Y3VyaXR5RXJyb3I6CiAgICAgICAgIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUodGFyZ2V0RG9j
dW1lbnQtPmZyYW1lKCksIHRhcmdldERvY3VtZW50LT5kb21XaW5kb3coKS0+Y3Jvc3NEb21haW5B
Y2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CkBAIC03OTksOSArODE3LDkgQEAgYm9vbCBCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVAogICAgIHJldHVybiB0YXJnZXQgJiYgY2Fu
QWNjZXNzRG9jdW1lbnQoc3RhdGUsICZ0YXJnZXQtPmRvY3VtZW50KCksIExvZ1NlY3VyaXR5RXJy
b3IpOwogfQogICAgIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRocm93VHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogc3RhdGlj
IHZvaWQgYXBwZW5kQXJndW1lbnRNdXN0QmUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgdW5zaWdu
ZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCkBAIC04MzYsNzUgKzg1NCw3
NSBAQCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4CiAgICAgY29udGV4
dC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJv
ciwgbWFrZVN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIHNldCBwcm9wZXJ0eSAnIiwgYXR0
cmlidXRlTmFtZSwgIicgb24gYSBub24tIiwgaW50ZXJmYWNlTmFtZSwgIiBvYmplY3QuIikpOwog
fQogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogbWVzc2Fn
ZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKICAgICBTdHJpbmcgbWVz
c2FnZVN0cmluZyhtZXNzYWdlKTsKLSAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZtZXNzYWdl
U3RyaW5nKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CiB9CiAK
LXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCit2b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQog
ewogICAgIEFTU0VSVCghc3RhdGUuaGFkRXhjZXB0aW9uKCkpOwogICAgIFN0cmluZyBtZXNzYWdl
U3RyaW5nKG1lc3NhZ2UpOwotICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3NhZ2VTdHJp
bmcpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRp
b24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3NhZ2VTdHJpbmcpKTsKIH0KIAotdm9p
ZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBB
U1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKLSAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgU0VDVVJJVFlfRVJSLCBtZXNz
YWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0
aW9uKCZzdGF0ZSwgU0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpT
VmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNv
bnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgs
IGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAg
IGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgib25lIG9mOiAiKTsKICAgICBidWlsZGVyLmFwcGVuZChl
eHBlY3RlZFZhbHVlcyk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBidWls
ZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25l
ZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGlu
dGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFs
dWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBj
aGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYXBwZW5k
QXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJndW1lbnROYW1lLCBpbnRl
cmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYSBm
dW5jdGlvbiIpOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgYnVpbGRlci50
b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBi
dWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4
LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUp
CitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4
LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNl
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUp
CiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJl
KGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VO
YW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYW4gaW5zdGFu
Y2Ugb2YgIik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRUeXBlKTsKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0K
IAotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUp
Cit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVND
SUlMaXRlcmFsKCJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZSIpKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5
cGUiKSk7CiB9CiAKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVO
YW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit2b2lkIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRUeXBlKQogewotICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBtYWtlU3RyaW5n
KCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1dGVOYW1lLCAiIGF0dHJpYnV0ZSBt
dXN0IGJlIGFuIGluc3RhbmNlIG9mICIsIGV4cGVjdGVkVHlwZSkpOworICAgIHRocm93VHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywg
YXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAiLCBleHBl
Y3RlZFR5cGUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0Nv
bnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVSZWZlcmVu
Y2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNlTmFtZSwgIiBjb25zdHJ1Y3RvciBh
c3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpKTsKKyAgICByZXR1
cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKCZzdGF0
ZSwgbWFrZVN0cmluZyhpbnRlcmZhY2VOYW1lLCAiIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZXhl
Y3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKSkpOwogfQogCi12b2lkIHRocm93U2VxdWVu
Y2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQordm9pZCB0aHJvd1NlcXVlbmNlVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkKIHsK
LSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJWYWx1ZSBpcyBub3QgYSBz
ZXF1ZW5jZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiB9CiAKLXZvaWQgdGhyb3dOb25GaW5pdGVU
eXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Io
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHByb3ZpZGVkIHZhbHVlIGlzIG5vbi1m
aW5pdGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZSIpKTsKIH0KIAogU3RyaW5nIG1ha2VH
ZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGF0dHJpYnV0ZU5hbWUpCkBAIC05MTIsMTQgKzkzMCwxNCBAQCBTdHJpbmcgbWFrZUdldHRl
clR5cGVFcnJvck1lc3NhZ2UoY29uc3QgCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlRoZSAiLCBp
bnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgZ2V0dGVyIGNhbiBvbmx5IGJlIHVz
ZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpOwogfQogCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK0pTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0
ZSwgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgYXR0cmlidXRlTmFt
ZSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIG1ha2VHZXR0
ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGF0dHJpYnV0ZU5hbWUpKTsKIH0KIAot
Ym9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNo
YXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCitib29sIHRocm93
U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFt
ZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVy
ZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBv
biBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAgIHRocm93VHlwZUVycm9yKHN0
YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmli
dXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50
ZXJmYWNlTmFtZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTI4LDkgKzk0Niw5IEBA
IFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2gKICAgICByZXR1cm4gbWFr
ZVN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGZ1bmN0aW9uTmFt
ZSwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIq
IGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKK0VuY29kZWRKU1ZhbHVl
IHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIG1ha2VUaGlzVHlwZUVy
cm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpKTsKKyAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoaW50ZXJm
YWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHZvaWQgY2FsbEZ1bmN0aW9uV2l0aEN1cnJl
bnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB0aGlzT2Jq
ZWN0LCBKU0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpAQCAtOTU1LDcgKzk3Myw5IEBAIHZvaWQg
RE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kKIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVjdG9yIHJlcXVp
cmVzICduZXcnIG9wZXJhdG9yIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJh
dG9yIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gMjA1
MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMywyNSArMTEzLDI1IEBAIERPTVdpbmRvdyYgZmlyc3RET01XaW5kb3co
SlNDOjpFeGVjU3RhdGUKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJm
YWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIq
IGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpOwogCi12b2lkIHRocm93
Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsK
LXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIq
IG1lc3NhZ2UpOwotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYpOwotdm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0
IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNo
YXIqIGV4cGVjdGVkVHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25z
dCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dOb25GaW5p
dGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhyb3dTZWN1cml0eUVycm9yKEpT
Qzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotV0VCQ09SRV9FWFBPUlQg
SlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIHVuc2lnbmVk
IGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVu
Y3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOwotV0VCQ09SRV9F
WFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9u
TmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhy
b3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSk7Cit2b2lkIHRocm93Tm90U3Vw
cG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFy
KiBtZXNzYWdlKTsKK3ZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwordm9pZCB0aHJvd0FycmF5
RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYpOwordm9p
ZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29w
ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHRocm93U2Vx
dWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsKK1dFQkNP
UkVfRVhQT1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRy
aWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsKK3ZvaWQgdGhyb3dTZWN1cml0eUVy
cm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKKworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50
TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgdW5zaWdu
ZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBm
dW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hh
ciogZXhwZWN0ZWRWYWx1ZXMpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIHVuc2ln
bmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciog
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpOworV0VCQ09S
RV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUs
IGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRV
bmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSk7CiAKIFN0cmluZyBtYWtlR2V0dGVyVHlwZUVycm9yTWVzc2Fn
ZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsK
IFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29uc3QgY2hhciogaW50ZXJmYWNlTmFt
ZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBj
aGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKLVdFQkNPUkVf
RVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1l
KTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZh
Y2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpU
aHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lKTsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUqIGdldENhY2hlZERPTVN0
cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CiBXRUJD
T1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxP
YmplY3QmLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CkBAIC00OTAs
OSArNDkwLDEyIEBAIGlubGluZSBpbnQzMl90IGZpbml0ZUludDMyVmFsdWUoSlNDOjpKU1YKIC8v
IFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2JqZWN0IGlzIGEgc2VxdWVuY2UgdHlwZSBwZXIg
c2VjdGlvbiA0LjEuMTMgb2YgdGhlIFdlYklETCBzcGVjLgogaW5saW5lIEpTQzo6SlNPYmplY3Qq
IHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCYgbGVuZ3RoKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQzo6SlNPYmplY3Qq
IG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAg
IHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTUwMSw3ICs1MDQsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGxlbmd0aFZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtNzE4LDI1ICs3MjEsMzMgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZG91YgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBKU1Q+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3Rh
dGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+PigpOwogICAgIH0KIAogICAgIFZlY3RvcjxSZWZQ
dHI8VD4+IHJlc3VsdDsKLSAgICBmb3JFYWNoSW5JdGVyYWJsZSgmZXhlYywgdmFsdWUsIFsmcmVz
dWx0XShKU0M6OlZNJiwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OkpTVmFsdWUganNWYWx1
ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKCZleGVjLCB2YWx1ZSwgWyZyZXN1bHRdKEpTQzo6
Vk0mIHZtLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlKSB7Cisg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBp
ZiAoanNWYWx1ZS5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKEpTVDo6dG9XcmFwcGVkKGpzVmFsdWUpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
dGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoKnN0YXRlKTsKKyAgICAgICAgICAgIHRocm93QXJy
YXlFbGVtZW50VHlwZUVycm9yKCpzdGF0ZSwgc2NvcGUpOwogICAgIH0pOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5
KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CisgICAgSlNDOjpW
TSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93U2VxdWVu
Y2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAy
MDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAx
NSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtNDUsNyArNDYsOSBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgewotICAgICAgICBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52
bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
ICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdh
bCBjb25zdHJ1Y3RvciIpKTsKICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpT
Qzo6anNOdWxsKCkpOwogICAgIH0KIApAQCAtMjI2LDggKzIyOSwxMCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpFCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpjYWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0KiBv
YmplY3QpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0
dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJv
cihzdGF0ZSwgaW5mbygpLT5jbGFzc05hbWUpOworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1
Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKHN0YXRlLCBzY29wZSwg
aW5mbygpLT5jbGFzc05hbWUpOwogICAgIHJldHVybiBjYWxsQ29uc3RydWN0b3Ioc3RhdGUsICpv
YmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZl
cnQuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDkgKzczLDExIEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBFbmFibGVJZkZsb2EKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgSlNUPiBpbmxpbmUgVCogY29udmVydFdyYXBwZXJUeXBlKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJc051bGxhYmxlIGlzTnVsbGFibGUpCiB7CisgICAg
SlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBUKiBvYmplY3QgPSBKU1Q6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAg
aWYgKCFvYmplY3QgJiYgKGlzTnVsbGFibGUgPT0gSXNOdWxsYWJsZTo6Tm8gfHwgIXZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICByZXR1cm4gb2JqZWN0Owog
fQogCkBAIC0yNzUsOSArMjc3LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjx1aW50
NjRfdD4gOiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWU+Ojp0eXBl
PiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewogICAgIHN0YXRpYyBUIGNvbnZlcnQoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFs
bG93KQogICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIGRvdWJsZSBudW1i
ZXIgPSB2YWx1ZS50b051bWJlcigmc3RhdGUpOwogICAgICAgICBpZiAoYWxsb3cgPT0gU2hvdWxk
QWxsb3dOb25GaW5pdGU6Ok5vICYmIFVOTElLRUxZKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpKQot
ICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICAgICAg
dGhyb3dOb25GaW5pdGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFQ+KG51bWJlcik7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2Fub24sIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMCw5ICsxMzEs
MTIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOgogdGVtcGxhdGU8
dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQga2luZCwgY29uc3QgY2hhciogcHJv
cGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIHdyYXBwZXIgPSBKU0M6
OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3RhdGUudGhpc1ZhbHVlKCkpOwogICAgIGlmIChV
TkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3Rh
dGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBKU1dyYXBwZXI6OmluZm8o
KS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QgPSAqd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgcmV0dXJuIEpTQzo6SlNW
YWx1ZTo6ZW5jb2RlKEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPjo6Y3JlYXRlKGdsb2JhbE9iamVj
dC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNET01JdGVyYXRvcjxKU1dyYXBwZXI+PihnbG9iYWxP
YmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIsIGtpbmQpKTsKIH0KQEAgLTE4MCw5
ICsxODQsMTIgQEAgYXBwZW5kRm9yRWFjaEFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYgcwogdGVt
cGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZv
ckVhY2goSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCiB7
CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gd3JhcHBlciA9IEpTQzo6anNEeW5hbWljQ2Fz
dDxKU1dyYXBwZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFw
cGVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgSlNXcmFwcGVy
OjppbmZvKCktPmNsYXNzTmFtZSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUs
IHByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgY2FsbGJhY2sgPSBzdGF0ZS5hcmd1
bWVudCgwKTsKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUuYXJndW1lbnQoMSk7
CkBAIC0xOTAsNyArMTk3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVhY2go
SlNDOgogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDOjpDYWxsVHlwZSBjYWxs
VHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKICAgICBpZiAoY2Fs
bFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gd3JhcHBlci0+d3JhcHBlZCgpLmNyZWF0ZUl0
ZXJhdG9yKCk7CiAgICAgd2hpbGUgKGF1dG8gdmFsdWUgPSBpdGVyYXRvci5uZXh0KCkpIHsKQEAg
LTIyNiw5ICsyMzMsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPjo6
bgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFwcGVyPjo6bmV4dChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGl0ZXJhdG9y
ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPio+KHN0YXRlLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIEpTQzo6SlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
YWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4g
SlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiKSkpOwog
CiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0ZXJhdG9yLT5uZXh0KCpzdGF0ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw5IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dlYktpdCgKIAogc3RhdGljIGJvb2wg
anNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKEpTRE9NV2luZG93
KiB0aGlzT2JqZWN0LCBGcmFtZSogZnJhbWUsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBTdHJpbmcmIGVycm9yTWVzc2FnZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIFdlIGRvbid0IHdhbnQgYW55IHByb3BlcnRpZXMgb3Ro
ZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBhIGZyYW1lbGVzcyB3aW5kb3cKICAgICAv
LyAoaS5lLiBvbmUgd2hvc2UgcGFnZSBnb3QgY2xvc2VkLCBvciB3aG9zZSBpZnJhbWUgZ290IHJl
bW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGhhbmRsaW5nIGZvciBmcmFtZWxlc3Mgd2luZG93
cyBkdXBsaWNhdGVzIHNpbWlsYXIgYmVoYXZpb3VyIGZvciBjcm9zcy1vcmlnaW4KQEAgLTEzNSw3
ICsxMzgsNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvCiAgICAg
ICAgIC8vIEZvciBhbnkgb3RoZXIgZW50cmllcyBpbiB0aGUgc3RhdGljIHByb3BlcnR5IHRhYmxl
LCBkZW55IGFjY2Vzcy4gKEVhcmx5IHJldHVybiBhbHNvIHByZXZlbnRzCiAgICAgICAgIC8vIG5h
bWVkIGdldHRlciBmcm9tIHJldHVybmluZyBmcmFtZXMgd2l0aCBtYXRjaGluZyBuYW1lcyAtIHRo
aXMgc2VlbXMgYSBsaXR0bGUgcXVlc3Rpb25hYmxlLCBzZWUKICAgICAgICAgLy8gRklYTUUgY29t
bWVudCBvbiBwcm90b3R5cGUgc2VhcmNoIGJlbG93LikKLSAgICAgICAgdGhyb3dTZWN1cml0eUVy
cm9yKCpleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4
ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNDksNyArMTUyLDcgQEAgc3RhdGljIGJv
b2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAg
dGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICBzbG90
LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjMwLDYgKzIzMyw5IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW4KIAogYm9vbCBKU0RPTVdp
bmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRE9NV2luZG93Kj4oY2Vs
bCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjQzLDcgKzI0OSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWMKICAgICAgICAgICAgICAgICByZXR1cm4gcHV0UmVzdWx0OwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHRocm93U2VjdXJpdHlFcnJv
cigqZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVj
LCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtNDM0LDggKzQ0MCwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBEaWFsb2dIYW5kbGVyOjpyZXR1cm5W
YWx1CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gdmFsdWVUb1N0cmluZ1dp
dGhVbmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00NTUsOCArNDY0LDExIEBAIEpTVmFsdWUgSlNE
T01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGUKIAogc3RhdGljIEpTVmFsdWUgaGFuZGxlUG9z
dE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAK
ICAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0czsKICAgICBBcnJheUJ1ZmZlckFycmF5
IGFycmF5QnVmZmVyczsKQEAgLTUwMiw4ICs1MTQsMTEgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
cG9zdE1lc3NhZ2UoRXhlY1N0YQogCiBKU1ZhbHVlIEpTRE9NV2luZG93OjpzZXRUaW1lb3V0KEV4
ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUu
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSog
Y29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBlZCgpLmRvY3VtZW50KCkgPyB3cmFwcGVkKCku
ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBudWxscHRyOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3Jl
YXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSk7CkBAIC01MjQsOCArNTM5LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNldFRpbWVvdXQo
RXhlY1N0YXQKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdyYXBwZWQoKS5kb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0aW9uOjpjcmVhdGUoJnN0YXRl
LCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNlY3VyaXR5UG9saWN5KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAkocmV2
aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksMTAgKzQ5LDEzIEBAIHZvaWQgSlNEYXRhQ3VlOjpz
ZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBE
T01Db25zdHJ1Y3Rvck9iamVjdCogY2FzdGVkVGhpcyA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9i
amVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAo
ZXhlYy5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZl
eGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJmV4ZWMpKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUoZXhlYy51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b051bWJlcigmZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLmhhZEV4Y2VwdGlv
bigpKSkKQEAgLTY0LDEzICs2NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY2FzdGVk
VGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFi
bGVFcnJvcihleGVjLCAiRGF0YUN1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3Rv
clNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0
YUN1ZSIpOwogCiAgICAgU3RyaW5nIHR5cGU7CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAg
ICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpID4gMykgewogICAgICAgICBpZiAoIWV4ZWMudW5j
aGVja2VkQXJndW1lbnQoMykuaXNTdHJpbmcoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKGV4ZWMsIDMsICJ0eXBlIiwgIkRhdGFDdWUiLCBudWxscHRyLCAiRE9N
U3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVj
LCBzY29wZSwgMywgInR5cGUiLCAiRGF0YUN1ZSIsIG51bGxwdHIsICJET01TdHJpbmciKTsKICAg
ICAgICAgdHlwZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykuZ2V0U3RyaW5nKCZleGVjKTsK
ICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0
aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc5LDkgKzE3OSwxMiBAQCB2b2lk
IEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0CiAKIHZvaWQgSlNEaWN0aW9uYXJ5
Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPERP
TVdpbmRvdz4mIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiB3aW5kb3cgPSBK
U0RPTVdpbmRvdzo6dG9XcmFwcGVkKCpzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
d2luZG93KSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCAiRGljdGlvbmFyeSBtZW1iZXIgaXMgbm90IG9mIHR5cGUgV2luZG93
Iik7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAiRGljdGlvbmFyeSBt
ZW1iZXIgaXMgbm90IG9mIHR5cGUgV2luZG93Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgcmVzdWx0ID0gd2luZG93OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAw
OSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTEzMCwxMiArMTMwLDE1IEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6YXBwZW5k
KEV4ZWNTdGF0ZSYgc3QKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogSlNWYWx1ZSBKU0RvY3Vt
ZW50OjpjcmVhdGVUb3VjaExpc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGF1dG8gdG91Y2hMaXN0ID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RhdGUuYXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgYXV0
byogaXRlbSA9IEpTVG91Y2g6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudChpKSk7
CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUo
dGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgaSwgInRvdWNoZXMiLCAiRG9jdW1lbnQiLCAi
Y3JlYXRlVG91Y2hMaXN0IiwgIlRvdWNoIikpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgaSwgInRvdWNoZXMi
LCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRvdWNoIikpOwogCiAgICAgICAgIHRv
dWNoTGlzdC0+YXBwZW5kKCppdGVtKTsKICAgICB9CkBAIC0xNDUsOCArMTQ4LDExIEBAIEpTVmFs
dWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWMKIAogSlNWYWx1ZSBKU0RvY3VtZW50
OjpnZXRDU1NDYW52YXNDb250ZXh0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA0KSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
ICAgIGF1dG8gY29udGV4dElkID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoJnN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmlsZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTcg
KzQzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3RKU0ZpbGUoRXhlY1N0YXRlJiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBhdXRvKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMu
Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhlYywgIkZpbGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFi
bGVFcnJvcihleGVjLCBzY29wZSwgIkZpbGUiKTsKICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKIAogICAgIEpTVmFsdWUgYXJnID0gZXhlYy5hcmd1bWVudCgwKTsKICAgICBpZiAo
YXJnLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKGV4ZWMsIDAsICJmaWxlQml0cyIsICJGaWxlIiwgbnVsbHB0ciwgInNlcXVlbmNlIik7
CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAi
ZmlsZUJpdHMiLCAiRmlsZSIsIG51bGxwdHIsICJzZXF1ZW5jZSIpOwogCiAgICAgdW5zaWduZWQg
YmxvYlBhcnRzTGVuZ3RoID0gMDsKICAgICBKU09iamVjdCogYmxvYlBhcnRzID0gdG9KU1NlcXVl
bmNlKGV4ZWMsIGFyZywgYmxvYlBhcnRzTGVuZ3RoKTsKQEAgLTYzLDcgKzY2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAgICAgYXJnID0gZXhlYy5hcmd1
bWVudCgxKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDEsICJmaWxlbmFtZSIsICJGaWxlIiwgbnVsbHB0ciwg
IkRPTVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVj
LCBzY29wZSwgMSwgImZpbGVuYW1lIiwgIkZpbGUiLCBudWxscHRyLCAiRE9NU3RyaW5nIik7CiAK
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmcudG9XVEZTdHJpbmcoJmV4ZWMpLnJlcGxhY2UoJy8n
LCAnOicpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQpAQCAtNzYsNyArNzksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAgICAgaWYgKCFhcmcuaXNV
bmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBKU09iamVjdCogZmlsZVByb3BlcnR5QmFnT2Jq
ZWN0ID0gYXJnLmdldE9iamVjdCgpOwogICAgICAgICBpZiAoIWZpbGVQcm9wZXJ0eUJhZ09iamVj
dCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDIsICJv
cHRpb25zIiwgIkZpbGUiLCBudWxscHRyLCAiRmlsZVByb3BlcnR5QmFnIik7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMiwgIm9wdGlvbnMi
LCAiRmlsZSIsIG51bGxwdHIsICJGaWxlUHJvcGVydHlCYWciKTsKIAogICAgICAgICAvLyBDcmVh
dGUgdGhlIGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0aWFsaXplciBvYmplY3QuCiAg
ICAgICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KCZleGVjLCBmaWxlUHJvcGVydHlCYWdPYmpl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMDQsOCArMTA0LDExIEBAIGJvb2wgSlNIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZUdl
dHRlcihFeGUKIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjppdGVtKEV4ZWNTdGF0ZSYg
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBhcmd1bWVudCA9IHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50LmltcGwoKSkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBD
by4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzEsOCAr
NzEsMTEgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0cmlidXRlcyhFeGVjUwogCiBKU1Zh
bHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAx
KSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsKICAg
ICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKCZzdGF0ZSk7CkBAIC05NCw4ICs5NywxMSBAQCBKU1ZhbHVlIEpTSFRNTENhbnZh
c0VsZW1lbnQ6OmdldENvbnRleHQoCiAKIEpTVmFsdWUgSlNIVE1MQ2FudmFzRWxlbWVudDo6cHJv
YmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAg
SFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcm
IGNvbnRleHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9j
dW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTUyLDYgKzE1Miw5IEBAIHN0YXRpYyBEb2N1bWVudCogZmluZENhbGxpbmdEb2N1
bWVudChFeGUKIAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3BlbihFeGVjU3RhdGUmIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBi
cm93c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFuIDIgcGFyYW1ldGVycyB0byB0
aGUgd2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPiAyKSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKSkgewpAQCAtMTYxLDcgKzE2NCw3
IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0YXRlJiAKICAgICAgICAgICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICAgICAgICAgICAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQzo6
Y2FsbCgmc3RhdGUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHdyYXBwZXIsIEFyZ0xp
c3QoJnN0YXRlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMzAgKzQzLDMyIEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3RhdGUmIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JP
YmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NFUlQoanNDb25zdHJ1Y3Rvcik7CiAKICAg
ICBhdXRvKiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3Jp
cHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiSFRNTEVsZW1lbnQiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5h
dmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkhUTUxFbGVtZW50Iik7CiAgICAgQVNTRVJUKGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50PigqY29udGV4dCk7CiAKICAgICBhdXRvKiB3aW5kb3cgPSBkb2N1bWVudC5kb21XaW5k
b3coKTsKICAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
JmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBub3QgYSB2YWxpZCBjdXN0b20gZWxl
bWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CiAKICAgICBhdXRvKiByZWdpc3RyeSA9IHdpbmRvdy0+
Y3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdpc3RyeSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBu
b3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQg
aXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CiAKLSAgICBWTSYg
dm0gPSBleGVjLnZtKCk7CiAgICAgSlNWYWx1ZSBuZXdUYXJnZXRWYWx1ZSA9IGV4ZWMudGhpc1Zh
bHVlKCk7CiAgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IG5ld1RhcmdldFZhbHVlLmdldE9iamVj
dCgpOwogICAgIGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSByZWdpc3RyeS0+ZmluZEludGVyZmFj
ZShuZXdUYXJnZXQpOwogICAgIGlmICghZWxlbWVudEludGVyZmFjZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBkb2VzIG5v
dCBkZWZpbmUgYSBjdXN0b20gZWxlbWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgZG9lcyBub3QgZGVm
aW5lIGEgY3VzdG9tIGVsZW1lbnQiKSk7CiAKICAgICBpZiAoIWVsZW1lbnRJbnRlcmZhY2UtPmlz
VXBncmFkaW5nRWxlbWVudCgpKSB7CiAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ29u
c3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwpAQCAtODQsNyArODYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBFbGVtZW50KiBlbGVtZW50VG9VcGdy
YWRlID0gZWxlbWVudEludGVyZmFjZS0+bGFzdEVsZW1lbnRJbkNvbnN0cnVjdGlvblN0YWNrKCk7
CiAgICAgaWYgKCFlbGVtZW50VG9VcGdyYWRlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZFN0YXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxl
bWVudCBpbnNpZGUgaXRzIG93biBjb25zdHJjdXRvciBkdXJpbmcgdXBncmFkZXMiKSk7CisgICAg
ICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fu
bm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRlIGl0cyBvd24gY29uc3RyY3V0
b3IgZHVyaW5nIHVwZ3JhZGVzIikpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU2LDgg
KzU2LDExIEBAIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUcKIAogSlNW
YWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG5hbWVkSXRlbXMoc3RhdGUs
IHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpKSk7CiAgICAgcmV0dXJuIHZh
bHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJ
bnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw1NCArMzUsNzIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElucHV0RWxlbWVudDo6c2VsZWN0aW9u
U3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJ
bnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNl
bGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpz
TnVtYmVyKGlucHV0LnNlbGVjdGlvblN0YXJ0KCkpOwogfQogCiB2b2lkIEpTSFRNTElucHV0RWxl
bWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgp
OwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAog
ICAgIGlucHV0LnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLnRvSW50MzIoJnN0YXRlKSk7CiB9CiAK
IEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhlY1N0YXRlJiBzdGF0
ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0g
d3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKGlucHV0LnNlbGVjdGlv
bkVuZCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6OnNldFNlbGVjdGlvbkVuZChF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSFRN
TElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFpbnB1dC5jYW5IYXZl
U2VsZWN0aW9uKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaW5wdXQuc2V0U2VsZWN0aW9uRW5k
KHZhbHVlLnRvSW50MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50
OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICgh
aW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwog
CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgaW5wdXQuc2VsZWN0aW9uRGly
ZWN0aW9uKCkpOwogfQogCiB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGly
ZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0
LmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtOTEsMTIgKzEwOSwxNSBAQCB2b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0
U2VsZWN0aW9uRGlyCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRTZWxlY3Rpb25S
YW5nZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBIVE1MSW5wdXRFbGVtZW50
JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGludCBzdGFydCA9IHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAgICBpbnQgZW5kID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NSw5ICs1NSwxMiBAQCBKU1ZhbHVlIEpTSGlzdG9yeTo6c3RhdGUoRXhlY1N0
YXRlJiBzdGF0CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3RhdGUoRXhlY1N0YXRlJiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gYXJnQ291bnQgPSBzdGF0ZS5hcmd1bWVudENv
dW50KCk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ0NvdW50IDwgMikpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8g
aGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoJnN0YXRlLCBzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQpAQCAtODYsOSArODksMTIgQEAgSlNWYWx1ZSBKU0hpc3Rvcnk6OnB1c2hTdGF0ZShFeGVj
U3RhdGUmIAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0YXRlKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGFyZ0NvdW50ID0gc3RhdGUuYXJndW1lbnRD
b3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3VudCA8IDIpKQotICAgICAgICByZXR1cm4g
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRv
IGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCZzdGF0ZSwgc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMCksIDAsIDApOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCRGF0
YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWljaGFlbCBQcnVldHQgPG1pY2hhZWxA
NjhrLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00Nyw4ICs0OCwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNJREJEYXRhYmFzZTo6Y3JlYXRl
T2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgbmFtZSA9IHN0YXRl
LmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZzdGF0ZSk7CiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTYsNyArNjAsNyBAQCBKU1ZhbHVlIEpTSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlCiAKICAgICBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSA9IHN0YXRl
LmFyZ3VtZW50KDEpOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkg
JiYgIW9wdGlvbnNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCAiTm90IGFuIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsICJOb3QgYW4gb2JqZWN0LiIpOwogCiAgICAgSURCS2V5UGF0aCBr
ZXlQYXRoOwogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTAsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
NDYsMTAgKzQ2LDEzIEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU0ltYWdlQ29uc3RydWN0b3I6OnAK
IAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0ltYWdlQ29uc3RydWN0b3I6OmNvbnN0cnVj
dChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTSW1hZ2VDb25zdHJ1
Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ltYWdlQ29uc3RydWN0b3IqPihzdGF0ZS0+
Y2FsbGVlKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGpzQ29uc3RydWN0b3ItPmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJbWFnZSBjb25zdHJ1Y3RvciBhc3Nv
Y2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJbWFnZSBj
b25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwogCiAgICAg
Ly8gQ2FsbGluZyB0b0pTIG9uIHRoZSBkb2N1bWVudCBjYXVzZXMgdGhlIEpTIGRvY3VtZW50IHdy
YXBwZXIgdG8gYmUKICAgICAvLyBhZGRlZCB0byB0aGUgd2luZG93IG9iamVjdC4gVGhpcyBpcyBk
b25lIHRvIGVuc3VyZSB0aGF0IEpTRG9jdW1lbnQ6OnZpc2l0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29s
IEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwpAQCAtNTUsMTMgKzU4LDE2IEBA
IGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWcKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBtZXNzYWdlKTsK
KyAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIHNjb3BlLCBtZXNzYWdlKTsKICAgICBzbG90
LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEpTTG9jYXRpb246
OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0KQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgcHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgp
LmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTc4LDcgKzg0LDcgQEAgYm9vbCBKU0xvY2F0
aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIAogICAgIC8vIGJ1dCBub3Qgd2hlbiBhc3NpZ25p
bmcgdGhlIGluZGl2aWR1YWwgcGllY2VzLCBzaW5jZSB0aGF0IG1pZ2h0IGluYWR2ZXJ0ZW50bHkK
ICAgICAvLyBkaXNjbG9zZSBvdGhlciBwYXJ0cyBvZiB0aGUgb3JpZ2luYWwgbG9jYXRpb24uCiAg
ICAgaWYgKHByb3BlcnR5TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaHJlZikgewotICAg
ICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIHRo
cm93U2VjdXJpdHlFcnJvcigqZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwCShyZXZpc2lv
biAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw4ICszNTgsMTEgQEAgc3RhdGljIHZvaWQg
cGFyc2VDb25zdHJhaW50cyhjb25zdCBEaWN0aQogCiBKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpn
ZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcigmc3RhdGUpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIGNvbnN0cmFpbnRzRGljdGlv
bmFyeSA9IERpY3Rpb25hcnkoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0
cmVhbVRyYWNrQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
MSwxMCArNDEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU0M6OkpTVmFsdWUgSlNNZWRp
YVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlzVmFsdWUoKTsKICAgICBKU01l
ZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTTWVkaWFTdHJlYW1U
cmFjayo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsICJNZWRp
YVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsICJNZWRpYVN0cmVhbVRyYWNr
IiwgImdldFNldHRpbmdzIikpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVt
cHR5T2JqZWN0KCZzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKQEAgLTEwMiwxMCArMTA1LDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNhcGFiaWxpdHlWYWx1ZShj
b25zdCBDYXAKIAogSlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0
aWVzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTTWVkaWFTdHJlYW1UcmFjayogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNrKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVj
b2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0
dGluZ3MiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVy
cm9yKHN0YXRlLCBzY29wZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CiAK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJnN0YXRlKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9u
IDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTU5LDYgKzU5LDkgQEAgSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZVBv
cnQ6OnBvc3RNZXNzYWdlKAogCiB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0QXJy
YXksIEFycmF5QnVmZmVyQXJyYXkmIGFycmF5QnVmZmVycykKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IC8vIENvbnZlcnQgZnJvbSB0aGUgcGFzc2VkLWluIEpTIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGEg
TWVzc2FnZVBvcnRBcnJheS4KICAgICAvLyBBbHNvIHZhbGlkYXRlcyB0aGUgZWxlbWVudHMgcGVy
IHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJREwgc3BlYyBhbmQgc2VjdGlv
biA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4KICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSkgewpAQCAtOTUsNyArOTgsNyBAQCB2b2lkIGZpbGxNZXNzYWdlUG9ydEFycmF5KEpTQzo6
RXhlY1N0YXRlCiAgICAgICAgICAgICBpZiAoUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZl
ciA9IHRvQXJyYXlCdWZmZXIodmFsdWUpKQogICAgICAgICAgICAgICAgIGFycmF5QnVmZmVycy5h
cHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC01MCw4
ICs1MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIFQqIGltcGwpCiAgICAgeworICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgICAg
ICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5OwogICAgICAgICBBcnJheUJ1
ZmZlckFycmF5IGFycmF5QnVmZmVyQXJyYXk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgs
NiArNTgsOSBAQCBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjCiAKIHZv
aWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1aW50OF90IG5h
dGl2ZVZhbHVlIHsgY29udmVydDx1aW50OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkg
fTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0
LDcgKzc3LDcgQEAgdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlYwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJpbmc6
OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb25Qb2ludCB2YWx1ZS4iLCBuYXRpdmVW
YWx1ZSkpOworICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIFN0cmluZzo6Zm9ybWF0
KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvblBvaW50IHZhbHVlLiIsIG5hdGl2ZVZhbHVlKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24gZGVjaXNpb24p
CkBAIC05MSw2ICs5NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNp
b24KIAogc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVl
IHsgY29udmVydDx1aW50OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7
CkBAIC0xMDIsNyArMTA4LDcgQEAgc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9uKEV4
ZWNTdAogICAgICAgICByZXR1cm4gZGVjaXNpb247CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFs
dWUuIiwgbmF0aXZlVmFsdWUpKTsKKyAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBT
dHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZl
VmFsdWUpKTsKICAgICByZXR1cm4gRGVjaXNpb246OkFsbG93OwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMDUx
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEwMyw2ICsxMDMsOSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU01v
ZHVsZUxvYWRlcjo6CiAKIEpTQzo6SlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTTW9kdWxlTG9h
ZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVj
b3JkVmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIEZJWE1FOiBDdXJyZW50bHks
IHdlIG9ubHkgc3VwcG9ydCBKU01vZHVsZVJlY29yZC4KICAgICAvLyBPbmNlIHRoZSByZWZsZWN0
aXZlIHBhcnQgb2YgdGhlIG1vZHVsZSBsb2FkZXIgaXMgc3VwcG9ydGVkLCB3ZSB3aWxsIGhhbmRs
ZSBhcmJpdHJhcnkgdmFsdWVzLgogICAgIC8vIGh0dHBzOi8vd2hhdHdnLmdpdGh1Yi5pby9sb2Fk
ZXIvI3JlZ2lzdHJ5LXByb3RvdHlwZS1wcm92aWRlCkBAIC0xMTYsMTAgKzExOSwxMCBAQCBKU0M6
OkpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTCiAgICAgZWxzZSBpZiAobW9kdWxl
S2V5VmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgc291cmNlVXJsID0gVVJMKFVSTCgpLCBhc1N0
cmluZyhtb2R1bGVLZXlWYWx1ZSktPnZhbHVlKGV4ZWMpKTsKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBp
cyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiBKU0M6OnRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgbm90IFN5bWJv
bCBvciBTdHJpbmcuIikpOwogCiAgICAgaWYgKCFzb3VyY2VVcmwuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk1vZHVsZSBr
ZXkgaXMgYW4gaW52YWxpZCBVUkwuIikpOworICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJNb2R1bGUga2V5IGlzIGFuIGludmFsaWQg
VVJMLiIpKTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXZhbHVhdGluZyBtb2R1bGUgY29k
ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVy
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTQ0LDE5ICs0NSwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKEV4ZWNTdGF0ZSYgZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKICAgICBpZiAoIW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQotICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAwLCAiY2FsbGJhY2siLCAiTXV0
YXRpb25PYnNlcnZlciIsIG51bGxwdHIsICJNdXRhdGlvbkNhbGxiYWNrIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
TXV0YXRpb25PYnNlcnZlciIsIG51bGxwdHIsICJNdXRhdGlvbkNhbGxiYWNrIik7CiAKICAgICBE
T01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rv
ck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU011dGF0aW9u
Q2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpKTsK
ICAgICBKU09iamVjdCoganNPYnNlcnZlciA9IGFzT2JqZWN0KHRvSlNOZXdseUNyZWF0ZWQoJmV4
ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBNdXRhdGlvbk9ic2VydmVyOjpjcmVh
dGUoV1RGTW92ZShjYWxsYmFjaykpKSk7CiAgICAgUHJpdmF0ZU5hbWUgcHJvcGVydHlOYW1lOwot
ICAgIGpzT2JzZXJ2ZXItPnB1dERpcmVjdChqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKS0+
dm0oKSwgcHJvcGVydHlOYW1lLCBvYmplY3QpOworICAgIGpzT2JzZXJ2ZXItPnB1dERpcmVjdCh2
bSwgcHJvcGVydHlOYW1lLCBvYmplY3QpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNP
YnNlcnZlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5LTIwMTAsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xMTIsMTMgKzExMiwxNiBAQCBib29sIEpTTm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSCiAKIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAy
KSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogCiAgICAgSlNWYWx1ZSBuZXdDaGlsZFZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCk7CiAgICAgYXV0byogbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChuZXdDaGls
ZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAwLCAibm9kZSIsICJO
b2RlIiwgImluc2VydEJlZm9yZSIsICJOb2RlIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCAwLCAibm9kZSIsICJO
b2RlIiwgImluc2VydEJlZm9yZSIsICJOb2RlIikpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFwcGVkKCkuaW5zZXJ0QmVmb3JlKCpuZXdDaGlsZCwg
SlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpLCBlYykpKSB7CkBA
IC0xMzIsMTYgKzEzNSwxOSBAQCBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4ZWNTdGF0
ZSYgCiAKIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAy
KSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogCiAgICAgYXV0byogbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgSlNWYWx1ZSBvbGRDaGlsZFZhbHVlID0gc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byogb2xkQ2hpbGQgPSBKU05vZGU6OnRvV3Jh
cHBlZChvbGRDaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkIHx8ICFvbGRD
aGlsZCkpIHsKICAgICAgICAgaWYgKCFuZXdDaGlsZCkKLSAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwgIm5vZGUiLCAiTm9k
ZSIsICJyZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAxLCAiY2hpbGQiLCAiTm9kZSIsICJy
ZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJub2RlIiwgIk5vZGUi
LCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDEsICJjaGlsZCIsICJOb2Rl
IiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwpAQCAtMTU2LDEwICsxNjIsMTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlcGxhY2VDaGls
ZChFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTTm9kZTo6cmVtb3ZlQ2hpbGQoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgY2hpbGRWYWx1ZSA9IHN0YXRlLmFy
Z3VtZW50KDApOwogICAgIGF1dG8qIGNoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoY2hpbGRWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjaGlsZCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpk
ZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAi
cmVtb3ZlQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwgImNoaWxkIiwgIk5vZGUiLCAi
cmVtb3ZlQ2hpbGQiLCAiTm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGlmIChVTkxJS0VMWSghd3JhcHBlZCgpLnJlbW92ZUNoaWxkKCpjaGlsZCwgZWMpKSkgewpAQCAt
MTczLDEwICsxODIsMTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUNoaWxkKEV4ZWNTdGF0ZSYg
cwogCiBKU1ZhbHVlIEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgbmV3Q2hpbGRWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDAp
OwogICAgIGF1dG8gbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBlZChuZXdDaGlsZFZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImFw
cGVuZENoaWxkIiwgIk5vZGUiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhy
b3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJub2RlIiwgIk5vZGUiLCAiYXBw
ZW5kQ2hpbGQiLCAiTm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlm
IChVTkxJS0VMWSghd3JhcHBlZCgpLmFwcGVuZENoaWxkKCpuZXdDaGlsZCwgZWMpKSkgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20u
Y3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVGaWx0ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcgKzQyLDkgQEAgdWludDE2X3Qg
SlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKE5vZGUqIAogewogICAgIFJlZjxKU05vZGVGaWx0ZXI+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5n
bG9iYWxPYmplY3QoKS0+dm0oKSk7CisgICAgVk0mIHZtID0gbV9kYXRhLT5nbG9iYWxPYmplY3Qo
KS0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgRXhlY1N0YXRlKiBzdGF0ZSA9IG1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdzOwpAQCAtNTQsNyArNTYsNyBAQCB1aW50MTZfdCBKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUo
Tm9kZSogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywg
SlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb25Pck9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhzdGF0ZSwgImFjY2VwdE5vZGUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwog
ICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICAvLyBSZXRocm93IGV4Y2VwdGlv
bi4KLSAgICAgICAgc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3RhdGUsIHJldHVybmVkRXhj
ZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oc3RhdGUsIHNjb3BlLCByZXR1cm5lZEV4
Y2VwdGlvbik7CiAKICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTYsMTAgKzk2LDEyIEBAIEpTT2JqZWN0KiBwbHVn
aW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiAKICAgICAKIEVuY29kZWRKU1ZhbHVlIHBsdWdpbkVs
ZW1lbnRQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpT
SFRNTEVsZW1lbnQqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSFRNTEVsZW1lbnQqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTT2JqZWN0KiBzY3JpcHRPYmplY3QgPSBwbHVn
aW5TY3JpcHRPYmplY3QoZXhlYywgdGhpc09iamVjdCk7CiAgICAgaWYgKCFzY3JpcHRPYmplY3Qp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVj
dG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVj
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKQEAgLTM2LDE0ICszNywxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBQdWJsaWMg
SlMgUmVhZGFibGVTdHJlYW1SZWRlciBhbmQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ciBjb25zdHJ1Y3RvciBjYWxsYmFja3MuCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMp
CiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90IGJlIGNh
bGxlZCBkaXJlY3RseSIpKTsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IikpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZh
dWx0UmVhZGVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAogICAgIEpTUmVh
ZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KGV4
ZWMuYXJndW1lbnQoMCkpOwogICAgIGlmICghc3RyZWFtKQotICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcihleGVjLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVhZGVy
IiwgbnVsbHB0ciwgIlJlYWRhYmxlU3RyZWFtIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwgIlJlYWRhYmxlU3RyZWFtUmVh
ZGVyIiwgbnVsbHB0ciwgIlJlYWRhYmxlU3RyZWFtIik7CiAKICAgICBKU1ZhbHVlIGpzRnVuY3Rp
b24gPSBzdHJlYW0tPmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYywgImdl
dFJlYWRlciIpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5n
dGhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U1ZHTGVuZ3RoQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDcsMTMgKzQ4LDE2IEBA
IEpTVmFsdWUgSlNTVkdMZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSYgc3QKIAogdm9pZCBKU1NWR0xl
bmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgIHNldERP
TUV4Y2VwdGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYg
IXZhbHVlLmlzTnVtYmVyKCkgJiYgIXZhbHVlLmlzQm9vbGVhbigpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzIsNiArNzYsOSBAQCB2b2lkIEpT
U1ZHTGVuZ3RoOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0CiAKIEpTVmFsdWUgSlNTVkdMZW5ndGg6
OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewogICAgICAgICBzZXRET01FeGNl
cHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIpOwogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKQEAgLTgwLDcgKzg3LDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6
Y29udmVydFRvU3BlY2lmaWVkVQogICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gd3JhcHBlZCgpLnBy
b3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkK
LSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1VJbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05Nyw4ICs5NywxMSBAQCBKU1ZhbHVlIEpTV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6Z2V0U3luCiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRJ
bmRleGVkUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KGV4ZWMuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBleGVjLnZtKCkudGhy
b3dFeGNlcHRpb24oJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
JiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gZXhlYy51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b0ludDMyKCZleGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0x
NzAsOCArMTcwLDExIEBAIGVudW0gT2JqZWN0VHlwZSB7CiAKIHN0YXRpYyBKU1ZhbHVlIGdldE9i
amVjdFBhcmFtZXRlcihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIG9iaiwgRXhlY1N0YXRl
JiBzdGF0ZSwgT2JqZWN0VHlwZSBvYmplY3RUeXBlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IG9iai0+
d3JhcHBlZCgpOwpAQCAtMjcwLDEzICsyNzMsMTYgQEAgdm9pZCBKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZpc2l0QQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZt
KCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVk
KCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBl
ZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgc2NvcGUpOwogICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiBzaGFkZXJz
OwogICAgIGJvb2wgc3VjY2VlZCA9IGNvbnRleHQuZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0s
IHNoYWRlcnMsIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTI5Myw4ICsyOTksMTEgQEAgSlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAogCiBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0
dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAog
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAg
Y29uc3QgU3RyaW5nIG5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygm
c3RhdGUpLT52YWx1ZSgmc3RhdGUpOwpAQCAtMzExLDggKzMyMCwxMSBAQCBKU1ZhbHVlIEpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0g
MykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CkBAIC0zMzUsOCArMzQ3LDExIEBA
IEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUmIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAxKQotICAg
ICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7
CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKQEAgLTM1MywxNCArMzY4LDE3IEBAIEpTVmFs
dWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAg
ICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFt
ID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIHVuc2lnbmVk
IHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CkBAIC0zNzksMTMgKzM5NywxNiBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRTaGFkZXJQ
YXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0
ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7
CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMU2hhZGVyOjpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdlYkdMU2hhZGVyKiBz
aGFkZXIgPSBKU1dlYkdMU2hhZGVyOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKQEAgLTQxNywxNyAr
NDM4LDIwIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAogSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oRXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0g
MikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZz
dGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBw
cm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVu
dCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFdl
YkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb246OnRv
V3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFsb2NhdGlvbiAm
JiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQu
Z2V0VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgZWMpOwogICAgIGlmIChlYykgewogICAgICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC00ODgsOCArNTEyLDExIEBAIHN0YXRp
YyBib29sIGZ1bmN0aW9uRm9yVW5pZm9ybShEYXRhRnVuY3QKIAogc3RhdGljIEpTQzo6SlNWYWx1
ZSBkYXRhRnVuY3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSAwOwogICAgIGxvbmcgaW5kZXggPSAtMTsKQEAg
LTQ5Nyw3ICs1MjQsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbmYoRGF0YUZ1
CiAgICAgaWYgKGZ1bmN0aW9uRm9yVW5pZm9ybShmKSkgewogICAgICAgICBsb2NhdGlvbiA9IEpT
V2ViR0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKICAgICB9IGVsc2UKICAgICAgICAgaW5kZXggPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS50b0ludDMyKCZzdGF0ZSk7CiAgICAgCkBAIC01NDMsNyArNTcwLDcgQEAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFGdQogICAgIAogICAgIFZlY3RvcjxmbG9hdCwgNjQ+
IGFycmF5OwogICAgIGlmICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBhcnJheSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgc3dp
dGNoIChmKSB7CiAgICAgY2FzZSBmX3VuaWZvcm0xdjoKQEAgLTU3OCwxMiArNjA1LDE1IEBAIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uZihEYXRhRnUKIAogc3RhdGljIEpTQzo6SlNW
YWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKICAgICAKICAgICBX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uOjp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghbG9jYXRpb24g
JiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgUmVmUHRyPEludDMyQXJyYXk+IHdl
YkdMQXJyYXkgPSB0b0ludDMyQXJyYXkoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAg
IApAQCAtNjEzLDcgKzY0Myw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uaShE
YXRhRnUKICAgICAKICAgICBWZWN0b3I8aW50LCA2ND4gYXJyYXk7CiAgICAgaWYgKCF0b1ZlY3Rv
cihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlKTsKICAgICAKICAgICBzd2l0Y2ggKGYpIHsKICAgICBjYXNlIGZfdW5p
Zm9ybTF2OgpAQCAtNjM4LDEyICs2NjgsMTUgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVu
Y3Rpb25pKERhdGFGdQogCiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRhdGFGdW5jdGlvbk1hdHJpeChE
YXRhRnVuY3Rpb25NYXRyaXhUb0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0
YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgV2ViR0xVbmlmb3JtTG9j
YXRpb24qIGxvY2F0aW9uID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9XcmFwcGVkKHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWxvY2F0aW9uICYmICFzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogICAgIAogICAgIGJvb2wgdHJhbnNwb3NlID0gc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMSkudG9Cb29sZWFuKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQpAQCAtNjcxLDcgKzcwNCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0
cml4KEQKICAgICAKICAgICBWZWN0b3I8ZmxvYXQsIDY0PiBhcnJheTsKICAgICBpZiAoIXRvVmVj
dG9yKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSwgYXJyYXkpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIAogICAgIHN3aXRjaCAoZikgewogICAgIGNhc2UgZl91
bmlmb3JtTWF0cml4MmZ2OgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTc1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw2ICs3Nyw5IEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRv
QWxnb3JpdGhtPiBjcmVhdGVBbGcKIAogc3RhdGljIGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpT
VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5Rm9ybWF0JiBy
ZXN1bHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcga2V5Rm9ybWF0U3RyaW5nID0gdmFs
dWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg5LDcgKzkyLDcgQEAgc3RhdGlj
IGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRQogICAgIGVsc2UgaWYgKGtleUZvcm1h
dFN0cmluZyA9PSAiandrIikKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5Rm9ybWF0OjpKV0s7
CiAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJVbmtub3duIGtleSBmb3JtYXQiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBrZXkgZm9ybWF0IikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtOTcsOCArMTAwLDExIEBAIHN0
YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKEUKIAogc3RhdGljIGJvb2wgY3J5
cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwg
Q3J5cHRvS2V5VXNhZ2UmIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghaXNKU0Fy
cmF5KHZhbHVlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTMyLDggKzEzOCwxMSBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlVc2FnZXNGcm9t
SlNWYWx1ZShFCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21K
U1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdv
cml0aG0pIHsKQEAgLTE0OSw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
OjplbmNyeXB0KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6
dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICgha2V5LT5hbGxvd3MoQ3J5cHRv
S2V5VXNhZ2VFbmNyeXB0KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5jcnlwdCciKSk7CkBAIC0xODUs
OCArMTk0LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXgKIAog
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdGUmIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpCi0gICAg
ICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsK
IAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUs
IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAt
MjAyLDcgKzIxNCw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRlY3J5cHQoRXgK
IAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3Rh
dGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZURlY3J5
cHQpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkg
dXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpKTsKQEAgLTIzNyw4ICsyNDksMTEgQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeAogCiBKU1ZhbHVlIEpTV2Vi
S2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykKLSAgICAgICAgcmV0dXJuIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdv
cml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBAIC0yNTQsNyArMjY5LDcgQEAg
SlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVjUwogCiAgICAgUmVmUHRyPENy
eXB0b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAK
ICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlU2lnbikpIHsKICAgICAgICAgd3Jh
cHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1
ZGUgJ3NpZ24nIikpOwpAQCAtMjg5LDggKzMwNCwxMSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxl
Q3J5cHRvOjpzaWduKEV4ZWNTCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlm
eShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3Vt
ZW50Q291bnQoKSA8IDQpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3Jp
dGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIWFsZ29yaXRobSkgewpAQCAtMzA2LDcgKzMyNCw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0
bGVDcnlwdG86OnZlcmlmeShFeGUKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5
cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgh
a2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93
cyhDcnlwdG9LZXlVc2FnZVZlcmlmeSkpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3ZlcmlmeSciKSk7CkBA
IC0zNDcsOCArMzY1LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShF
eGUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikK
LSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShz
dGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7
CkBAIC0zODksOCArNDEwLDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmRpZ2Vz
dChFeGUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6Z2VuZXJhdGVLZXkoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNyZWF0ZUFsZ29yaXRobUZyb21K
U1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFhbGdv
cml0aG0pIHsKQEAgLTQ0NSw2ICs0NjksOSBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
OjpnZW5lcmF0ZUtlCiAKIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCBD
cnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlwdG9PcGVyYXRpb25EYXRhIGRhdGEsIFJlZlB0
cjxDcnlwdG9BbGdvcml0aG0+IGFsZ29yaXRobSwgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlIGtleVVz
YWdlcywgQ3J5cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxnb3Jp
dGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVNlcmlhbGl6YXRpb24+IGtleVNlcmlhbGl6YXRpb247
CiAgICAgc3dpdGNoIChrZXlGb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3
OgpAQCAtNDUzLDcgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0
YXRlLCAKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SldLOiB7CiAgICAgICAgIFN0cmluZyBq
d2tTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25kKTsKICAg
ICAgICAgaWYgKGp3a1N0cmluZy5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZh
bGlkIFVURi04IikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJKV0sgSlNPTiBzZXJpYWxpemF0aW9uIGlzIG5vdCB2YWxpZCBVVEYtOCIp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBrZXlTZXJpYWxpemF0
aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s+KCZzdGF0
ZSwgandrU3RyaW5nKTsKQEAgLTQ2Miw3ICs0ODksNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXko
RXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0Ogot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQg
a2V5IGZvcm1hdCBmb3IgaW1wb3J0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9ydCIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcxLDcgKzQ5OCw3IEBAIHN0YXRpYyB2
b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBPcHRpb25hbDxDcnlwdG9BbGdv
cml0aG1QYWlyPiByZWNvbmNpbGVkUmVzdWx0ID0ga2V5U2VyaWFsaXphdGlvbi0+cmVjb25jaWxl
QWxnb3JpdGhtKGFsZ29yaXRobS5nZXQoKSwgcGFyYW1ldGVycy5nZXQoKSk7CiAgICAgaWYgKCFy
ZWNvbmNpbGVkUmVzdWx0KSB7CiAgICAgICAgIGlmICghc3RhdGUuaGFkRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGht
IHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGlt
cG9ydEtleSBhcyBhcmd1bWVudCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90
IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBA
IC00ODAsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUs
IAogICAgIGFsZ29yaXRobSA9IHJlY29uY2lsZWRSZXN1bHQtPmFsZ29yaXRobTsKICAgICBwYXJh
bWV0ZXJzID0gcmVjb25jaWxlZFJlc3VsdC0+cGFyYW1ldGVyczsKICAgICBpZiAoIWFsZ29yaXRo
bSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiTmVpdGhl
ciBrZXkgbm9yIGZ1bmN0aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8gYWxnb3JpdGhtIHNwZWNpZmll
ZCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBhbGdvcml0aG0g
c3BlY2lmaWVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwYXJhbWV0
ZXJzKTsKQEAgLTUwNSw4ICs1MzIsMTEgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0
ZSYgc3RhdGUsIAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjppbXBvcnRLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlm
ICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBr
ZXlGb3JtYXQpKSB7CkBAIC01NjgsOCArNTk4LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmltcG9ydEtleSgKIAogc3RhdGljIHZvaWQgZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3Rh
dGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIGNvbnN0IENyeXB0b0tleSYga2V5LCBDcnlw
dG9BbGdvcml0aG06OlZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBDcnlwdG9BbGdvcml0aG06OlZv
aWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWtl
eS5leHRyYWN0YWJsZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJLZXkgaXMgbm90IGV4dHJhY3RhYmxlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIktleSBpcyBub3QgZXh0cmFjdGFibGUiKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU5MywxNSArNjI2LDE4IEBAIHN0YXRpYyB2
b2lkIGV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1h
dCBmb3IgZXhwb3J0IikpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIEpTVmFsdWUgSlNX
ZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVy
biBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENy
eXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNW
YWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTYxMSw3ICs2
NDcsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoCiAKICAgICBS
ZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNj
b3BlKTsKIAogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21p
c2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVk
V3JhcHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7
CkBAIC02MzEsOCArNjY3LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9y
dEtleSgKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDQpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlw
dG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1h
dCkpIHsKQEAgLTY0MiwxMSArNjgxLDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86
OndyYXBLZXkoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0
b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5KQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4gd3JhcHBp
bmdLZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDIp
KTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlm
ICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdyYXBLZXkpKSB7CiAgICAgICAg
IHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBp
bmNsdWRlICd3cmFwS2V5JyIpKTsKQEAgLTcwMCw4ICs3MzksMTEgQEAgSlNWYWx1ZSBKU1dlYktp
dFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRv
Ojp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgPCA1KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQga2V5
Rm9ybWF0OwogICAgIGlmICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRl
LmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CkBAIC03MTcsNyArNzU5LDcgQEAgSlNWYWx1ZSBK
U1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KAogCiAgICAgUmVmUHRyPENyeXB0b0tleT4g
dW53cmFwcGluZ0tleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMikpOwogICAgIGlmICghdW53cmFwcGluZ0tleSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKIAogICAgIGlmICghdW53cmFwcGluZ0tleS0+YWxsb3dzKENyeXB0b0tleVVzYWdl
VW53cmFwS2V5KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndW53cmFwS2V5JyIpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC00NywxMCArNDcsMTMgQEAgSlNDOjpKU1ZhbHVlIEpTV29ya2VyOjpwb3N0TWVz
c2FnZShKU0M6OgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV29y
a2VyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JP
YmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVj
LmNhbGxlZSgpKTsKIAogICAgIGlmICghZXhlYy5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZl
eGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIHNjb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOwogCiAgICAgU3RyaW5nIHNjcmlwdFVSTCA9
IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJmV4ZWMpOwogICAgIGlmIChl
eGVjLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDggKzgwLDEx
IEBAIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXAKIAogSlNWYWx1ZSBK
U1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVk
dWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBw
ZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQpAQCAtOTQsOCArOTcsMTEgQEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRU
aW1lb3V0KAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6OnNldEludGVydmFsKEV4ZWNT
dGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRB
Y3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCktPndvcmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAg
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDgsOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6SlNW
YWx1ZSBjYWxsRnVuY3Rpb24oCiAKIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyOjppbnZva2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBv
YmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcikK
IHsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKCZzdGF0ZSk7CisgICAgSlNDOjpWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8gZnVuY3Rpb24gPSBv
YmplY3QuZ2V0KCZzdGF0ZSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgcHJv
cGVydHlOYW1lKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTUsNyArNTgs
NyBAQCBKU0M6OkpTVmFsdWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvCiAKICAgICBpZiAo
IWZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkgewogICAgICAgICBpZiAoIWZ1bmN0aW9uLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
UmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxs
YWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlz
IG5vdCBjYWxsYWJsZSIpKTsKICAgICAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzk0LDcgKzM5NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgdGhyb3dTdGFja092ZXJmbG93
KCkKICAgICB7Ci0gICAgICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVj
LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKG1fZXhlYywgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihtX2V4ZWMpKTsKICAgICB9CiAKICAgICB2b2lkIGZhaWwoKQpAQCAtMTU3MCw3ICsxNTcy
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdGhyb3dWYWxpZGF0aW9uRXJyb3IoKQogICAgIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBk
ZXNlcmlhbGl6ZSBkYXRhLiIpKTsKKyAgICAgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGRhdGEuIikpOwogICAgIH0KIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdmVyc2lvbiA8PSBDdXJyZW50VmVyc2lvbjsgfQpAQCAtMjc1NiwxNSArMjc2MCwxOCBAQCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyCiAKIHZvaWQgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEV4
ZWNTdGF0ZSogZXhlYywgU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmIChjb2RlID09IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIHN3aXRjaCAoY29kZSkgewogICAgIGNhc2UgU3RhY2tPdmVyZmxvd0Vy
cm9yOgotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFZhbGlkYXRpb25FcnJvcjoKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBk
YXRhLiIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEYXRhQ2xvbmVFcnJvcjoKICAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJSKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTI2LDExICsxMjYsMTIgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwog
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bEV4ZWMoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0M6OmV2YWx1YXRlKGV4ZWMsIHNvdXJjZUNv
ZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLT5nbG9iYWxUaGlz
KCksIHJldHVybmVkRXhjZXB0aW9uKTsKIAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
aWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24o
cmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0aW5nRXhlY3V0aW9uKCkpIHsKICAgICAg
ICAgZm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw3ICsxNDQsNyBA
QCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiAgICAgICAgIFN0cmlu
ZyBzb3VyY2VVUkwgPSBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygpOwogICAgICAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBlcnJvcjsKICAgICAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUt
PnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCwgZXJyb3IsIHNvdXJjZUNvZGUuY2FjaGVkU2NyaXB0KCkpKSB7Ci0gICAg
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBlcnJvck1l
c3NhZ2UuaW1wbCgpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkpOwogICAgICAgICAgICAgcmV0
dXJuZWRFeGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKICAgICAgICAgICAgIHZtLmNsZWFyRXhj
ZXB0aW9uKCk7CiAgICAgICAgIH0KQEAgLTE1Myw3ICsxNTQsOSBAQCB2b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNl
dEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQogewogICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiB9CiAKIHZvaWQg
V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTkwNCw5ICs5MDQsMTEg
QEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbgogCiAgICAgICAgICRy
ZXN1bHQgLj0gInRlbXBsYXRlPD4gJGNsYXNzTmFtZSBjb252ZXJ0PCRjbGFzc05hbWU+KEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4i
OworICAgICAgICAkcmVzdWx0IC49ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAg
ICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPCRj
bGFzc05hbWU+KHN0YXRlLCB2YWx1ZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYg
KFVOTElLRUxZKCFyZXN1bHQpKSB7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSk7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7XG4iOwogICAgICAgICAkcmVzdWx0IC49
ICIgICAgICAgIHJldHVybiB7IH07XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsK
ICAgICAgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiByZXN1bHQudmFsdWUoKTtcbiI7CkBAIC0x
MDA5LDExICsxMDExLDEzIEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNv
bnQKIAogICAgICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IE9wdGlvbmFsPCRjbGFzc05hbWU+
IGNvbnZlcnREaWN0aW9uYXJ5PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVzdWx0IC49
ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSlcbiIgaWYgJGRlZmF1
bHRWYWx1ZXM7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuICRjbGFzc05hbWUg
eyAiIC4gJGRlZmF1bHRWYWx1ZXMgLiAiIH07XG4iIGlmICRkZWZhdWx0VmFsdWVzOwogICAgICAg
ICAkcmVzdWx0IC49ICIgICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7XG4iOwog
ICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50
eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHtcbiI7Ci0gICAgICAgICRyZXN1bHQgLj0gIiAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7CiAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuIE51bGxvcHQ7XG4iOwogICAgICAgICAkcmVzdWx0IC49
ICIgICAgfVxuIjsKIApAQCAtMTk0MSw2ICsxOTQ1LDkgQEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRl
ZEZ1bmN0aW9uT3JDb25zdHJ1YwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQp
OyAgICAKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oJG1heEFyZ0NvdW50LCBz
dGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKIEVORAogCkBAIC0yMDE1LDkgKzIwMjIsOSBAQCBFTkQK
ICAgICB9CiAgICAgbXkgJG1pbkFyZ0NvdW50ID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9u
KTsKICAgICBpZiAoJG1pbkFyZ0NvdW50ID4gMCkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gYXJnc0NvdW50IDwgJG1pbkFyZ0NvdW50ID8gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7XG4iKQorICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
YXJnc0NvdW50IDwgJG1pbkFyZ0NvdW50ID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTtcbiIpCisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTtcbiIpCiAgICAgfQogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKQEAgLTI4MTAsNyArMjgxNyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Z2V0RnVuY3Rpb25O
YW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKIAotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7
CiAKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CkBAIC0yODI2LDcgKzI4MzUsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIs
IFwiJG5hbWVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAg
ICAgICAgICAgICB9CkBAIC0zMDA3LDkgKzMwMTYsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSAk
e2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIik7CiAKICAgICAgICAgICAgIGlmICghJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTtcbiIpOwpAQCAtMzAyNiwxMCArMzAzNywxMiBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NvbnN0
cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHtcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfVxuIik7CiAKQEAgLTMxMDksNiArMzEyMiw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke3B1dEZ1bmN0aW9u
TmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsiKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNT
dGF0aWM7CiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CkBAIC0zMTIx
LDcgKzMxMzcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJMZW5pZW50
VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIkdmlzaWJsZUlu
dGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0K
QEAgLTMyMTAsNyArMzIyNiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBm
YWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkge1xu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAg
dGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwi
LCBcIiRuYW1lXCIsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlw
ZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIH1cbiIpOwpAQCAtMzIyOSw3ICszMjQ1LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNl
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJ
S0VMWSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlz
aWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwi
JG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTMz
OTcsNiArMzQxMywxMCBAQCBFTkQKIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRp
bWUvRXJyb3IuaD4ifSA9IDE7CiAKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpO1xuIik7CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNFUmVhY3Rpb25zIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKVxuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sg
Y3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7XG4iKTsKQEAgLTM3MTYsNyArMzczNiw3IEBAIHN1
YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9
KHN0YXRlLT50aGlzVmFsdWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpO1xuIik7CiAgICAgICAgIG15ICRjYXN0aW5nSGVscGVy
ID0gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVyZmFjZSk7CkBAIC0zNzMyLDcg
KzM3NTIsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICAgICAgbXkgJHZp
c2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJbnRlcmZhY2VO
YW1lKCRpbnRlcmZhY2UpOwogICAgICAgICBteSAkZG9tRnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNpYmxlSW50ZXJm
YWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7
XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpIHVubGVz
cyAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CkBAIC0zODAwLDcgKzM4MjAsNyBA
QCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrCiAgICAgaWYgKCRudW1NYW5kYXRvcnlQ
YXJhbXMgPj0gMSkKICAgICB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8ICRudW1NYW5kYXRvcnlQYXJhbXMpKVxu
Iik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
XG4iKTsKICAgICB9CiB9CiAKQEAgLTM5MjIsNyArMzk0Miw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoJGFyZ3VtZW50SW5kZXgpLmlzT2JqZWN0KCkpXG4iKTsKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwi
JG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAk
cXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDYWxs
YmFja0Z1bmN0aW9uLmgiKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tD
bGFzc05hbWV9PihzdGF0ZSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSksIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRl
eCkpO1xuIik7CkBAIC0zOTM2LDcgKzM5NTYsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoJGFyZ3VtZW50
SW5kZXgpLmlzT2JqZWN0KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlz
aWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBc
IiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUp
O1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKICAgICAg
ICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxiYWNrRnVuY3Rpb24uaCIpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byAkbmFtZSA9
IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihzdGF0ZSwg
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSks
IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkpO1xuIik7CkBAIC0zOTU0
LDcgKzM5NzQsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1bnNpZ25lZCBpID0gJGFyZ3VtZW50SW5k
ZXgsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8IGNvdW50OyArK2kpIHtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgYXV0byogaXRl
bSA9IEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudChpKSk7XG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghaXRl
bSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgaSwgXCIkbmFtZVwiLCBcIiR2
aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBpLCBcIiRuYW1l
XCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5
cGVcIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
ICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM5OTcs
NyArNDAxNyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAoVU5MSUtFTFkoISRvcHRp
b25hbFZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVu
dCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAkYXJn
dW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVk
RnVuY3Rpb25OYW1lLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPCRjbGFzc05hbWU+KCkpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICRhcmd1
bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRG
dW5jdGlvbk5hbWUsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8JGNsYXNzTmFtZT4oKSk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBv
cHRpb25hbFZhbHVlLnZhbHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUg
IiI7CkBAIC00MDIxLDcgKzQwNDEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmIChVTkxJS0VM
WSghJG5hbWUpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJ
bmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rp
b25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgICR2
YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDA2Nyw3
ICs0MDg3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAKICAgICAgICAgICAgIGlm
ICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7Ci0gICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIk
dmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgXCIkdHlwZVwiKTtc
biIpOwogICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRpc1RlYXJPZmYgPyAiJG5hbWUtPnByb3Bl
cnR5UmVmZXJlbmNlKCkiIDogIiokbmFtZSI7CiAgICAgICAgICAgICB9CiAKQEAgLTUyNDMsMTQg
KzUyNjMsMTYgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9
IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAg
QVNTRVJUKGpzQ29uc3RydWN0b3IpOwogCiAgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCBcIiR7dmlzaWJsZUludGVy
ZmFjZU5hbWV9XCIpOworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgXCIke3Zpc2li
bGVJbnRlcmZhY2VOYW1lfVwiKTsKIAogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTMyNyw2ICs1MzQ5LDkgQEAgRU5E
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0
PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oc3RhdGUtPmNhbGxlZSgpKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChjYXN0ZWRUaGlzKTtcbiIpOwog
CkBAIC01MzU2LDE0ICs1MzgxLDE0IEBAIEVORAogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0
cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlz
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0
b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIFwiJHt2aXNp
YmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVy
ZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgifSwgIkRvY3VtZW50IikpIHsKICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAgICAg
ICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImRvY3VtZW50Iik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSlc
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigq
c3RhdGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBc
IiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpO1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGRvY3VtZW50ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTtcbiIpOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTcsMTggKzExNywyMiBAQCB2b2lkIEpTSW50ZXJmYWNlTmFtZTo6ZGVzdHJveShK
U0M6OkpTQ2VsCiAKIEVuY29kZWRKU1ZhbHVlIGpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTSW50ZXJmYWNlTmFtZVByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWVQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTSW50ZXJmYWNlTmFtZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU0ludGVyZmFjZU5hbWVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNJbnRlcmZhY2VOYW1lUHJv
dG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50ZXJmYWNlTmFtZVByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMiArMTQyLDE0IEBAIHZvaWQgSlNUZXN0QWN0aXZl
RE9NT2JqZWN0OjpkZXN0cm95KEpTQzoKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9N
T2JqZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEFjdGl2ZURPTU9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiZXhjaXRpbmdBdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0QWN0aXZl
RE9NT2JqZWN0IiwgImV4Y2l0aW5nQXR0ciIpOwogICAgIH0KICAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVk
KCkuZnJhbWUoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1OSwxOCArMTYxLDIyIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2kKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0
aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCiBib29sIHNldEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTE4
NCwzMyArMTkwLDM5IEBAIEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEFj
dGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAg
ICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShzdGF0ZSwg
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCksIFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gbmV4dENoaWxkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIW5leHRDaGlsZCkpCi0gICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm5leHRDaGlsZCIsICJUZXN0QWN0
aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rpb24iLCAiTm9kZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJuZXh0Q2hp
bGQiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIiwgIk5vZGUiKTsK
ICAgICBpbXBsLmV4Y2l0aW5nRnVuY3Rpb24oKm5leHRDaGlsZCk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAi
cG9zdE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNzYWdlIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01PYmpl
Y3Q6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbWVzc2FnZSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxOCArMTIzLDIyIEBAIHZvaWQgSlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSog
ZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVj
dCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsOSArMTIzLDExIEBAIHZvaWQgSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmYKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUoc3Rh
dGUtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwgKmRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwg
KmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
ICAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNpbmcg
dGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0CiAgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3Rh
dGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9y
LCBEb250RW51bSB8IFJlYWRPbmx5KTsKQEAgLTEzNCwxMCArMTM2LDEyIEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2kKIAogYm9vbCBzZXRKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MCwxOCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmdldE93blByb3AKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRl
clByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
IGJvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTg1LDE0
ICsxODksMTcgQEAgSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29ucwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90
eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhlckZ1bmN0aW9uIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEN1
c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTQgKzczLDE2IEBAIHR5cGVkZWYg
SlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnMKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byog
anNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Iq
PihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChqc0NvbnN0cnVjdG9yKTsKIAogICAgIGlm
ICghanNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9y
KCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIik7CisgICAgICAgIHJldHVybiB0aHJvd0Nv
bnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiKTsKIAogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtMTc5LDEy
ICsxODEsMTQgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpkZXN0cm95KEpTQwogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0
dHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjEoKSk7CkBAIC0xOTQsMTIgKzE5OCwxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0CiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5hdHRyMigpKTsKQEAgLTIxMCwxMiArMjE2LDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHQKICNpZiBFTkFCTEUoU1BFQ0lBTF9FVkVO
VCkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMyhFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3Ii
LCAiYXR0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIzIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMygpKTsKQEAgLTIyNiwxOCArMjM0
LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHQKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlz
aW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDIyIEBA
IGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2wKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRUYXJnZXQ6
OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7
CiB9CiAKIGJvb2wgc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk4LDE0ICsyMDIsMTcgQEAg
SlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0ZW0iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0RXZlbnRUYXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMiArMTM0LDE0IEBAIHZvaWQgSlNUZXN0RXhjZXB0
aW9uOjpkZXN0cm95KEpTQzo6SlNDZWwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9u
TmFtZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24q
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0RXhjZXB0aW9u
IiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RFeGNlcHRpb24iLCAibmFtZSIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKQEAgLTE0OSwxOCArMTUxLDIyIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1MKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4
Y2VwdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXhjZXB0aW9uOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29s
IHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE3LDE4ICsxMTcsMjIgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpk
ZXN0cm95KAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwog
fQogCiBib29sIHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZVBy
b3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDEyICsxNzksMTQgQEAgdm9pZCBKU1Rlc3RHbG9i
YWxPYmplY3Q6OmRlc3Ryb3koSlNDOjpKUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RSZWd1bGFyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxhckF0dHJpYnV0ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2Jh
bE9iamVjdCIsICJyZWd1bGFyQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShzdGF0ZSwgaW1wbC5yZWd1bGFyQXR0cmlidXRlKCkpOwpAQCAtMTk0LDEyICsxOTYsMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhcgogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVi
bGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwg
aW1wbC5wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKCkpOwpAQCAtMjEwLDEyICsyMTQsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2
YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUNvbmRpdGlv
bmFsQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7CkBAIC0yMjcsMTIgKzIz
MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBCiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0R2xvYmFsT2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUoKSk7CkBAIC0yNDMsMTggKzI1MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RFbmFibGVkCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCkBAIC0yNjMsMTEgKzI3NSwxMyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdENvbnN0cnVjdG9yKEV4CiAKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2Jq
ZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2Jh
bE9iamVjdCIsICJyZWd1bGFyQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInJlZ3Vs
YXJBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpA
QCAtMjgwLDExICsyOTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0
cmlidQogCiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmpl
Y3QiLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJw
dWJsaWNBbmRQcml2YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKQEAgLTI5OCwxMSArMzE0LDEzIEBAIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0UHVibGljQW5kUHJpdmEKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVi
bGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0Iiwg
InB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zMTcsMTEgKzMzNSwxMyBAQCBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJl
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3Rh
dGUpOwpAQCAtMzQwLDE0ICszNjAsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3Q6Omdl
dENvbnN0cnVjdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxhck9wZXJhdGlvbiIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RH
bG9iYWxPYmplY3QiLCAicmVndWxhck9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0z
NTgsMTQgKzM4MSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2Jq
ZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAi
ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNzgsMTQgKzQwNCwxNyBA
QCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xv
YmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQ
YXJhbSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMzk4LDYg
KzQyNyw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmEKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0
ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAg
SlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
QEAgLTQwOSwxNyArNDQxLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
R2xvYmEKICAgICAgICAgcmV0dXJuIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMShzdGF0ZSk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0
dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1
cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uVGVzdFByaXZhdGVGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0R2xvYmFsT2JqZWN0IiwgInRlc3RQcml2YXRlRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0
IiwgInRlc3RQcml2YXRlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwudGVzdFByaXZhdGVGdW5jdGlvbigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjIsMTAgKzIyMiwxMyBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RTdXBw
bGVtZW50YWw6OkNPTlNUX0lNCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Iq
PihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGF1dG8gc3RyMSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0yMzUsNyArMjM4LDcgQEAg
dGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JT
Y3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJm
YWNlIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIp
OwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdEludGVyZmFjZTo6Y3JlYXRlKCpjb250ZXh0LCBXVEZN
b3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkgewog
ICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTQxMiw3ICs0MTUsOSBAQCB2
b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNSZWFkT25seUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRy
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQyMyw3ICs0Mjgs
OSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RJbnRlcmZhY2U6OmltcGxlbWVudHNTdGF0
aWNBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQzNCwx
MiArNDQxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG8KICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJ
bnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIxKCkpOwpAQCAtNDUxLDEyICs0NjAsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogI2lmIEVOQUJMRShDb25k
aXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJp
bXBsZW1lbnRzU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGlt
cGwuaW1wbGVtZW50c1N0cjIoKSk7CkBAIC00NjgsMTIgKzQ3OSwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJm
YWNlIiwgImltcGxlbWVudHNTdHIzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIz
Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVt
ZW50c1N0cjMoKnN0YXRlKSk7CiB9CkBAIC00ODMsMTIgKzQ5NiwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJm
YWNlIiwgImltcGxlbWVudHNOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2Rl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC5pbXBsZW1lbnRzTm9kZSgpKTsKQEAgLTUwMCw3ICs1MTUsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5
QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC01MTEsNyAr
NTI4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0bwogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtNTIyLDEyICs1NDEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0bwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRp
dGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbFN0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVt
ZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoaW1wbCkpOwpAQCAtNTM5LDEyICs1NjAsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjIoaW1wbCkpOwpAQCAt
NTU2LDEyICs1NzksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVu
dAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwogICAgIH0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbFN0cjMoKnN0YXRlKSk7
CiB9CkBAIC01NzEsMTIgKzU5NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VT
dXBwbGVtZW50CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVu
dGFsTm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9kZShpbXBsKSk7CkBAIC01ODcsMTggKzYxNCwy
MiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50CiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEludGVyZmFjZTo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IAogYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC02MzAsNyArNjYxLDkgQEAgYm9vbCBKU1Rlc3RJ
bnRlcmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwg
RU5BQkxFKENvbmRpdGlvbjIzKQogYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcklt
cGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJp
bmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02NDMsMTEgKzY3NiwxMyBAQCBib29sIHNldEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCiBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNTdHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTY2MiwxMSArNjk3LDEzIEBAIGJvb2wg
c2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXgKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVt
ZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2Ui
LCAiaW1wbGVtZW50c1N0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsK
ICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0SW1wbGVtZW50c1N0cjMoKnN0YXRlLCB2YWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC02NzcsMTYgKzcxNCwxOCBAQCBib29sIHNldEpTVGVzdElu
dGVyZmFjZUltcGxlbWVudHNTdHIzKEV4CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMjMpCiBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZh
bHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIiwgIk5vZGUiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1l
bnRzTm9kZSIsICJOb2RlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1w
bC5zZXRJbXBsZW1lbnRzTm9kZSgqbmF0aXZlVmFsdWUpOwpAQCAtNjk4LDcgKzczNyw5IEBAIGJv
b2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXgKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTEsMTEgKzc1MiwxMyBAQCBib29s
IHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlCiAjaWYgRU5BQkxFKENvbmRpdGlv
bjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZh
Y2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxT
dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTczMCwx
MSArNzczLDEzIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMigKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNU
ZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNl
IiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0U3VwcGxl
bWVudGFsU3RyMygqc3RhdGUsIHZhbHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc0NSwxNiAr
NzkwLDE4IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMygKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0SlNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwg
InN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNOb2RlOjp0b1dyYXBwZWQodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0
cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9k
ZSIsICJOb2RlIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIsICJOb2RlIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRh
bDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXBsLCAqbmF0aXZlVmFsdWUpOwpAQCAtNzcxLDEwICs4
MTgsMTMgQEAgSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKAogI2lmIEVO
QUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJm
YWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1w
bGVtZW50c01ldGhvZDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QxIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
bXBsLmltcGxlbWVudHNNZXRob2QxKCk7CkBAIC03ODYsMTQgKzgzNiwxNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogY29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtODAz
LDcgKzg1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9i
akFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsIDEsICJvYmpBcmciLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9k
MiIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVu
dHNNZXRob2QyIiwgIlRlc3RPYmoiKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250
ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRp
b24oc3RhdGUsIGVjKTsKQEAgLTgxNSwxMCArODY4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QzIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFj
ZSIsICJpbXBsZW1lbnRzTWV0aG9kMyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c01ldGhvZDMoKnN0YXRlKSk7CiB9CkBAIC04
MjgsNiArODg0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgog
I2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1w
bGVtZW50c01ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVzdEludGVyZmFjZTo6aW1wbGVtZW50
c01ldGhvZDQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtODM3LDEwICs4OTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBw
bGVtZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50
YWxNZXRob2QxKGltcGwpOwpAQCAtODUyLDE0ICs5MTQsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdElu
dGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8qIGNvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTg2OSw3
ICs5MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpB
cmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChV
TkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCAxLCAib2JqQXJnIiwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTWV0aG9k
MiIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1l
bnRhbE1ldGhvZDIiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0
ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6
OnN1cHBsZW1lbnRhbE1ldGhvZDIoaW1wbCwgKmNvbnRleHQsIFdURk1vdmUoc3RyQXJnKSwgKm9i
akFyZywgZWMpKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtODgxLDEw
ICs5NDYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1l
bnRhbE1ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIs
ICJzdXBwbGVtZW50YWxNZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRo
b2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJ
bnRlcmZhY2U6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5zdXBwbGVtZW50YWxNZXRob2QzKCpzdGF0ZSkpOwogfQpAQCAtODk0LDYgKzk2Miw5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDQo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
TWV0aG9kNCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMSwxOCArMTMxLDIyIEBAIHZvaWQgSlNUZXN0SXRlcmFibGU6OmRlc3Ry
b3koSlNDOjpKU0NlbGwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0SXRlcmFibGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SXRlcmFibGVQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SXRlcmFibGVQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQCB2b2lk
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpkZXN0cm95CiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciIsICJ0ZXN0QXR0cmlidXRlQ3VzdG9tIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ii
LCAidGVzdEF0dHJpYnV0ZUN1c3RvbSIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVDdXN0b20oKnN0YXRlKSk7CiB9CkBAIC0xNDcs
MTIgKzE0OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogICAgIH0K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVSV0N1
c3RvbSgqc3RhdGUpKTsKIH0KQEAgLTE2MCwxOCArMTY0LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTgwLDExICsxODgsMTMgQEAgYm9vbCBzZXRKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cgogCiBib29sIHNldEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwg
InRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRl
c3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogICAgIH0KICAgICBjYXN0ZWRUaGlzLT5zZXRUZXN0QXR0
cmlidXRlUldDdXN0b20oKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTgs
MTAgKzIwOCwxMyBAQCBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQ
cm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0Q3VzdG9t
RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEN1c3RvbUZ1bmN0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6aW5mbygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
c3RlZFRoaXMtPnRlc3RDdXN0b21GdW5jdGlvbigqc3RhdGUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDIwNTE3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDE4ICsxMjUsMjIgQEAg
dm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpkZXN0cgogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2Jq
ZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNl
dEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAg
LTE1MCwxNiArMTU0LDE5IEBAIEpTVmFsdWUgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
Z2UKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImxpc3RlbmVyIiwgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgIm1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAibGlzdGVuZXIiLCAiVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAgYXV0byBsaXN0ZW5lciA9IEpT
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhv
ZChXVEZNb3ZlKGxpc3RlbmVyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMTAgKzgyLDEz
IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ28KIAogdGVtcGxhdGU8
PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KHN0YXRl
LT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byBz
dHIxID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTE1OSwxOCArMTYyLDIyIEBAIHZvaWQg
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0MKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDYgKzc5LDkgQEAgdHlwZWRlZiBKU0RPTUNvbnN0cnVjdG9yPEpTVGVzdE5vZGU+
IEpTVAogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAg
IEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3ROb2RlOjpjcmVhdGUo
KTsKQEAgLTE2MSwxMiArMTY0LDE0IEBAIEpTT2JqZWN0KiBKU1Rlc3ROb2RlOjpwcm90b3R5cGUo
Vk0mIHZtLCAKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb2RlIiwgIm5hbWUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLm5hbWUoKSk7CkBA
IC0xNzYsMTggKzE4MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3Rh
dGUqCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5vZGU6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJv
b2wgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgpAQCAtMTk2LDExICsyMDUsMTMgQEAgYm9vbCBzZXRKU1Rlc3ROb2RlQ29uc3RydWN0b3Io
RXhlY1N0YXRlKgogCiBib29sIHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDYsMTIgKzE0NiwxNCBAQCB2b2lkIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OmRl
c3Ryb3koSlNDCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9u
bHlBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9u
bHlBdHRyIik7CiAgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwpAQCAtMTgx
LDEyICsxODMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbgog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dy
aXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIp
OwogICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTIxNiwxMiArMjIw
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWlu
aXN0aWMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE5v
bmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIiKTsKICAgICB9
CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0yNTEsMTIgKzI1NywxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE5vbmRl
dGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
Iik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogI2lmIEVOQUJMRShXRUJfUkVQ
TEFZKQpAQCAtMjkwLDEyICsyOTgsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRl
cm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICNpZiBFTkFCTEUoV0VCX1JF
UExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKQEAgLTMyNSwxOCArMzM1LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE5vbmRldGVy
bWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIAogYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0zNDUs
MTEgKzM1OSwxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvCiAK
IGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RO
b25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zNjIsMTEgKzM3OCwxMyBA
QCBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zNzksMTEgKzM5NywxMyBAQCBib29sIHNldEpT
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwg
Im5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zOTYsMTEgKzQxNiwxMyBAQCBib29s
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwpAQCAtNDIwLDEwICs0NDIsMTMgQEAgSlNWYWx1ZSBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjpnZXRDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJvQXJn
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRl
cm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0
ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMCw5ICsxMzAsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2Jq
OjpFbnVtVHlwZT4gcAogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1UeXBlIGNvbnZlcnQ8VGVz
dE9iajo6RW51bVR5cGU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkVudW1UeXBlPihz
dGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93
U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZh
bHVlKCk7CkBAIC0xODEsOSArMTgzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6
T3B0aW9uYWw+IHAKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpPcHRpb25hbCBjb252ZXJ0PFRlc3RP
Ymo6Ok9wdGlvbmFsPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpPcHRpb25hbD4oc3Rh
dGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1
ZSgpOwpAQCAtMjI0LDkgKzIyOCwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0ZUVu
dW1OYW1lPiBwCiAKIHRlbXBsYXRlPD4gQWx0ZXJuYXRlRW51bU5hbWUgY29udmVydDxBbHRlcm5h
dGVFbnVtTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8QWx0ZXJuYXRlRW51bU5hbWU+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUo
KTsKQEAgLTI2NSw5ICsyNzEsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVt
QT4gcGFycwogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1BIGNvbnZlcnQ8VGVzdE9iajo6RW51
bUE+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkVudW1BPihzdGF0ZSwgdmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0zMDgs
OSArMzE2LDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnMKIAog
dGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQiBjb252ZXJ0PFRlc3RPYmo6OkVudW1CPihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byBy
ZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpFbnVtQj4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMzUxLDkgKzM2MSwxMSBA
QCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBwYXJzCiAKIHRlbXBsYXRlPD4g
VGVzdE9iajo6RW51bUMgY29udmVydDxUZXN0T2JqOjpFbnVtQz4oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFy
c2U8VGVzdE9iajo6RW51bUM+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1
bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
ICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTM5Niw5ICs0MDgsMTEgQEAgdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6Oktp
bmQgY29udmVydDxUZXN0T2JqOjpLaW5kPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpL
aW5kPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVz
dWx0LnZhbHVlKCk7CkBAIC00MzksOSArNDUzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVz
dE9iajo6U2l6ZT4gcGFyc2UKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpTaXplIGNvbnZlcnQ8VGVz
dE9iajo6U2l6ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6U2l6ZT4oc3RhdGUsIHZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpA
QCAtNDgyLDkgKzQ5OCwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVu
Y2U+CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZmlkZW5jZSBjb252ZXJ0PFRlc3RPYmo6OkNv
bmZpZGVuY2U+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkNvbmZpZGVuY2U+KHN0YXRl
LCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUo
KTsKQEAgLTQ5NywxMSArNTE1LDEzIEBAIHRlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIqIGV4
cGVjdGVkRW4KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5PiBjb252
ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVjU3RhdGUmIHN0YXRlLCBKU1Zh
bHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5IHsgeyB9LCBUZXN0
T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSwgVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5n
LCAiZGVmYXVsdFN0cmluZyIsIHsgfSwgZmFsc2UsIHsgfSwgeyB9LCB7IH0sIHsgfSwgMCwgMCwg
eyB9LCB7IH0sIDAsIDAsIHsgfSwgeyB9LCB7IH0sIDAsIHsgfSwgMCwgeyB9LCAwLCB7IH0sIDAs
IHsgfSwgMCwgbnVsbHB0ciwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSwgeyB9IH07CiAg
ICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFv
YmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51
bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPFRlc3RPYmo6OkVu
dW1UeXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCIpKSk7CkBAIC02MDMsOSAr
NjIzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4KIAogdGVt
cGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRl
TnVsbD4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RU
b2xlcmF0ZU51bGw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAo
VU5MSUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAg
ICAgYXV0byByZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0PFRlc3RPYmo6OkVudW1U
eXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZSIpKSk7CkBAIC02MjMsMTEgKzY0NSwxMyBA
QCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnlUCiAKIHRlbXBsYXRlPD4g
T3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+IGNvbnZl
cnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
aWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpE
aWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbCB7IHsgfSwgeyB9IH07CiAgICAgYXV0byog
b2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwg
b2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25W
YWx1ZSA9IGNvbnZlcnRPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4oc3RhdGUsIG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZh
bHVlIikpKTsKQEAgLTYzOSwxMSArNjYzLDEzIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RGljdGlvbmFyeVQKIAogdGVtcGxhdGU8PiBPcHRpb25hbDxBbHRlcm5hdGVEaWN0aW9uYXJ5
TmFtZT4gY29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRlRGljdGlvbmFyeU5hbWU+KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAodmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEFsdGVybmF0ZURpY3Rpb25h
cnlOYW1lIHsgeyB9LCB7IH0gfTsKICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3Qo
KTsKICAgICBpZiAoVU5MSUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBSZWdFeHBP
YmplY3RUeXBlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gTnVsbG9w
dDsKICAgICB9CiAgICAgYXV0byBlbnVtZXJhdGlvblZhbHVlID0gY29udmVydE9wdGlvbmFsPFRl
c3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWUiKSkpOwpAQCAtMTEwMiwxOSArMTEy
OCwyMiBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OnJlYWRvbmx5ID09IDAsICJyCiAKIHRlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAidGVzdENhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgbnVsbHB0cik7CiAgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxs
YmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVu
dCgxKS5pc0Z1bmN0aW9uKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKnN0YXRlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVj
dCIsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9u
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVz
dE9iamVjdCIsIG51bGxwdHIpOwogICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3Ry
dWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9u
Q29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIp
OwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RP
Ymo6OmNyZWF0ZShkb2N1bWVudCwgKnRlc3RDYWxsYmFjaywgKnRlc3RDYWxsYmFja0Z1bmN0aW9u
KTsKQEAgLTE0OTUsMTIgKzE1MjQsMTQgQEAgYm9vbCBKU1Rlc3RPYmo6OmdldE93blByb3BlcnR5
U2xvdEJ5SW5kZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlMb25n
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLnJlYWRPbmx5TG9uZ0F0dHIoKSk7CkBAIC0xNTEwLDEyICsxNTQxLDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
InJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwucmVhZE9ubHlTdHJpbmdBdHRyKCkpOwpAQCAtMTUyNSwxMiArMTU1OCwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0CiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJyZWFkT25seVRlc3RPYmpBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
InJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnJlYWRPbmx5VGVzdE9iakF0dHIoKSk7CkBAIC0xNTQw
LDcgKzE1NzUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVRlc3RPYmpBCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9ubHlMb25nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRlc3RPYmo6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0
dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTU0OSw3ICsx
NTg2LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aQogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgVGVzdE9iajo6c3RhdGljU3RyaW5nQXR0
cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNTU4LDEyICsx
NTk3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGkKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2Rl
ZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iaiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KQEAgLTE1NzEsMTIgKzE2MTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQ29uc3RydWN0b3JUZXN0UwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKICAgICB9CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTg5LDEyICsxNjMyLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGUKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJlbnVtQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZW51bUF0dHIoKSk7CkBAIC0xNjA0LDEy
ICsxNjQ5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGEKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKQEAgLTE2MTksMTIg
KzE2NjYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJvY3RldEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRB
dHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKQEAgLTE2MzQs
MTIgKzE2ODMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdAog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1Zh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2hv
cnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNob3J0QXR0cigpKTsKQEAgLTE2
NDksMTIgKzE3MDAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNT
dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJjbGFtcGVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmNsYW1wZWRTaG9ydEF0dHIoKSk7CkBAIC0xNjY0LDEyICsxNzE3LDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiZW5mb3JjZVJhbmdlU2hvcnRBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVu
Zm9yY2VSYW5nZVNob3J0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5lbmZvcmNl
UmFuZ2VTaG9ydEF0dHIoKSk7CkBAIC0xNjc5LDEyICsxNzM0LDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakVuZm9yY2VSYW5nZVNob3IKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5z
aWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZFNob3J0QXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKQEAg
LTE2OTQsMTIgKzE3NTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9y
dEF0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImxvbmdBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
ImxvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmxvbmdBdHRyKCkpOwpAQCAt
MTcwOSwxMiArMTc2OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0cihFeGVj
U3RhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImxvbmdMb25nQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ0xv
bmdBdHRyKCkpOwpAQCAtMTcyNCwxMiArMTc4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpMb25nTG9uZ0F0dHIoRXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9u
Z0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
dW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRMb25nTG9uZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7
CkBAIC0xNzM5LDEyICsxODAyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVk
TG9uZ0xvbmcKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIGltcGwuc3RyaW5nQXR0cigpKTsKQEAgLTE3NTQsMTIgKzE4MTksMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpVc3ZzdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAidXN2c3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC51c3ZzdHJpbmdBdHRyKCkp
OwpAQCAtMTc2OSwxMiArMTgzNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJp
bmdBdHRyKEV4CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3RPYmpBdHRyKCkpOwpAQCAtMTc4NCwxMiAr
MTg1MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3Rh
dGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3ROdWxsYWJsZU9iakF0dHIo
KSk7CkBAIC0xNzk5LDcgKzE4NzAsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVs
bGFibGVPYmpBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKQEAgLTE4MTQsMTIgKzE4ODcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
TGVuaWVudFRlc3RPYmpBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdl
YWJsZUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5mb3JnZWFibGVBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC51bmZvcmdlYWJsZUF0dHIoKSk7CkBAIC0x
ODI5LDEyICsxOTA0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuZm9yZ2VhYmxlQXR0
cigKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJz
dHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
KSk7CkBAIC0xODQ0LDEyICsxOTIxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmlu
Z0F0dHJUcmVhdGkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwudXN2c3RyaW5nQXR0clRyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSk7CkBAIC0xODU5LDEyICsxOTM4LDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHJUcmUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
aW1wbGVtZW50YXRpb25FbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuaW1wbGVtZW50YXRpb25FbnVtQXR0cigpKTsKQEAgLTE4NzQsMTIgKzE5NTUs
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRpb25FbgogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC54bWxPYmpBdHRyKCkpOwpAQCAtMTg4OSwxMiArMTk3MiwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNy
ZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNyZWF0
ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjcmVhdGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBs
LmlzQ3JlYXRlKCkpOwpAQCAtMTkwNCwxMiArMTk4OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDcmVhdGUoRXhlY1N0YXRlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJp
bmdhdHRyQXR0cikpOwpAQCAtMTkxOSwxMiArMjAwNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3Rl
ZFVTVlN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVT
VlN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWR1c3ZzdHJpbmdhdHRyQXR0cikpOwpAQCAtMTkzNCwxMiArMjAyMywxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJy
ZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50
ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJB
dHRyKSk7CkBAIC0xOTQ5LDEyICsyMDQwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEludGVncmEKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWdu
ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RkOjpt
YXgoMCwgaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpKTsKQEAgLTE5NjQsMTIgKzIwNTcsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZQogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5o
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CkBAIC0xOTc5LDEyICsyMDc0LDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW4KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVJM
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZ2V0VVJM
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKTsKQEAg
LTE5OTQsMTIgKzIwOTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJM
QXR0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJM
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0cikpOwpAQCAtMjAwOSwxMiArMjEwOCwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1Zh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6
SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIpKTsKQEAgLTIwMjQsMTIgKzIx
MjUsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQQogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21JbnRl
Z3JhbEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIpKTsKQEAgLTIwMzksMTIg
KzIxNDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0cikp
OwpAQCAtMjA1NCwxMiArMjE1OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21CCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0
ZWRDdXN0b21VUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmdldFVSTEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRVUkxBdHRyQXR0cikpOwpAQCAt
MjA3MCwxMiArMjE3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0
b21VCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVu
YWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
ImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSk7CkBAIC0yMDg2LDEy
ICsyMTk1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWUKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIGltcGwudHlwZWRBcnJheUF0dHIoKSk7CkBAIC0yMTAxLDEyICsy
MjEyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEUKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwpAQCAtMjExOCwxMiArMjIzMSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpB
dHRyV2l0aEdldHRlckV4CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKICAgICB9CiAgICAg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CkBAIC0yMTM1LDEyICsyMjUwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakF0dHJXaXRoR2V0dGVyRXgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbigpKTsKQEAgLTIxNTAsMTIgKzIyNjcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqQXR0cldpdGhTZXR0ZXJFeAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2Uo
KSk7CkBAIC0yMTY1LDEyICsyMjg0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJX
aXRoU2V0dGVyRXgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjE4MiwxMiAr
MjMwMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdlCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwpAQCAtMjE5NywxMiArMjMyMCwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNlCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJjdXN0b21BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbUF0dHIiKTsKICAgICB9
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21BdHRyKCpzdGF0
ZSkpOwogfQpAQCAtMjIxMCwxMiArMjMzNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
dXN0b21BdHRyKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAib25mb28iKTsKICAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFw
cGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwpAQCAtMjIyNCwxMiArMjM1MSwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAib253ZWJraXRmb28iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib253ZWJraXRmb28iKTsK
ICAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFt
ZXMoKS5mb29FdmVudCkpOwpAQCAtMjIzOCwxMiArMjM2NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpPbndlYmtpdGZvbyhFeGVjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSkpOwpAQCAtMjI1MywxMiArMjM4NCwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2FsbFdpdGhBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxXaXRoQW5kU2V0dGVy
Q2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aENhbGxX
aXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRlKSk7CkBAIC0yMjY4LDEyICsyNDAx
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFMKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMjg2LDEyICsyNDIx
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjMwMywxMiArMjQ0MCwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0y
MzIzLDEyICsyNDYyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0yMzQxLDEyICsyNDgyLDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTIzNjEs
MTIgKzI1MDQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKQEAgLTIzNzksMTIgKzI1MjQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpOwpAQCAtMjM5
NSwxMiArMjU0MiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1l
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
Y29uZGl0aW9uYWxBdHRyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIxIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjEoKSk7CkBAIC0yNDEyLDEy
ICsyNTYxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25k
aXRpb25hbEF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0
cjIoKSk7CkBAIC0yNDI5LDEyICsyNTgwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmNvbmRpdGlvbmFsQXR0cjMoKSk7CkBAIC0yNDQ2LDEyICsyNTk5LDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0
cjQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEE6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAtMjQ2MSwxMiArMjYxNiwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0CiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
b25kaXRpb25hbEF0dHI1Iik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0T2JqZWN0Qjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CkBAIC0yNDc2LDEyICsyNjMzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJj
b25kaXRpb25hbEF0dHI2Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAg
ICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI0
OTAsMTIgKzI2NDksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJjYWNoZWRBdHRyaWJ1dGUxIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVl
IGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUxLmdldCgpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1MDgsMTIgKzI2
NjksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMQogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmlidXRlMiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjYWNoZWRBdHRyaWJ1dGUyIik7CiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZh
bHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1MjYsMTIgKzI2ODksMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMgogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYW55QXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBpbXBsLmFueUF0dHJpYnV0ZSgpOwpAQCAtMjU0MSwxMiArMjcwNiwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbnRlbnREb2N1bWVudCIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
b250ZW50RG9jdW1lbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9O
b2RlKHN0YXRlLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA/IHRvSlMoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA6IGpzTnVsbCgpKTsK
QEAgLTI1NTUsMTIgKzI3MjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERv
Y3VtZW50KAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnQoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnQiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPFRlc3RPYmos
IFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1
cGRhdGVNdXRhYmxlUG9pbnQpKTsKQEAgLTI1NzAsMTIgKzI3MzksMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJ
bW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImltbXV0YWJsZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50Iik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1tdXRhYmxlUG9pbnQoKSkpOwpA
QCAtMjU4NSwxMiArMjc1NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQ
b2ludChFCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNv
ZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInN0cmF3YmVycnkiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5
KCkpOwpAQCAtMjYwMCwxMiArMjc3MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJh
d2JlcnJ5KEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZGVzY3JpcHRpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiZGVzY3JpcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
ZGVzY3JpcHRpb24oKSk7CkBAIC0yNjE1LDEyICsyNzkwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakRlc2NyaXB0aW9uKEV4ZWMKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpZCIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5pZCgpKTsKQEAgLTI2MzAs
MTIgKzI4MDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdAog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAiaGFzaCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJoYXNoIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5oYXNoKCkpOwpAQCAtMjY0NSwx
MiArMjgyNCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwucmVwbGFjZWFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNjYwLDEyICsyODQxLDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmkKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9O
dWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNjc1
LDEyICsyODU4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlRG91YmxlQXQK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVMb25nQXR0cmli
dXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVMb25nQXR0cmlidXRlKCkpOwpAQCAt
MjY5MCwxMiArMjg3NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdB
dHRyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlQm9v
bGVhbkF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSgp
KTsKQEAgLTI3MDUsMTIgKzI4OTIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFi
bGVCb29sZWFuQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxh
YmxlU3RyaW5nQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZSgpKTsKQEAgLTI3MjAsMTIgKzI5MDksMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b051
bGxhYmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSgpKTsKQEAg
LTI3MzUsMTIgKzI5MjYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25n
U2V0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibnVs
bGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0
cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0
ZSwgaW1wbC5udWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKCkpOwpAQCAtMjc1MCwxMiAr
Mjk0MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NlCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVVT
VlN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlVVNWU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxsKHN0YXRl
LCBpbXBsLm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUoKSk7CkBAIC0yNzY1LDEy
ICsyOTYwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW4KIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpA
QCAtMjc4MiwxMiArMjk3OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1ZhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJhdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLmF0dHJpYnV0ZSgpKTsKQEAgLTI3OTcsMTIgKzI5OTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRy
aWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgp
KTsKQEAgLTI4MTIsMTIgKzMwMTMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmli
dXRlV2l0aFJlcwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVk
VGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndh
cmRzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5w
dXRGb3J3YXJkc0F0dHJpYnV0ZSgpKTsKQEAgLTI4MjcsMTIgKzMwMzAsMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc051
bGxhYmxlQXR0cmlidXRlKCkpOwpAQCAtMjg0MiwxMiArMzA0NywxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0
cmluZ2lmaWVyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAic3RyaW5naWZpZXJBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5naWZp
ZXJBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBs
LnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpOwpAQCAtMjg1NywxOCArMzA2NCwyMiBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE9ialByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0yODc3LDcgKzMwODgsOSBAQCBib29sIHNl
dEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogCiAKIGJvb2wgc2V0SlNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9X
VEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODg4LDExICszMTAxLDEzIEBAIGJvb2wgc2V0
SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmcKIAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CisgICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yLgogICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qo
c3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJUZXN0U3ViT2JqRW5h
YmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CkBAIC0yOTAxLDExICszMTE2LDEzIEBAIGJvb2wgc2V0
SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHQKIAogYm9vbCBzZXRKU1Rlc3RPYmpFbnVt
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJlbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZTxUZXN0T2JqOjpFbnVt
VHlwZT4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yOTIwLDExICszMTM3LDEzIEBAIGJvb2wgc2V0SlNU
ZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGEKIAogYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJieXRlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDhfdD4oKnN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0yOTM3LDExICszMTU2LDEzIEBAIGJvb2wg
c2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGEKIAogYm9vbCBzZXRKU1Rlc3RPYmpP
Y3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRBdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm9jdGV0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PHVpbnQ4
X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMjk1NCwxMSArMzE3NSwx
MyBAQCBib29sIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIHN0CiAKIGJvb2wgc2V0
SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInNo
b3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxpbnQxNl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTI5NzEs
MTEgKzMxOTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdAog
CiBib29sIHNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjbGFtcGVk
U2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MTZfdD4oKnN0YXRlLCB2YWx1
ZSwgQ2xhbXApOwpAQCAtMjk4OCwxMSArMzIxMywxMyBAQCBib29sIHNldEpTVGVzdE9iakNsYW1w
ZWRTaG9ydEF0dHIoRXhlY1N0CiAKIGJvb2wgc2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxpbnQxNl90Pigqc3RhdGUsIHZhbHVlLCBFbmZvcmNlUmFuZ2UpOwpAQCAt
MzAwNSwxMSArMzIzMiwxMyBAQCBib29sIHNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0
cihFCiAKIGJvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
dW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDx1aW50MTZfdD4oKnN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMDIyLDExICszMjUxLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1MKIAogYm9vbCBzZXRKU1Rlc3RP
YmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJsb25nQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMy
X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzAzOSwxMSArMzI3MCwx
MyBAQCBib29sIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhCiAKIGJvb2wgc2V0
SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
ImxvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxpbnQ2NF90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsK
QEAgLTMwNTYsMTEgKzMyODksMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhl
Y1N0YXRlKgogCiBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
dWludDY0X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzA3MywxMSAr
MzMwOCwxMyBAQCBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4CiAKIGJv
b2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJzdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzA5MCwxMSArMzMyNywxMyBAQCBi
b29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzCiAKIGJvb2wgc2V0SlNUZXN0
T2JqVXN2c3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3Zz
dHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVzdnN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gdmFsdWVUb1VTVlN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzEwNywxNiArMzM0NiwxOCBA
QCBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHIoRXhlY1N0YXRlCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVz
dE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFs
dWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAidGVzdE9iakF0dHIiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RPYmpBdHRyIiwg
IlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpbXBsLnNldFRl
c3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CkBAIC0zMTI2LDE4ICszMzY3LDIwIEBAIGJvb2wgc2V0
SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiAKIAogYm9vbCBzZXRKU1Rlc3RPYmpUZXN0
TnVsbGFibGVPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RO
dWxsYWJsZU9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdE51bGxhYmxlT2JqQXR0ciIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFRlc3RP
YmoqIG5hdGl2ZVZhbHVlID0gbnVsbHB0cjsKICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKICAgICAgICAgbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgICAgICB0
aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJs
ZU9iakF0dHIiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVsbGFibGVPYmpBdHRy
IiwgIlRlc3RPYmoiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTMxNDgsNyArMzM5MSw5IEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2Jq
QXR0cihFeGUKIAogYm9vbCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKQEAgLTMxNTcsNyArMzQwMiw3IEBAIGJvb2wgc2V0SlNU
ZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWMKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBl
ZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhy
b3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJsZW5pZW50VGVzdE9i
akF0dHIiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImxlbmllbnRUZXN0T2JqQXR0ciIsICJUZXN0
T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRMZW5pZW50
VGVzdE9iakF0dHIoKm5hdGl2ZVZhbHVlKTsKQEAgLTMxNjcsMTEgKzM0MTIsMTMgQEAgYm9vbCBz
ZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlYwogCiBib29sIHNldEpTVGVzdE9ialN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgInN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IHZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCB2YWx1
ZSk7CkBAIC0zMTg0LDExICszNDMxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0clRy
ZWF0aW5nTnVsbEEKIAogYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRv
VVNWU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzIw
MSwxMSArMzQ1MCwxMyBAQCBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051
CiAKIGJvb2wgc2V0SlNUZXN0T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJpbXBsZW1lbnRhdGlvbkVudW1BdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2U8QWx0
ZXJuYXRlRW51bU5hbWU+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMzIyMCwxNiArMzQ3MSwxOCBAQCBi
b29sIHNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIoCiAKIGJvb2wgc2V0SlNUZXN0
T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJYTUxPYmpB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIlhNTE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7
Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
WE1MT2JqQXR0ciIsICJUZXN0T2JqIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIsICJUZXN0T2Jq
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaW1wbC5zZXRYTUxPYmpBdHRy
KCpuYXRpdmVWYWx1ZSk7CkBAIC0zMjM5LDExICszNDkyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2Jq
WE1MT2JqQXR0cihFeGVjU3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY3JlYXRlIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNy
ZWF0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtMzI1Niwx
MSArMzUxMSwxMyBAQCBib29sIHNldEpTVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlCiAK
IGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJl
ZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3Rh
dGUpOwpAQCAtMzI3MywxMSArMzUzMCwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0
cmluZ0F0dHIoRXhlCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWU3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gdmFsdWVUb1VTVlN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAtMzI5MCwxMSArMzU0OSwxMyBA
QCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIoCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMzMDcsMTEgKzM1NjgsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRQogCiBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8dWludDMy
X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzMyNCwxMSArMzU4Nywx
MyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyCiAKIGJvb2wgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVk
Qm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKHN0YXRlKTsKQEAg
LTMzNDEsMTEgKzM2MDYsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0
cihFeAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJy
ZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRl
KTsKQEAgLTMzNTgsMTEgKzM2MjUsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVUkxB
dHRyKEV4ZWNTdAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlVSTEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9V
U1ZTdHJpbmcoc3RhdGUsIHZhbHVlKTsKQEAgLTMzNzUsMTEgKzM2NDQsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVj
dGVkU3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMzOTIsMTEgKzM2NjMs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZQogCiBib29sIHNl
dEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNDA5LDEx
ICszNjgyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWwKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2
YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtMzQyNiwxMSArMzcwMSwxMyBAQCBib29sIHNldEpT
VGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQ0NCwx
MSArMzcyMSwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoCiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQ2Miwx
OCArMzc0MSwyMCBAQCBib29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1CiAK
IGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAidHlwZWRBcnJheUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidHlwZWRBcnJheUF0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJy
YXkiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpbXBsLnNldFR5cGVkQXJyYXlBdHRyKG5hdGl2
ZVZhbHVlLmdldCgpKTsKQEAgLTM0ODMsMTEgKzM3NjQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpU
eXBlZEFycmF5QXR0cihFeGVjU3RhdAogCiBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC0zNTAwLDExICszNzgzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb24KIAogYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMy
X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMzUxNywxMSArMzgwMiwx
MyBAQCBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0
SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1MzYsMTEgKzM4
MjMsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbgogCiBib29s
IHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25XaXRoTWVz
c2FnZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwpAQCAtMzU1NSwxMSArMzg0NCwxMyBAQCBib29s
IHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9X
VEZTdHJpbmcoc3RhdGUpOwpAQCAtMzU3MiwxMSArMzg2MywxMyBAQCBib29sIHNldEpTVGVzdE9i
alN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjCiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTM1OTEsMTEgKzM4ODQs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4YwogCiBib29sIHNl
dEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
Y3VzdG9tQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjdXN0b21BdHRyIik7CiAgICAgfQogICAgIGNh
c3RlZFRoaXMtPnNldEN1c3RvbUF0dHIoKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0zNjA0LDExICszODk5LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihFeGVj
U3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJvbmZvbyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvbmZvbyIpOwogICAgIH0KICAg
ICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2FzdGVkVGhpcywgY2FzdGVkVGhp
cy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZhbHVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTM2MTcsMTEgKzM5MTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVj
U3RhdGUqIHN0YXRlLAogCiBib29sIHNldEpTVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9u
d2Via2l0Zm9vIik7CiAgICAgfQogICAgIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0ZSgqc3RhdGUs
ICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVu
dCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzYzMCwxMSArMzkyOSwxMyBAQCBib29s
IHNldEpTVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSogCiAKIGJvb2wgc2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUs
IHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM2NDcsMTEgKzM5NDgsMTMgQEAgYm9vbCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dAogCiBib29sIHNldEpTVGVzdE9ialdp
dGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC0zNjY0LDE2ICszOTY3LDE4IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aENh
bGxXaXRoQW5kU2V0dGVyQ2EKIAogYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6
OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAg
ICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0T2JqIik7CisgICAgICAgIHRo
cm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwpAQCAtMzY4NiwxNiArMzk5MSwxOCBAQCBib29sIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250CiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQo
dmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCpzdGF0ZSwgKm5h
dGl2ZVZhbHVlKTsKQEAgLTM3MDUsMTYgKzQwMTIsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
IiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyIsICJUZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0zNzI3LDE2
ICs0MDM2LDE4IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnQKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKQEAgLTM3NDksMTYgKzQwNjAsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAg
ICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiVGVz
dE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAt
Mzc3MSwxNiArNDA4NCwxOCBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250CiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2Jq
Ojp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0g
ICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUi
LCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKQEAgLTM3OTMsMTYgKzQxMDgsMTggQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZh
bHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCAiVGVzdE9i
aiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUi
LCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0
V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSgqbmF0aXZlVmFsdWUpOwpA
QCAtMzgxMywxMSArNDEzMCwxMyBAQCBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxB
dHRyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0z
ODMyLDExICs0MTUxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVj
U3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBib29sIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CkBAIC0zODUxLDExICs0MTcyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMihFeGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODcwLDExICs0MTkzLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KICAgICByZXR1cm4gY2FzdGVkVGhpcy0+cHV0RGlyZWN0KHN0
YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiY29uZGl0aW9uYWxBdHRy
NCIpLCB2YWx1ZSk7CkBAIC0zODg1LDExICs0MjEwLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyNENvbnN0cnUKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENv
bmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1Iik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCiAgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVj
dChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImNvbmRpdGlvbmFs
QXR0cjUiKSwgdmFsdWUpOwpAQCAtMzkwMCwxMSArNDIyNywxMyBAQCBib29sIHNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJM
RShDb25kaXRpb24yKQogYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNiIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAgICAgfQogICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgogICAgIHJldHVybiBjYXN0ZWRUaGlzLT5wdXRE
aXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsICJjb25kaXRp
b25hbEF0dHI2IiksIHZhbHVlKTsKQEAgLTM5MTQsMTEgKzQyNDMsMTMgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydQogCiBib29sIHNldEpTVGVzdE9iakFueUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhbnlBdHRyaWJ1dGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlOwpAQCAt
MzkyOSwxOCArNDI2MCwyMCBAQCBib29sIHNldEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3Rh
dGUqCiAKIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2ludCIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9p
bnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IG51bGxwdHI7CiAg
ICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG5hdGl2ZVZhbHVl
ID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFu
YXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAibXV0YWJsZVBvaW50IiwgIlNWR1BvaW50Iik7CisgICAgICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm11dGFibGVQb2ludCIsICJTVkdQb2ludCIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzk1MSwxOCArNDI4NCwyMCBAQCBib29sIHNldEpTVGVz
dE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqCiAKIGJvb2wgc2V0SlNUZXN0T2JqSW1tdXRhYmxl
UG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9p
bnQ+KiBuYXRpdmVWYWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CiAgICAgICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZh
bHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAg
IHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxl
UG9pbnQiLCAiU1ZHUG9pbnQiKTsKKyAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiLCAiU1ZH
UG9pbnQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAg
LTM5NzMsMTEgKzQzMDgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVj
U3RhdAogCiBib29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAic3RyYXdiZXJyeSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzdHJhd2JlcnJ5Iik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbik7CkBAIC0zOTkwLDExICs0MzI3LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyYXdi
ZXJyeShFeGVjU3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJpZCIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpZCIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtNDAwNywxMSArNDM0NiwxMyBAQCBib29sIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gcHJvcGVydHkuCiAgICAgcmV0dXJuIGNhc3RlZFRoaXMtPnB1dERpcmVjdChz
dGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgInJlcGxhY2VhYmxlQXR0
cmlidXRlIiksIHZhbHVlKTsKQEAgLTQwMjAsMTEgKzQzNjEsMTMgQEAgYm9vbCBzZXRKU1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeAogCiBib29sIHNldEpTVGVzdE9iak51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51
bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9u
Z1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC00MDM3LDExICs0MzgwLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHQKIAogYm9vbCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAibnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2
YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CkBAIC00
MDU0LDExICs0Mzk5LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdTZXR0YWJs
ZUEKIAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlVVNWU3RyaW5nU2V0
dGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJs
ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nV2l0aFVuZGVmaW5l
ZE9yTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CkBAIC00MDcxLDExICs0NDE4LDEzIEBAIGJvb2wg
c2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWIKIAogYm9vbCBzZXRKU1Rlc3RPYmpO
dWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51
bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNDA4OCwxMSArNDQzNywxMyBAQCBib29sIHNldEpTVGVzdE9iak51bGxh
YmxlU3RyaW5nVmFsdWUoRXhlCiAKIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2Vy
dmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRl
V2l0aFJlc2VydmVkRW51bVR5cGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYXR0cmlidXRlV2l0aFJlc2Vy
dmVkRW51bVR5cGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2U8VGVzdE9iajo6T3B0aW9uYWw+KCpz
dGF0ZSwgdmFsdWUpOwpAQCAtNDEwNywxMSArNDQ1OCwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0
dHJpYnV0ZVdpdGhSZXNlcnZlZEVuCiAKIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNBdHRy
aWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKICAgICB9CiAg
ICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpLnB1
dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0
KCk7CkBAIC00MTI1LDExICs0NDc4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNB
dHRyaWJ1dGUoRXgKIAogYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndhcmRzTnVsbGFi
bGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0
ZSIpOwogICAgIH0KICAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndhcmRlZEltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSgpOwogICAgIGlmICgh
Zm9yd2FyZGVkSW1wbCkKQEAgLTQxNDUsMTEgKzQ1MDAsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpQ
dXRGb3J3YXJkc051bGxhYmxlQXR0cgogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ2lmaWVyQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0
cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHZhbHVlKTsKQEAgLTQxNzcsMTQgKzQ1MzQs
MTcgQEAgSlNWYWx1ZSBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKFZNJiB2bQogI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQxOTcsMTQg
KzQ1NTcsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjIoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxpbnQzMl90Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MjE3LDYgKzQ1ODAsOSBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBz
dGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdz
Q291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNDIyOCwxNiArNDU5NCwxOSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKHN0YXRlKTsKICNlbmRp
ZgogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ2b2lkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpbXBsLnZvaWRNZXRob2QoKTsKQEAgLTQyNDYsMTQgKzQ2MTUsMTcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidm9pZE1ldGhvZFdpdGhB
cmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC00MjYyLDE3ICs0NjM0LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0
YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9i
amVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpBcmciLCAi
VGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIGltcGwu
dm9pZE1ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9i
akFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5
dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9k
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
Ynl0ZU1ldGhvZCgpKTsKQEAgLTQyODEsMTQgKzQ2NTYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBieXRlQXJnID0gY29udmVydDxpbnQ4X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDAp
LCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTQyOTcsMTcgKzQ2NzUsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IGF1dG8gb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RX
aXRoQXJncyIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgImJ5dGVN
ZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFy
ZyksICpvYmpBcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
Y3RldE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9jdGV0TWV0
aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJvY3RldE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLm9jdGV0TWV0aG9kKCkpOwpAQCAtNDMxNiwxNCArNDY5NywxNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIG9jdGV0QXJnID0gY29udmVydDx1aW50OF90Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC00MzMyLDE3ICs0NzE2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1
bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJv
Y3RldE1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmpl
Y3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShvY3RldEFyZyks
IFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJsb25nTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKQEAgLTQzNTEsMTQgKzQ3MzgsMTcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdz
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibG9uZ01ldGhvZFdpdGhBcmdz
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC00MzY3LDE3ICs0NzU3LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRl
LT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVj
dCIsICJsb25nTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOworICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDIsICJvYmpBcmciLCAiVGVz
dE9iamVjdCIsICJsb25nTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJn
KSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAib2JqTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kKCkp
OwpAQCAtNDM4NiwxNCArNDc3OSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvYmpNZXRob2RXaXRo
QXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGxvbmdBcmcgPSBj
b252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ0MDIsMTcgKzQ3OTgs
MjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtF
TFkoIW9iakFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0
ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdzIiwgIlRlc3RP
YmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2JqTWV0aG9kV2l0aEFyZ3MiLCAi
VGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kV2l0aEFyZ3MoV1RGTW92ZShsb25nQXJnKSwg
V1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3Rh
bmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInVuZm9yZ2VhYmxlTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1bmZvcmdlYWJsZU1l
dGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuZm9yZ2VhYmxlTWV0aG9kKCkpOwpA
QCAtNDQyMSwxNCArNDgyMCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9iakluCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZyA9IHZh
bHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQzOCwyOSArNDg0
MCwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKICAgICBhdXRvIHJlc29sdmVyID0gSlNYUGF0aE5TUmVzb2x2ZXI6OnRvV3Jh
cHBlZCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXNvbHZlcikpCi0gICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIsICJYUGF0aE5TUmVzb2x2ZXIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoWFBhdGhOU1Jlc29s
dmVyUGFyYW1ldGVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOwogICAgIGltcGwubWV0aG9kV2l0aFhQ
YXRoTlNSZXNvbHZlclBhcmFtZXRlcigqcmVzb2x2ZXIpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZChFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nTWV0aG9kIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJudWxsYWJsZVN0cmluZ01ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVs
bChzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKTsKQEAgLTQ0NjksMjAgKzQ4Nzcs
MjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ1N0YXRpY01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nT3JOdWxsKHN0YXRlLCBUZXN0T2JqOjpudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCgp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z1NwZWNpYWxNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxs
YWJsZVN0cmluZ1NwZWNpYWxNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU3Bl
Y2lhbE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGluZGV4
ID0gY29udmVydDx1aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ5MiwyMSAr
NDkwNiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhFbnVtQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGVudW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1
bWVudCgwKTsKICAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGF1dG8gb3B0aW9u
YWxWYWx1ZSA9IHBhcnNlPFRlc3RPYmo6OkVudW1UeXBlPigqc3RhdGUsIGVudW1BcmdWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvcHRp
b25hbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Io
KnN0YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIiwg
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
MCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoRW51bUFyZyIsIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOwogICAgIGVudW1BcmcgPSBv
cHRpb25hbFZhbHVlLnZhbHVlKCk7CiAgICAgaW1wbC5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJn
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDUxNCwx
MCArNDkzMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBlbnVtQXJnVmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCk7CkBA
IC00NTI3LDcgKzQ5NDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFlbnVtQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVz
dEJlRW51bUVycm9yKCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpF
bnVtVHlwZT4oKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9i
ajo6RW51bVR5cGU+KCkpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmcoZW51bUFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTQ1MzUsMTAgKzQ5NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdB
bmREZWZhdWx0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdB
bmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAt
NDU1MCw3ICs0OTczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIGlmIChV
TkxJS0VMWSghb3B0aW9uYWxWYWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dE11c3RCZUVudW1FcnJvcigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRp
b25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiZW51bUFyZyIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUi
LCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVudW1UeXBlPigpKTsKICAgICAg
ICAgZW51bUFyZyA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICB9CiAgICAgaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKGVudW1BcmcpOwpAQCAtNDU1OSwy
MSArNDk4MiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHN0
ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3Jh
cHBlZChzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2JqQXJnIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsICJUZXN0
T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3MiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwubWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93cyhXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcsIGVjKSk7CiAKICAgICBz
ZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTQ1ODIsMTQgKzUwMDgsMTcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0Fy
ZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJp
bmdBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSB2YWx1ZVRvVVNWU3RyaW5nKHN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNDU5OSwxNCArNTAyOCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmciKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IHZhbHVlVG9VU1ZTdHJpbmdXaXRoVW5kZWZp
bmVkT3JOdWxsQ2hlY2soc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjE2LDE0ICs1MDQ4LDE3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gdmFsdWVUb1VTVlN0
cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjMzLDE0ICs1MDY4LDE3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInNlcmlhbGl6ZWRWYWx1ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gc2VyaWFsaXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIDAsIDApOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNDY1MCwxNCArNTA4OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAib3B0aW9uc09iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3B0aW9uc09i
amVjdCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9vID0gRGljdGlv
bmFyeShzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBhdXRvIG9vbyA9IERpY3Rpb25h
cnkoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaW1wbC5vcHRpb25zT2JqZWN0KFdU
Rk1vdmUob28pLCBXVEZNb3ZlKG9vbykpOwpAQCAtNDY2NiwxMCArNTEwNywxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBA
IC00NjgwLDEwICs1MTI0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZShFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UgZWM7CkBAIC00Njk0LDM0ICs1MTQxLDQzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgImN1c3RvbU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tTWV0aG9kIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21NZXRo
b2QoKnN0YXRlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbU1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJj
dXN0b21NZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoKnN0YXRlKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHJpdmF0ZU1ldGhvZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAicHJpdmF0ZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIGFyZ3VtZW50ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3MzEsMTQgKzUxODcs
MTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5k
UHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInB1Ymxp
Y0FuZFByaXZhdGVNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcmd1bWVudCA9IHN0YXRl
LT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkBAIC00NzQ4LDIwICs1MjA3LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhZGRFdmVu
dExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdHlwZSA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZhbHNlLCBjdXJyZW50V29ybGQo
c3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIs
ICJhZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAibGlzdGVuZXIiLCAi
VGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsKICAgICBh
dXRvIHVzZUNhcHR1cmUgPSBzdGF0ZS0+YXJndW1lbnQoMikudG9Cb29sZWFuKHN0YXRlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3NzEsMjAgKzUyMzMsMjMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5l
cihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVu
ZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIGxp
c3RlbmVyID0gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoc3RhdGUtPmFyZ3VtZW50KDEpLCAqY2Fz
dGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
bGlzdGVuZXIpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IDEsICJsaXN0ZW5lciIsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZl
bnRMaXN0ZW5lciIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsIDEsICJsaXN0ZW5lciIsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50
TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOwogICAgIGF1dG8gdXNlQ2FwdHVyZSA9IHN0YXRl
LT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNDc5NCwxMCArNTI1OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdFN0YXRlVm9pZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKCpzdGF0ZSk7CkBAIC00ODA2
LDEwICs1Mjc0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhTY3JpcHRTdGF0ZU9iaihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRTdGF0ZU9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBs
LndpdGhTY3JpcHRTdGF0ZU9iaigqc3RhdGUpKTsKQEAgLTQ4MjAsMTAgKzUyOTEsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9p
ZEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRF
eGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDgzNCwxMCArNTMwOCwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0
U3RhdGVPYmpFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00ODUxLDEwICs1MzI4LDEzIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
KiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ4NjYsMTAgKzUzNDYs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8q
IGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtNDg4MSwxMCArNTM2NCwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZU9iakV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00
OTAxLDEwICs1Mzg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ5MTgsMTAgKzU0MDcsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFjayhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRB
cmd1bWVudHNBbmRDYWxsU3RhY2siKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1l
bnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKHN0YXRlLCAwKSk7CkBAIC00OTMx
LDEwICs1NDIzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bldpdGhEb2N1bWVudEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAid2l0aERvY3VtZW50QXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhEb2N1bWVudEFyZ3Vt
ZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ5NDgsMTAg
KzU0NDMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aENhbGxlckRvY3VtZW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJ3aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aENhbGxl
ckRvY3VtZW50QXJndW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8qIGRvY3VtZW50ID0gY2FsbGVyRE9NV2luZG93KHN0YXRlKS5k
b2N1bWVudCgpOwpAQCAtNDk2MywxMCArNTQ2MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnQoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIndpdGhDYWxsZXJXaW5kb3dBcmd1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoQ2FsbGVyV2luZG93QXJn
dW1lbnQoY2FsbGVyRE9NV2luZG93KHN0YXRlKSk7CkBAIC00OTc1LDEwICs1NDc2LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbEFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG9wdCA9IHN0
YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1h
bENvbnZlcnNpb24pOwpAQCAtNDk5MCwxMCArNTQ5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFs
dWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFy
Z0FuZERlZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQo
KSA/IDY2NiA6IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNTAwNSwxNCArNTUxMiwxNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtNTAyNSwxNCArNTUzNSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25h
bEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9u
T3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhO
b25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNTA0OCwxMCArNTU2MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIgPSBzdGF0ZS0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTUwNjMsMTAgKzU1NzksMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5n
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
VVNWU3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
c3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHZhbHVl
VG9VU1ZTdHJpbmcoc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MDc4
LDEwICs1NTk3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01MDkzLDEwICs1
NjE1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQVNDSUlMaXRlcmFsKCJm
b28iKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBA
IC01MTA4LDEwICs1NjMzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21p
Y1N0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFs
QXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gQXRvbWljU3RyaW5nKCJmb28iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhzdGF0
ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKTsKQEAgLTUxMjMsMTAgKzU2NTEsMTMgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE9wdGlvbmFsU3RyaW5nSXNOdWxsIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmdJc051bGwiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBT
dHJpbmcoKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7
CkBAIC01MTM4LDEwICs1NjY5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRl
ZmluZWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVk
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTUz
LDEwICs1Njg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0
ZSk7CkBAIC01MTY4LDEwICs1NzA1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJ
c0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0Vt
cHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1w
dHlTdHJpbmcoKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0
ZSk7CkBAIC01MTgzLDEwICs1NzIzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmcoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZT
dHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZT
dHJpbmdJc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gZW1wdHlTdHJpbmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MTk4LDEwICs1NzQxLDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmlu
Z0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlBdG9tIDogc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmcoc3RhdGUpOwpAQCAt
NTIxMywxMCArNTc1OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PGRv
dWJsZT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZ
ZXMpOwpAQCAtNTIyOCwxMCArNTc3NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252
ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5p
dGU6Olllcyk7CkBAIC01MjQzLDEwICs1Nzk1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmciKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG51bWJlciA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50NjRfdD4oKSA6IGNvbnZl
cnQ8aW50NjRfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwpAQCAtNTI1OCwxMCArNTgxMywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyhFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdM
b25nSXNaZXJvIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVy
byIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBudW1iZXIgPSBjb252ZXJ0PGludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDAp
LCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUyNzMsMTAgKzU4MzEsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhP
cHRpb25hbFVuc2lnbmVkTG9uZ0xvbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkKCkgPyBPcHRpb25hbDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUyODgs
MTAgKzU4NDksMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJ
c1plcm8iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJ
c1plcm8iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbnVtYmVyID0gY29udmVydDx1aW50NjRfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNTMwMywxMCArNTg2NywxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbFNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVj
dG9yPFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNTMxOCwxMCArNTg4NSwxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlz
RW1wdHkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxTZXF1ZW5jZUlzRW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFNl
cXVlbmNlSXNFbXB0eSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgp
ID8gVmVjdG9yPFN0cmluZz4oKSA6IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRl
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MzMzLDEwICs1OTAzLDEzIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xl
YW4oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxCb29sZWFuIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGIg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGJvb2w+KCkgOiBz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9Cb29sZWFuKHN0YXRlKTsKQEAgLTUzNDgsMTAg
KzU5MjEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gYiA9IHN0YXRlLT5hcmd1bWVu
dCgwKS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtNTM2MywxMCArNTkzOSwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBbnki
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFueSIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhID0gc3RhdGUtPmFyZ3Vt
ZW50KDApOwpAQCAtNTM3NiwxNyArNTk1NSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZVdyYXBwZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBl
ciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
VGVzdE9iaiogb2JqID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iaiA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0
YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqKSkK
LSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9i
aiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlciIsICJU
ZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXIiLCAiVGVzdE9iaiIpOwogICAgIH0KICAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihXVEZNb3ZlKG9iaikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01Mzk0LDE3ICs1OTc2LDIwIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlcklzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBUZXN0T2JqKiBvYmogPSBudWxs
cHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
ICAgICAgICAgb2JqID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvYmopKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIiwgIlRlc3RPYmoiKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlcklzTnVsbCIsICJUZXN0T2JqIik7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKFdURk1vdmUob2JqKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0MTIsMTAgKzU5OTcsMTMgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxYUGF0aE5TUmVzb2x2ZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IHJlc29sdmVyID0gbnVs
bHB0cjsKQEAgLTU0MjQsNyArNjAxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoIXJlc29sdmVyKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgInJlc29sdmVyIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5T
UmVzb2x2ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7CiAgICAgfQogICAgIGltcGwubWV0aG9kV2l0
aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKFdURk1vdmUocmVzb2x2ZXIpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTQzMiwxNiArNjAyMCwxOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2Fs
bGJhY2tBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgw
KS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlv
bkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENh
bGxiYWNrQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25F
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FyZyhXVEZN
b3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTU0NDksMTkgKzYwNDAsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdB
bmRDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5k
Q2FsbGJhY2tBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBub25D
YWxsYmFjayA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5v
cm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlm
IChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAxLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIp
OworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9u
Q2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIGF1dG8gY2FsbGJhY2sgPSBKU1Rlc3RD
YWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0Njks
MTYgKzYwNjMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+
IGNhbGxiYWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNPYmplY3Qo
KSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigq
c3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwogICAgICAgICBjYWxsYmFj
ayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0KICAgICBpbXBsLm1l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTU0
ODcsMTYgKzYwODQsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigp
KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0
ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rp
b25BcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBhdXRvIGNhbGxiYWNrID0gSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTUwNCwxOSArNjEwNCwyMiBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdB
bmRDYWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29u
dmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lv
bik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFz
dGF0ZS0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAgYXV0byBjYWxsYmFjayA9IEpT
VGVzdENhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5tZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUobm9uQ2FsbGJh
Y2spLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTU1MjQsMTYgKzYxMjcsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25h
bEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxs
YmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2Fs
bGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkg
ewogICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11
c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CiAg
ICAgICAgIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2JqZWN0
KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
KTsKICAgICB9CiAgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFs
QXJnKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTU1NDIsMTAgKzYxNDgsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBj
YWxsYmFjazsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKICAgICAg
ICAgY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rlc3RDYWxsYmFjaz4o
c3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIH0KICAgICBUZXN0T2Jq
OjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7CkBAIC01NTU0LDEwICs2MTYzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqQ28KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFz
dGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0
IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKICAgICBh
dXRvIGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+
KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBUZXN0T2JqOjpzdGF0
aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NTY2LDEwICs2MTc4LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsTWV0aG9k
MSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5jb25kaXRpb25h
bE1ldGhvZDEoKSk7CkBAIC01NTgxLDEwICs2MTk2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENv
bmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbE1l
dGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7CkBAIC01NTk2LDEwICs2MjE0LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QzKCk7CkBAIC01NjEw
LDE5ICs2MjMxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBudWxscHRyOwog
ICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAg
ICAgb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3Qi
LCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJvYmpBcmciLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKICAgICB9CiAgICAgYXV0
byBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTYzMywxOSArNjI1NywyMiBA
QCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFyZyA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAg
IGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRN
ZXRob2QiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7CiAgICAgfQogICAgIGF1dG8gbG9uZ0FyZyA9IHN0
YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSksIE5vcm1h
bENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpA
QCAtNTY1NiwxNCArNjI4MywxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0ZS0+
YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNTY3MywxNCArNjMwMywxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJn
ID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NjkwLDE2ICs2
MzIzLDE5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2Q1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5p
c09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVk
TWV0aG9kIik7CiAgICAgYXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNP
YmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU3MDcsMTkgKzYz
NDMsMjIgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDYoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9h
ZGVkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOwogICAgIERPTVN0cmluZ0xpc3QqIGxpc3RBcmcgPSBudWxscHRyOwog
ICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAg
ICAgbGlzdEFyZyA9IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbGlzdEFyZykpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJsaXN0QXJnIiwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01TdHJpbmdMaXN0Iik7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAs
ICJsaXN0QXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01TdHJpbmdM
aXN0Iik7CiAgICAgfQogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGxpc3RBcmcp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTcyNywx
NCArNjM2NiwxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAK
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92
ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8
U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC01NzQ0LDMxICs2Mzg2LDM3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9i
akFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwg
IlRlc3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZCIsICJUZXN0T2JqIik7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKCpvYmpBcmcpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC01Nzc4LDE0ICs2NDI2LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRv
TmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU3OTUsMTQgKzY0NDYsMTcgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIHN0ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01ODEyLDEwICs2NDY2LDEz
IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QxMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRN
ZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFZlY3RvcjxCbG9iKj4gYmxvYkFy
Z3M7CkBAIC01ODI0LDcgKzY0ODEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291bnQgPSBzdGF0ZS0+YXJndW1l
bnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBhdXRvKiBpdGVtID0gSlNCbG9i
Ojp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYgKCFp
dGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBp
LCAiYmxvYkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIkJsb2IiKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgaSwgImJsb2JBcmdzIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJC
bG9iIik7CiAgICAgICAgIGJsb2JBcmdzLnVuY2hlY2tlZEFwcGVuZChpdGVtKTsKICAgICB9CiAg
ICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFyZ3MpKTsKQEAgLTU4MzMsNiAr
NjQ5MCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWlu
PHNpemVfdD4oMiwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9
PSAwKSB7CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxMihzdGF0ZSk7CkBAIC01ODY5LDE5ICs2NTI5LDIyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKHN0YXRlKTsKICAgICAgICAgcmV0dXJu
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoc3RhdGUpOwogICAg
IH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhP
cHRpb25hbFBhcmFtZXRlcjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJv
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVy
bG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gc3RyQXJnID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU4ODksNyArNjU1
Miw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICAgICBpZiAo
IXN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iakFy
ZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJs
b2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAi
b2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlciIsICJUZXN0T2JqIik7CiAgICAgfQogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZFdpdGhP
cHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKHN0ckFyZyksIFdURk1vdmUob2JqQXJnKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU4OTcsMTkgKzY1NjAs
MjIgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFyZyA9IG51bGxwdHI7CiAgICAg
aWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBv
YmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJv
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwgIlRlc3RPYmoiKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
MCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIiLCAiVGVzdE9iaiIpOwogICAgIH0KICAgICBhdXRvIGxvbmdBcmcgPSBzdGF0ZS0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0
PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBOb3JtYWxDb252
ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTU5
MjAsNiArNjU4Niw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
c2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMiwgc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGlu
Z3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC01OTM3LDE3ICs2
NjA2LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAg
ICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXIyKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEoc3Rh
dGUpOwogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFRlc3RPYmo6OmNsYXNzTWV0aG9kKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgYXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQo
KSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU5NTcsMTYgKzY2MzIsMjIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDIoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdE9iajo6Y2xhc3NNZXRob2QyKHN0YXRlKSk7CiB9CiAKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJnID0gY29udmVydDxpbnQzMl90
Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01OTc5LDggKzY2NjAsMTEgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbwogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byB0eXBlID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU5OTMsNiAr
NjY3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ28KICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
Q29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNp
emVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50
KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1
aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNjAwNCwyMCArNjY5
MSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKHN0
YXRlKTsKICNlbmRpZgogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5kaWYKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNs
YXNzTWV0aG9kV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
Y2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNsYXNzTWV0aG9kV2l0aENsYW1w
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gb2JqQXJnc1Nob3J0ID0g
Y29udmVydDx1aW50MTZfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIENsYW1wKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwMzAsMTQgKzY3MjAsMTcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5m
b3JjZVJhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhc3NNZXRo
b2RXaXRoRW5mb3JjZVJhbmdlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjbGFzc01ldGhvZFdpdGhFbmZvcmNl
UmFuZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBvYmpBcmdzU2hv
cnQgPSBjb252ZXJ0PHVpbnQxNl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgRW5mb3Jj
ZVJhbmdlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNTAsMTQgKzY3
NDMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTYwNjcsMTQgKzY3NjMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmlu
Z0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byB2YWx1ZXMgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQpAQCAtNjA4NywxOCArNjc4NiwyMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IEpTRE9NU3Ry
aW5nTGlzdDo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF2YWx1ZXMpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IDAsICJ2YWx1ZXMiLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCAiRE9N
U3RyaW5nTGlzdCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsIDAsICJ2YWx1ZXMiLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0
RnVuY3Rpb24iLCAiRE9NU3RyaW5nTGlzdCIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZG9tU3RyaW5nTGlzdEZ1bmN0
aW9uKCp2YWx1ZXMsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAg
LTYxMDcsMTQgKzY4MDksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVl
bmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Ui
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0
aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYxMjcsMTQgKzY4MzIsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJnZXRFbGVtZW50QnlJZCIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiZ2V0RWxlbWVudEJ5SWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBlbGVtZW50SWQgPSBBdG9taWNTdHJpbmcoc3RhdGUtPmFyZ3VtZW50KDApLnRvU3RyaW5nKHN0
YXRlKS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhzdGF0ZSkpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNjE0NCwxMCArNjg1MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImdldFNWR0RvY3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJnZXRTVkdE
b2N1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC02MTYxLDM2ICs2ODcyLDQyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29udmVydDEiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbnZl
cnQxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBKU1Rl
c3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAw
LCAidmFsdWUiLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MSIsICJUZXN0Tm9kZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJ2
YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQxIiwgIlRlc3ROb2RlIik7CiAgICAgaW1wbC5j
b252ZXJ0MSgqdmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNv
bnZlcnQyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFy
Z3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgdmFsdWUgPSBKU1Rlc3RO
b2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCF2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3RO
b2RlIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIiwgIlRlc3RO
b2RlIik7CiAgICAgfQogICAgIGltcGwuY29udmVydDIoV1RGTW92ZSh2YWx1ZSkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC02MTk4LDE0ICs2OTE1LDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29udmVydDMiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgImNvbnZlcnQzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdmFs
dWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjIxNSwxNCArNjkzNSwxNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQ0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0NCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHZhbHVlID0gdmFsdWVUb1N0cmlu
Z1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYyMzIsMTAgKzY5NTUsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rp
b24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtdXRhYmxlUG9pbnRGdW5j
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9m
ZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKTsKQEAgLTYy
NDQsMTAgKzY5NzAsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBv
aW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0
YWJsZVBvaW50RnVuY3Rpb24oKSkpOwpAQCAtNjI1NiwxMCArNjk4NSwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJvcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9yYW5nZSIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC5iYW5h
bmEoKTsKQEAgLTYyNjgsMTQgKzcwMDAsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidmFy
aWFkaWNTdHJpbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYyODgsMTQgKzcwMjMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAidmFyaWFkaWNEb3VibGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYzMDgsMjQgKzcwNDYsMjcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ2YXJpYWRpY05vZGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWhlYWQpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVF
cnJvcigqc3RhdGUsIDAsICJoZWFkIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9k
IiwgIk5vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAwLCAiaGVhZCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1ldGhv
ZCIsICJOb2RlIik7CiAgICAgVmVjdG9yPE5vZGUqPiB0YWlsOwogICAgIEFTU0VSVCgxIDw9IHN0
YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIHRhaWwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMSwgY291
bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBh
dXRvKiBpdGVtID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKICAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCBpLCAidGFpbCIsICJUZXN0T2JqZWN0IiwgInZhcmlhZGljTm9kZU1l
dGhvZCIsICJOb2RlIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsIGksICJ0YWlsIiwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNO
b2RlTWV0aG9kIiwgIk5vZGUiKTsKICAgICAgICAgdGFpbC51bmNoZWNrZWRBcHBlbmQoaXRlbSk7
CiAgICAgfQogICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpoZWFkLCBXVEZNb3ZlKHRhaWwp
KTsKQEAgLTYzMzQsMTQgKzcwNzUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYW55
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJhbnkiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBhID0gY29udmVydDxmbG9hdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFNob3Vs
ZEFsbG93Tm9uRmluaXRlOjpZZXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNjM2MCwxMCArNzEwNCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1By
b21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQ
cm9taXNlRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwudGVz
dFByb21pc2VGdW5jdGlvbihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKQEAgLTYzNzgsMTQgKzcxMjUsMTcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZl
cnJlZCogcHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlv
bldpdGhGbG9hdEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gYSA9IGNvbnZlcnQ8ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRB
bGxvd05vbkZpbml0ZTo6Tm8pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NjQwMSwxMCArNzE1MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVz
dFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjQy
MSwxMCArNzE3NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRQcm9taXNlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8aW50MzJf
dD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNjQ0MiwxNCArNzE5OCwxNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbjFQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rp
b24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8ZmxvYXQ+KCpzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjQ2NSwyMyArNzIyNCwyOSBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRG
dW5jdGlvbjJQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9t
aXNlRGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVu
Y3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gcmVxdWVzdCA9IEpTRmV0Y2hSZXF1
ZXN0Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXJl
cXVlc3QpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAs
ICJyZXF1ZXN0IiwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24i
LCAiRmV0Y2hSZXF1ZXN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInJlcXVlc3QiLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJv
bWlzZU92ZXJsb2FkZWRGdW5jdGlvbiIsICJGZXRjaFJlcXVlc3QiKTsKICAgICBpbXBsLnRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKCpyZXF1ZXN0LCBEZWZlcnJlZFdyYXBwZXIoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9h
ZGVkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWlu
PHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9
PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7CkBAIC02NDkxLDcgKzcyNTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEoc3RhdGUpOwogICAgICAg
ICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRG
dW5jdGlvbjEoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1By
b21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRlKiwgSlNQcm9taXNlRGVmZXJyZWQqKTsKQEAg
LTY1MDIsNiArNzI2Nyw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
Q28KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVzdE9iajo6dGVzdFN0YXRpY1By
b21pc2VGdW5jdGlvbihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBwcm9taXNlRGVmZXJyZWQpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtNjUxNCw2
ICs3MjgyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogCiBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25U
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRp
b24oRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgcHJvbWlzZURlZmVycmVkKSwgZWMpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtNjUyMiwxMyArNzI5MywxNiBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNDdXN0b21F
bGVtZW50UmVhY3Rpb25TdGFjayhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1F
TlRTKQogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrOwogI2VuZGlmCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTmVlZHND
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5lZWRz
Q3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwubWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2soKTsKQEAgLTY1MzgsMTQgKzczMTIsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShDT05ESVRJT04xKQogc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsT3ZlcmxvYWQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0
aW9uYWxPdmVybG9hZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC02NTU4LDE0ICs3MzM1LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHIKICNpZiBFTkFCTEUoQ09ORElUSU9OMikKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMihFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBhID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC02NTc4LDYgKzczNTgsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByCiAjaWYgRU5BQkxFKENPTkRJVElPTjEpIHx8IEVOQUJMRShDT05ESVRJT04yKQogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6
bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3Vu
dCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7CkBAIC02NTg5LDIwICs3MzcyLDIzIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDEoc3RhdGUpOwogI2VuZGlmCiAgICAgfQot
ICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9h
ZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25h
bE92ZXJsb2FkIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTY2MTMsMTQgKzczOTksMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcgogI2lmIEVOQUJMRShDT05ESVRJT04pCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDIo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92
ZXJsb2FkIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjYzMiw2ICs3NDIxLDkgQEAgc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0
ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAg
SlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
QEAgLTY2NDEsMTkgKzc0MzMsMjIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogI2VuZGlmCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxKHN0YXRlKTsKICAgICB9Ci0gICAgcmV0dXJuIGFy
Z3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICByZXR1cm4gYXJn
c0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgImF0dGFjaFNoYWRvd1Jvb3QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dGFjaFNoYWRvd1Jv
b3QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBpbml0ID0gY29udmVy
dERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjY2MywxMCArNzQ1OCwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRvU3RyaW5nIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ0b1N0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNTMgKzY3LDY1IEBAIHR5cGVkZWYgSlNET01Db25z
dHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGUKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBj
b25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1ZmZlciA9
IHRvQXJyYXlCdWZmZXIoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWFycmF5QnVmZmVyKSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiYXJyYXlCdWZmZXIiLCAiVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAi
YXJyYXlCdWZmZXIiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJy
YXlCdWZmZXIiKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUoKmFycmF5QnVmZmVyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNO
ZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9i
amVjdCkpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0
YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSB0b0FycmF5
QnVmZmVyVmlldyhzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghYXJyYXlCdWZmZXJWaWV3KSkKLSAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAiYXJyYXlCdWZmZXJWaWV3Iiwg
IlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyVmlldyIp
OworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIDAsICJhcnJheUJ1ZmZlclZpZXciLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBu
dWxscHRyLCAiQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCphcnJheUJ1ZmZlclZpZXcpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhp
cyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGJsb2Ig
PSBKU0Jsb2I6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VM
WSghYmxvYikpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
MCwgImJsb2IiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQmxvYiIp
OworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIDAsICJibG9iIiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkJs
b2IiKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVh
dGUoKmJsb2IpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQog
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgp
KTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBhdXRvIHN0cmluZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMjMsNiArMTM1
LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKUwogCiBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBB
U1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgVmVjdG9yPGludDMyX3Q+IGxvbmdBcmdzID0gdG9OYXRp
dmVBcmd1bWVudHM8aW50MzJfdD4oKnN0YXRlLCAwKTsKQEAgLTEzNCw2ICsxNDksOSBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3Rk
OjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0Nv
dW50ID09IDApIHsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM1KHN0YXRlKTsKQEAgLTE1MCw3ICsxNjgsNyBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgCiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoc3RhdGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0yMDgsMTggKzIy
NiwyMiBAQCB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlc3RyCiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAK
IGJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw5IEBAIHR5cGVk
ZWYgSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGUKIAogc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxs
ZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGF1dG8gc2VxdWVuY2VPZlN0cmlu
Z3MgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFZlY3RvcjxTdHJpbmc+KCkg
OiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwpAQCAtNzcsMTAgKzgwLDEzIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29u
c3RydWN0SlMKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2Vx
dWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRo
aXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHJp
bmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtOTAsNiArOTYsOSBAQCBzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0
b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjpt
aW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50
ID09IDApIHsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2UxKHN0YXRlKTsKQEAgLTEwMiw3ICsxMTEsNyBAQCB0ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgCiAgICAgICAgICAgICByZXR1cm4gY29uc3Ry
dWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTEoc3RhdGUpOwogICAg
ICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZTIoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5j
ZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNjAsMTggKzE2OSwyMiBAQCB2b2lk
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgp
LCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTgsMTggKzE1OCwyMiBAQCBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3Bl
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmpl
Y3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAg
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk0LDE0ICsxOTgsMTcgQEAgSlNWYWx1
ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRl
bShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE92ZXJyaWRlQnVpbHRp
bnMiLCAibmFtZWRJdGVtIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5hbWUgPSBz
dGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTIgKzEzNCwxNCBAQCB2b2lk
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwu
dmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAw
KSA6IGpzTnVsbCgpOwpAQCAtMTQ5LDEyICsxNTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJlYWRvbmx5
VmFsdWUoKSA/IGltcGwucmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CkBAIC0xNjQsMTIgKzE2OCwxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAg
ICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFZhbHVlLmdl
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTE4
MiwxMiArMTg4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWwK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9y
dHMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNBcnJheShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwucG9ydHMoKSk7
CkBAIC0xOTcsMTIgKzIwNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJjYWNoZWRSZWFkb25seVZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlIiwgImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKICAgICB9CiAgICAgaWYgKEpTVmFs
dWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUuZ2V0KCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwpAQCAtMjE1LDE4
ICsyMjUsMjIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbAogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgp
LCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3Rv
dHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgpAQCAtMjM1LDExICsyNDksMTMgQEAgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcgogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIiwgInZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwg
InZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRlLCB2YWx1ZSwgMCwgMCk7CkBAIC0yNTIsMTEgKzI2OCwxMyBAQCBib29sIHNldEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyCiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVlLCAwLCAwKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDE1ICsxMjQsMTggQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5
cGVkZQogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlw
ZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUo
KSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBoZWxsbyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFzdGF0ZS0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDEsICJ0ZXN0Q2FsbGJhY2siLCAi
VGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJ0ZXN0Q2FsbGJhY2siLCAi
VGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7CiAgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RD
YWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RUeXBlZGVm
czo6Y3JlYXRlKFdURk1vdmUoaGVsbG8pLCAqdGVzdENhbGxiYWNrKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKQEAgLTIxMCwxMiArMjEzLDE0IEBAIHZvaWQgSlNU
ZXN0VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5
cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwpAQCAtMjI1LDEyICsyMzAsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVk
U2NyaXB0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0
VmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwuaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVl
KCkgPyBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CkBAIC0yNDAs
MTIgKzI0NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIlRlc3RTdWJP
YmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI1MywxMiArMjYyLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CkBAIC0yNzAsMTIgKzI4MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0F0dHJXaXRoR2V0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
VHlwZWRlZnMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRy
V2l0aFNldHRlckV4Y2VwdGlvbigpKTsKQEAgLTI4NSwxMiArMjk4LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7
CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0zMDIsMTIgKzMxNywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oKSk7CkBAIC0zMTcsMTggKzMzNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc1N0cmluZ0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0VHlwZWRlZnNQcm90b3R5
cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnNQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9t
T2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdFR5cGVk
ZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAg
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTMz
NywxMSArMzU4LDEzIEBAIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3QK
IAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gY29udmVydDx1aW50NjRfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBA
IC0zNTQsMTEgKzM3NywxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9u
Z0F0CiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFs
dWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRh
YmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CkBAIC0zNzEsMTEgKzM5NiwxMyBAQCBib29s
IHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplCiAKIGJvb2wgc2V0SlNUZXN0VHlw
ZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVk
ZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODgsMTEgKzQx
NSwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlCiAKIGJvb2wg
c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CkBAIC00MDcsMTEgKzQzNiwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldp
dGhTZXR0ZXJFeGNlCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRl
ZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIs
ICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmlu
Z0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKHN0YXRlKTsKQEAgLTQyNCwxMSArNDU1LDEzIEBAIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNT
dHJpbmdBdHRyV2l0aEdldHQKIAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVk
ZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAi
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQ0
OCwxMCArNDgxLDEzIEBAIEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKFYK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJm
dW5jIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdFR5cGVkZWZzIiwgImZ1bmMiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB4ID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBWZWN0b3I8aW50MzJfdD4oKSA6IHRvTmF0aXZlQXJyYXk8aW50MzJf
dD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNDYzLDE0ICs0OTks
MTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRT
aGFkb3coRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
cyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic2V0U2hh
ZG93Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDMpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gd2lkdGggPSBjb252ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC00OTIsMTQgKzUzMSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoU2VxdWVu
Y2VBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IHRvUmVmUHRy
TmF0aXZlQXJyYXk8U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNTA5LDE0ICs1NTEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm51bGxhYmxlU2VxdWVuY2VBcmciKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlw
ZWRlZnMiLCAibnVsbGFibGVTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtNTI2LDE0ICs1NzEsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgImZ1bmNXaXRoQ2xhbXAiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhD
bGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJnMSA9
IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBDbGFtcCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NDYsMTAgKzU5NCwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBl
ZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiaW1t
dXRhYmxlUG9pbnRGdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVQb2ludEZ1bmN0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RU
eXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJs
ZVBvaW50RnVuY3Rpb24oKSkpOwpAQCAtNTU4LDE0ICs2MDksMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ1NlcXVlbmNl
RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAg
LTU3OCwxNCArNjMyLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRl
ZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvIHZhbHVlcyA9IHRv
TmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC01OTgsMTQgKzY1NSwxNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2Vx
dWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dFR5cGVkZWZzIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CisgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5
cGVkZWZzIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1ZW5jZUFyZyA9IHRvUmVmUHRy
TmF0aXZlQXJyYXk8VGVzdEV2ZW50VGFyZ2V0LCBKU1Rlc3RFdmVudFRhcmdldD4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NjE1LDEwICs2NzUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibWV0
aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
LmNwcAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEyICsxMzQs
MTQgQEAgdm9pZCBKU2F0dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogYwogCiBFbmNvZGVk
SlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTYXR0cmlidXRlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnJlYWRvbmx5KCkpOwpA
QCAtMTQ5LDE4ICsxNTEsMjIgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVSZWFkb25seShF
eGVjUwogCiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIEpTYXR0cmlidXRlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU2F0dHJpYnV0ZTo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
IAogYm9vbCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU2F0dHJpYnV0ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNyZWFkb25seS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNywxOCArMTE3LDIyIEBAIHZvaWQgSlNyZWFkb25seTo6ZGVzdHJveShK
U0M6OkpTQ2VsbCogY2UKIAogRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNyZWFkb25s
eTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAogYm9vbCBzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJh
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXku
Y3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9h
cnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDkgKzYyLDEyIEBAIHZvaWQg
UnVudGltZUFycmF5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAogRW5jb2RlZEpTVmFsdWUgUnVu
dGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVBcnJh
eSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFycmF5Kj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHRoaXNPYmpl
Y3QtPmdldExlbmd0aCgpKSk7CiB9CiAKQEAgLTExMyw5ICsxMTYsMTIgQEAgYm9vbCBSdW50aW1l
QXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7
CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTEyNyw5ICsxMzMsMTIgQEAgYm9vbCBSdW50aW1l
QXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogCiBib29sIFJ1bnRpbWVBcnJheTo6cHV0QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgsIEpTVmFs
dWUgdmFsdWUsIGJvb2wpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKGluZGV4ID49IHRo
aXNPYmplY3QtPmdldExlbmd0aCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5n
ZSBlcnJvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTc1KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTYsOSArNTYsMTIgQEAgdm9pZCBSdW50aW1lTWV0aG9kOjpmaW5pc2hD
cmVhdGlvbihWTSYgdgogCiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bV9tZXRob2QtPm51bVBh
cmFtZXRlcnMoKSkpOwogfQogCkBAIC03NSw2ICs3OCw5IEBAIGJvb2wgUnVudGltZU1ldGhvZDo6
Z2V0T3duUHJvcGVydHlTbG90KEoKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UnVudGltZU1ldGhvZCo+KGV4
ZWMtPmNhbGxlZSgpKTsKIAogICAgIGlmICghbWV0aG9kLT5tZXRob2QoKSkKQEAgLTg3LDEzICs5
MywxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAg
IFJ1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0
Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgICAgIGluc3RhbmNlID0gcnVudGltZU9iamVj
dC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSAKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlk
QWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShS
dW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50aW1lIG9iamVjdCBvZiBhIHBsdWdp
biBlbGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTSFRNTEVsZW1lbnQ6
OmluZm8oKSkpCiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdpbkluc3RhbmNlKGpzQ2FzdDxK
U0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndyYXBwZWQoKSk7CiAgICAgICAg
IGlmICghaW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICB9CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgtMjAwOSwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY0LDExICs2NCwxNCBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmludmFsaWRhdGUoKQog
CiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBq
c0Nhc3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBS
ZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlm
ICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlk
QWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJl
Z2luKCk7CiAKQEAgLTgyLDExICs4NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0
OjpmYWxsYmFja09iCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogeyAgICAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRo
aXNPYmogPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9pbnN0YW5jZTsK
IAogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgaW5z
dGFuY2UtPmJlZ2luKCk7CiAKQEAgLTEwMSwxMSArMTA3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIFJ1
bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgUnVudGltZU9iamVjdDo6
bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9i
amVjdCogdGhpc09iaiA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqLT5tX2lu
c3RhbmNlOwogCiAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAK
ICAgICBpbnN0YW5jZS0+YmVnaW4oKTsKIApAQCAtMTE4LDkgKzEyNywxMiBAQCBFbmNvZGVkSlNW
YWx1ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0CiAKIGJvb2wgUnVudGltZU9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSAqZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4o
b2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFuY2UpIHsKLSAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAg
LTE2Myw5ICsxNzUsMTIgQEAgYm9vbCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
SgogCiBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5t
X2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAg
ICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xOTIsOSArMjA3LDEyIEBAIGJvb2wgUnVudGltZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWwKIAogSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpkZWZh
dWx0VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJy
ZWRQcmltaXRpdmVUeXBlIGhpbnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBjb25zdCBSdW50aW1l
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRpbWVPYmplY3QqPihvYmplY3Qp
OwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNj
ZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFu
Y2UgPSB0aGlzT2JqZWN0LT5tX2luc3RhbmNlOwogCkBAIC0yNTgsOSArMjc2LDEyIEBAIENvbnN0
cnVjdFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q29uc3RydWMKIAogdm9pZCBSdW50aW1lT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGlt
ZU9iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0g
ICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFs
aWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTI3MSw5ICsyOTIsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMo
CiAgICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIFJ1bnRpbWVP
YmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20g
ZGVzdHJveWVkIHBsdWctaW4uIikpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0
IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogCiAgICAgSW5zdGFuY2UqIGdldEludGVybmFsSW5zdGFuY2UoKSBjb25zdCB7
IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKLSAgICBzdGF0aWMgSlNPYmplY3QqIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIHN0YXRpYyBKU09iamVjdCogdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAgICAgREVD
TEFSRV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAko
cmV2aXNpb24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsMTIgKzY4LDE1IEBAIHZvaWQgQ0lu
c3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW4KIAogdm9pZCBDSW5zdGFuY2U6Om1vdmVH
bG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBpZiAoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgICAg
IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgZ2xvYmFs
RXhjZXB0aW9uU3RyaW5nKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQogCiAg
ICAgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsKQEAgLTE1NCw4ICsxNTcsMTEg
QEAgSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3RhdGUqIAogCiBKU1ZhbHVlIENJ
bnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVu
dGltZU1ldGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1l
dGhvZCktPmluaGVyaXRzKENSdW50aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhv
ZCBvbiBwbHVnLWluIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWct
aW4gb2JqZWN0LiIpOwogCiAgICAgQ01ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8Q01ldGhv
ZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKQEAgLTE4
NCw3ICsxOTAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0CiAg
ICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1l
dGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBv
biBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAg
ICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMTk3LDYgKzIwMyw5
IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhlY1N0YXQKIAogSlNWYWx1ZSBD
SW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0yMTksNyArMjI4LDcgQEAgSlNWYWx1ZSBDSW5z
dGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRQogICAgIH0KIAogICAgIGlmICghcmV0dmFsKQot
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpKTsKIAogICAgIGZv
ciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBOX1JlbGVhc2VWYXJpYW50VmFs
dWUoJmNBcmdzW2ldKTsKQEAgLTIzNiw2ICsyNDUsOSBAQCBib29sIENJbnN0YW5jZTo6c3VwcG9y
dHNDb25zdHJ1Y3QoKSBjb25zCiAKIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VDb25zdHJ1Y3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmNvbnN0cnVjdCkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAKQEAgLTI1OCw3ICsyNzAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tl
Q29uc3RydWN0KEV4ZWNTCiAgICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJv
ciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8
IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0p
OwpAQCAtMzExLDYgKzMyMyw5IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjp2YWx1ZU9mKEV4ZWNTdGF0
ZSogZXgKIAogYm9vbCBDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBjaGFyKiBuYW1lLCBKU1ZhbHVlJiByZXN1bHRWYWx1ZSkgY29uc3QKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihu
YW1lKTsKICAgICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0aG9kKF9vYmplY3QsIGlkZW50
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI4LDcgKzM0Myw3IEBAIGJvb2wgQ0luc3Rh
bmNlOjp0b0pTUHJpbWl0aXZlKEV4ZWNTdGF0ZSoKICAgICB9CiAKICAgICBpZiAoIXJldHZhbCkK
LSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKSk7CiAKICAgICBy
ZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZyZXN1bHRWYXJpYW50
LCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmcmVz
dWx0VmFyaWFudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3Rh
bmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0JKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOC0yMDA5LCAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNzksNiArNzksOSBAQCB2b2lkIE9iamNJbnN0YW5jZTo6c2V0R2xv
YmFsRXhjZXB0aW9uKE5TCiAKIHZvaWQgT2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9u
VG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFz
X2V4Y2VwdGlvbikgewogICAgICAgICBBU1NFUlQoIXNfZXhjZXB0aW9uRW52aXJvbm1lbnQpOwog
ICAgICAgICByZXR1cm47CkBAIC04Niw3ICs4OSw3IEBAIHZvaWQgT2JqY0luc3RhbmNlOjptb3Zl
R2xvYmFsRXhjZXB0aW9uVG8KIAogICAgIGlmICghc19leGNlcHRpb25FbnZpcm9ubWVudCB8fCBz
X2V4Y2VwdGlvbkVudmlyb25tZW50ID09IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSkgewog
ICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBzX2V4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIHNfZXhjZXB0
aW9uKTsKICAgICB9CiAKICAgICBbc19leGNlcHRpb24gcmVsZWFzZV07CkBAIC0yMDUsOCArMjA4
LDExIEBAIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1ldGhvZChFeGUKIAogSlNDOjpK
U1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVudGlt
ZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFh
c09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVNZXRob2Q6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1Zy1pbiBvYmplY3Qu
IikpOwogCiAgICAgT2JqY01ldGhvZCAqbWV0aG9kID0gc3RhdGljX2Nhc3Q8T2JqY01ldGhvZCo+
KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQobWV0aG9kKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0JKHJldmlzaW9uIDIwNTE3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQsNiArOTQsOSBAQCBPYmpjRmllbGQ6
Ok9iamNGaWVsZChDRlN0cmluZ1JlZiBuYW1lKQogCiBKU1ZhbHVlIE9iamNGaWVsZDo6dmFsdWVG
cm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UpIGNv
bnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19jYXN0PGNvbnN0IE9iamNJbnN0
YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwpAQCAtMTA5LDcgKzExMiw3IEBAIEpTVmFs
dWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKICAgICAgICAgfQogICAgIH0gQGNh
dGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAgICAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBbbG9jYWxFeGNlcHRpb24gcmVh
c29uXSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUsIFtsb2NhbEV4Y2VwdGlvbiBy
ZWFzb25dKTsKICAgICB9CiAKICAgICAvLyBXb3JrIGFyb3VuZCBwcm9ibGVtIGluIHNvbWUgdmVy
c2lvbnMgb2YgR0NDIHdoZXJlIHJlc3VsdCBnZXRzIG1hcmtlZCB2b2xhdGlsZSBhbmQKQEAgLTEy
Nyw2ICsxMzAsOSBAQCBzdGF0aWMgaWQgY29udmVydFZhbHVlVG9PYmpjT2JqZWN0KEV4ZWNTCiAK
IGJvb2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBjb25zdAogeworICAgIEpTQzo6
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqY0lu
c3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAgaWQgdmFsdWUgPSBjb252ZXJ0
VmFsdWVUb09iamNPYmplY3QoZXhlYywgYVZhbHVlKTsKIApAQCAtMTQxLDcgKzE0Nyw3IEBAIGJv
b2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1MKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhjZXB0aW9uKSB7CiAgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIFtsb2Nh
bEV4Y2VwdGlvbiByZWFzb25dKTsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBzY29wZSwgW2xv
Y2FsRXhjZXB0aW9uIHJlYXNvbl0pOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpA
QCAtMTU2LDEzICsxNjIsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJyYXkoT2JqZWN0U3RydWN0UHRy
IGEsIAogCiBib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7CisgICAgSlNDOjpWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlu
c2VydE9iamVjdDphdEluZGV4OildKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXJyYXkgaXMgbm90IG11dGFibGUuIikpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBcnJheSBpcyBub3QgbXV0YWJsZS4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoaW5kZXggPiBbX2FycmF5
LmdldCgpIGNvdW50XSkgewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMgYXJyYXkgc2l6ZS4iKSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
ICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTc0LDIxICsxODMsMjQgQEAgYm9vbCBPYmpjQXJyYXk6OnNldFZhbHVl
QXQoRXhlY1N0YXRlKiBleAogICAgICAgICBbX2FycmF5LmdldCgpIGluc2VydE9iamVjdDpvVmFs
dWUub2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewotICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJPYmplY3RpdmUtQyBl
eGNlcHRpb24uIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
RXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiB9CiAKIEpTVmFsdWUgT2JqY0FycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW5kZXgg
ZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNp
emUuIikpOwogICAgIEB0cnkgewogICAgICAgICBpZCBvYmogPSBbX2FycmF5LmdldCgpIG9iamVj
dEF0SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAob2JqKQogICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRPYmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2JqLCBPYmpjT2JqZWN0VHlwZSwgbV9yb290
T2JqZWN0LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlvbiogbG9jYWxFeGNlcHRpb24p
IHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CisgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1D
IGV4Y2VwdGlvbi4iKSk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAt
MjMyLDkgKzI0NCwxMiBAQCBib29sIE9iamNGYWxsYmFja09iamVjdEltcDo6cHV0KEpTQ2VsbCos
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tP
YmplY3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKE9iakNSdW50aW1lT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogCkBAIC0yNDIsNyAr
MjU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIE9i
amNJbnN0YW5jZSogb2JqY0luc3RhbmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxPYmpD
SW5zdGFuY2UoKTsKIAogICAgIGlmICghb2JqY0luc3RhbmNlKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0lu
dmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAogICAgIG9iamNJbnN0YW5jZS0+
YmVnaW4oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5
LmgJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
dXRpbGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIEpTVmFsdWUgY29udmVy
dE5TU3RyaW5nVG9TdHJpbmcoRXhlY1N0YXQKIEpTVmFsdWUgY29udmVydE9iamNWYWx1ZVRvVmFs
dWUoRXhlY1N0YXRlKiwgdm9pZCogYnVmZmVyLCBPYmpjVmFsdWVUeXBlLCBSb290T2JqZWN0Kik7
CiBPYmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNvbnN0IGNoYXIgKnR5cGUpOwog
Ci1KU09iamVjdCAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKiwgTlNTdHJpbmcgKm1lc3NhZ2UpOwor
SlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIE5TU3RyaW5nICpt
ZXNzYWdlKTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQkocmV2aXNp
b24gMjA1MTc1KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMCwxMCArMzEwLDEwIEBAIE9iamNWYWx1
ZVR5cGUgb2JqY1ZhbHVlVHlwZUZvclR5cGUoY29uc3QKICAgICByZXR1cm4gb2JqY1ZhbHVlVHlw
ZTsKIH0KIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBOU1N0cmluZyAq
bWVzc2FnZSkKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUsIE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKLSAg
ICBKU09iamVjdCAqZXJyb3IgPSBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIEpTQzo6
Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CisgICAgSlNPYmplY3QgKmVycm9y
ID0gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3Ry
aW5nKG1lc3NhZ2UpKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0wOC0yOSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVy
eSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0OjpjYWxsTWV0aG9kKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpK
U05QT2JqZWN0OjpjYWxsT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Y2Fs
bENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6cHV0KToKKyAgICAgICAgKFdl
YktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoV2ViS2l0OjpKU05Q
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6cHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjptZXRob2RH
ZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NF
cnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0
TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFs
RXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorCiAyMDE2LTA4LTI5ICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1AbmF2ZXJjb3JwLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEVGTC9HVEsgYnVp
bGQgZml4IHNpbmNlIHIyMDUxNTAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5jcHAJKHJldmlzaW9uIDIw
NTE3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTksNiArNTksOSBAQCB2b2lkIEpTTlBNZXRob2Q6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNOUE1ldGhvZCoganNOUE1ldGhvZCA9IGpzQ2FzdDxKU05QTWV0aG9kKj4oZXhlYy0+Y2FsbGVl
KCkpOwogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKQEAgLTc4
LDcgKzgxLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTlBPYmplY3QtPmNhbGxNZXRob2QoZXhlYywg
anNOUE1ldGhvZC0+bnBJZGVudGlmaWVyKCkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiB9CiAKIENhbGxUeXBlIEpTTlBNZXRob2Q6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxE
YXRhJiBjYWxsRGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9KU05QT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE3NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDkgKzEwNywxMiBAQCBOUE9iamVjdCogSlNOUE9i
amVjdDo6bGVha05QT2JqZWN0KCkKIAogSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsTWV0aG9kKEV4
ZWNTdGF0ZSogZXhlYywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBBU1NFUlRfVEhJU19HQ19PQkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAoIW1f
bnBPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIC8vIElmIHRoZSBwcm9wZXJ0eU5hbWUgaXMgc3ltYm9sLgogICAgIGlmICghbWV0aG9kTmFt
ZSkKQEAgLTE0Miw3ICsxNDUsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxNZXRob2QoRXhl
Y1N0YXRlCiAgICAgICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmYXJndW1lbnRzW2ldKTsKIAog
ICAgIGlmICghcmV0dXJuVmFsdWUpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24o
ZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0
LiIpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4
ZWMsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CiAKICAgICBKU1ZhbHVl
IHByb3BlcnR5VmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVydE5QVmFyaWFudFRvSlNWYWx1ZShl
eGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICByZWxlYXNlTlBWYXJpYW50VmFsdWUo
JnJlc3VsdCk7CkBAIC0xNTEsOSArMTU0LDEyIEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1l
dGhvZChFeGVjU3RhdGUKIAogSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlND
OjpFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlRfVEhJU19HQ19P
QkpFQ1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAoIW1fbnBPYmplY3QpCi0gICAgICAgIHJl
dHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHNpemVfdCBhcmd1bWVudENv
dW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIFZlY3RvcjxOUFZhcmlhbnQsIDg+IGFy
Z3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTE4Miw3ICsxODgsNyBAQCBKU0M6OkpTVmFsdWUg
SlNOUE9iamVjdDo6Y2FsbE9iamVjdChKU0M6CiAgICAgICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1
ZSgmYXJndW1lbnRzW2ldKTsKIAogICAgIGlmICghcmV0dXJuVmFsdWUpCi0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxp
bmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVj
dC4iKSk7CiAKICAgICBKU1ZhbHVlIHByb3BlcnR5VmFsdWUgPSBtX29iamVjdE1hcC0+Y29udmVy
dE5QVmFyaWFudFRvSlNWYWx1ZShleGVjLCBnbG9iYWxPYmplY3QoKSwgcmVzdWx0KTsKICAgICBy
ZWxlYXNlTlBWYXJpYW50VmFsdWUoJnJlc3VsdCk7CkBAIC0xOTEsOSArMTk3LDEyIEBAIEpTQzo6
SlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsT2JqZWN0KEpTQzoKIAogSlNWYWx1ZSBKU05QT2JqZWN0
OjpjYWxsQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
QVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7CiAgICAgaWYgKCFtX25wT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBz
aXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBWZWN0b3I8
TlBWYXJpYW50LCA4PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0yMTgsNyArMjI3LDcg
QEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsQ29uc3RydWN0b3IoRXhlYwogICAgIH0KIAogICAg
IGlmICghcmV0dXJuVmFsdWUpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIp
KTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMs
ICJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSk7CiAgICAgCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGds
b2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0
KTsKQEAgLTI2NSwxMCArMjc0LDEzIEBAIENvbnN0cnVjdFR5cGUgSlNOUE9iamVjdDo6Z2V0Q29u
c3RydWN0RGEKIAogYm9vbCBKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0gSlNDOjpqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICghdGhpc09iamVjdC0+
bV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAg
ICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMjk5LDEwICszMTEsMTMgQEAgYm9vbCBKU05QT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYgogCiBib29sIEpTTlBPYmplY3Q6OnB1dChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBP
YmplY3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU05QT2JqZWN0Kj4oY2VsbCk7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICgh
dGhpc09iamVjdC0+bV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihleGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zNTMsNiArMzY4LDkgQEAgYm9vbCBK
U05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoSgogCiBib29sIEpTTlBPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZv
KCkpOwogCiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBzeW1ib2wuCkBAIC0zNjAsNyAr
Mzc4LDcgQEAgYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW1fbnBPYmplY3QpIHsKLSAgICAgICAgdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzg5LDEw
ICs0MDcsMTMgQEAgYm9vbCBKU05QT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdAogCiB2
b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lQXJyYXksIEVudW1l
cmF0aW9uTW9kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNOUE9iamVjdCo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9ucE9iamVj
dCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00MzcsMTEgKzQ1OCwxNCBAQCB2b2lkIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoSlNPCiAKIEVuY29kZWRKU1ZhbHVlIEpTTlBPYmplY3Q6OnByb3BlcnR5R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9IGpz
Q2FzdDxKU05QT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygpKTsKICAgICAKICAgICBpZiAoIXRo
aXNPYmotPm1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBpZiAoIXRoaXNP
YmotPm1fbnBPYmplY3QtPl9jbGFzcy0+Z2V0UHJvcGVydHkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NzcsMjMgKzUwMSwyNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU05QT2JqZWN0Ojpwcm9wZXJ0eUdldHRlCiAKIEVuY29kZWRKU1ZhbHVlIEpTTlBP
YmplY3Q6Om1ldGhvZEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
TlBPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmosIGluZm8o
KSk7CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqLT5tX25wT2JqZWN0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29w
ZSkpOwogCiAgICAgTlBJZGVudGlmaWVyIG5wSWRlbnRpZmllciA9IG5wSWRlbnRpZmllckZyb21J
ZGVudGlmaWVyKHByb3BlcnR5TmFtZSk7CiAgICAgLy8gSWYgdGhlIHByb3BlcnR5TmFtZSBpcyBz
eW1ib2wuCiAgICAgaWYgKCFucElkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTlBNZXRob2Q6OmNyZWF0ZShleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLnB1YmxpY05hbWUoKSwgbnBJZGVudGlmaWVy
KSk7CiB9CiAKLUpTT2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihF
eGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4g
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4iKSk7Cisg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCAiVHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4i
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZp
c2lvbiAyMDUxNzUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6
CiAKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eUdldHRlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKICAgICBz
dGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6RXhlY1N0YXRlKik7CisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpUaHJvd1Njb3BlJik7CiAKICAgICBOUFJ1bnRpbWVPYmplY3RNYXAqIG1fb2Jq
ZWN0TWFwOwogICAgIE5QT2JqZWN0KiBtX25wT2JqZWN0OwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVu
dGltZU9iamVjdE1hcC5jcHAJKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNzQsMTIgKzI3NCwxNSBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6c2V0R2xv
YmFsRXhjZXB0CiAgICAgCiB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6bW92ZUdsb2JhbEV4Y2Vw
dGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgewotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25T
dHJpbmcoKSkpOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNlcHRpb25T
dHJpbmcoKSkpOwogICAgIH0KICAgICAKICAgICBnbG9iYWxFeGNlcHRpb25TdHJpbmcoKSA9IFN0
cmluZygpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTc1KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTYtMDgtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjZSB0aGUgVGhyb3dTY29wZSBhbmQgZm9yY2UgZXZlcnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50
aWF0ZSBhIFRocm93U2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjExNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojptb3ZlR2xv
YmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1Byb3h5
SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Omludm9rZU1ldGhv
ZCk6CisKIDIwMTYtMDgtMjggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIGRvY3VtZW50LnRpdGxlIHNldHRlciBjYW4ndCB0aHJvdy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0JKHJldmlzaW9uIDIwNTE3NSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDks
IDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjMyLDEyICsxNjMyLDE1IEBAIHZvaWQgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzZXRHbG8KIAogdm9pZCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2so
ZXhlYyk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKKyAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKICAgICB9CiAKICAgICBnbG9iYWxF
eGNlcHRpb25TdHJpbmcoKSA9IFN0cmluZygpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCShyZXZpc2lvbiAyMDUxNzUpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxOSw4ICsyMTksMTEgQEAgSlNWYWx1ZSBQcm94
eUluc3RhbmNlOjpnZXRNZXRob2QoSlNDOjpFeAogCiBKU1ZhbHVlIFByb3h5SW5zdGFuY2U6Omlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6UnVudGltZU1ldGhvZCogcnVudGltZU1l
dGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXNPYmplY3QocnVudGltZU1ldGhvZCkt
PmluaGVyaXRzKFByb3h5UnVudGltZU1ldGhvZDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBs
dWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tlIG5v
bi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKICAgICBQcm94eU1ldGhv
ZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8UHJveHlNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRo
b2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287410</attachid>
            <date>2016-08-30 11:12:25 -0700</date>
            <delta_ts>2016-08-30 13:45:54 -0700</delta_ts>
            <desc>revised patch w/ Fil&apos;s feedback + old header guard applied.</desc>
            <filename>bug-161171.patch</filename>
            <type>text/plain</type>
            <size>1201626</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1OCBA
QAorMjAxNi0wOC0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGlu
c3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgdG93YXJkcyBoYXZpbmcgYSBt
ZWNoYW5pc20gKHVzaW5nIHRoZSBUaHJvd1Njb3BlKSB0bworICAgICAgICB2ZXJpZnkgdGhhdCB3
ZSdyZSBwcm9wZXJseSBjaGVja2luZyBmb3IgZXhjZXB0aW9ucyBpbiBhbGwgdGhlIG5lZWRlZCBw
bGFjZXMuCisgICAgICAgIFNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIFRocm93U2NvcGUuY3Bw
IGZvciBkZXRhaWxzIG9uIGhvdyB0aGUgVGhyb3dTY29wZSB3b3Jrcy4KKworICAgICAgICBUaGlz
IHBhdGNoIG9ubHkgaW50cm9kdWNlcyB0aGUgVGhyb3dTY29wZSwgYW5kIGNoYW5nZXMgYWxsIHRo
cm93IHNpdGVzIHRvIHRocm93CisgICAgICAgIHVzaW5nIGEgVGhyb3dTY29wZSBpbnN0YW5jZS4g
IFZNOjp0aHJvd0V4Y2VwdGlvbigpIGZ1bmN0aW9ucyBhcmUgbm93IHByaXZhdGUsIGFuZAorICAg
ICAgICBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuICBBbGwgdGhyb3dzIG11c3Qgbm93IGdv
IHRocm91Z2ggYSBUaHJvd1Njb3BlLgorCisgICAgICAgIFZlcmlmaWNhdGlvbiBpcyBkaXNhYmxl
ZCBmb3IgdGhlIG1vbWVudCB1bnRpbCB3ZSBjYW4gZml4IGFsbCB0aGUgdmVyaWZpY2F0aW9uCisg
ICAgICAgIGZhaWx1cmVzIHRoYXQgd2lsbCBzaG93IHVwLgorCisgICAgICAgIEkgYWxzbyBkaWQg
YSBzbW9rZSB0ZXN0IG9mIHRoZSBUaHJvd1Njb3BlIG1lY2hhbmlzbXMgYnkgcnVubmluZyB2ZXJp
ZmljYXRpb24gb24KKyAgICAgICAgdGhlIEpTVGVzdHMvc3RyZXNzL29wLWFkZC1leGNlcHRpb25z
LmpzIHRlc3Qgd2l0aCBhIGxvY2FsIGJ1aWxkIHdpdGggdmVyaWZpY2F0aW9uCisgICAgICAgIHR1
cm5lZCBvbi4KKworICAgICAgICBQZXJmb3JtYW5jZSBpcyBuZXV0cmFsIG9uIGFnZ3JlZ2F0ZSB3
aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgTWlzYyBvdGhlciBjaGFuZ2VzOgorICAgICAgICAt
IGRlbGV0ZWQgdGhlIHVudXNlZCBDQUxMX1RIUk9XKCkgbWFjcm8gZnJvbSBMTEludFNsb3dQYXRo
cy5jcHAuCisgICAgICAgIC0gbW92ZWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoKSBmcm9tIEpT
T2JqZWN0LmggdG8gSlNPYmplY3RJbmxpbmVzLmguCisKKyAgICAgICAgKiBBUEkvQVBJQ2FsbGJh
Y2tGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpBUElDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAg
KiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKToKKyAgICAgICAgKEpTQzo6SlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXQpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBh
cmVudD46OmN1c3RvbUhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpjYWxsKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpnZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFycmF5LmNw
cDoKKyAgICAgICAgKGNyZWF0ZVR5cGVkQXJyYXkpOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om5ld1R5
cGVkQXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3RlZFNj
cmlwdEhvc3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2Ny
aXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkludGVybmFsQ29uc3RydWN0b3JO
YW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVG
dW5jdGlvbklzSFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVj
dGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcFNpemUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha01hcEVudHJp
ZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1
bmN0aW9uV2Vha1NldFNpemUpOgorICAgICAgICAoSW5zcGVjdG9yOjpqc0luamVjdGVkU2NyaXB0
SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldEVudHJpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
Ojpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uSXRlcmF0b3JFbnRyaWVzKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlv
bkV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmpl
Y3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1YnR5cGUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25EZXRhaWxz
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbkdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpq
c0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGVGdW5jdGlvbkV2YWx1YXRlV2l0aFNjb3BlRXh0
ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlRnVuY3Rpb25TY29wZURlc2NyaXB0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2
YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcik6CisgICAgICAgIChJbnNwZWN0b3I6Ompz
SmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNvdXJjZUlEKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlTGluZSk6CisgICAgICAgIChJbnNwZWN0
b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNvbHVtbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUZ1bmN0aW9uTmFtZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZVNjb3BlQ2hhaW4p
OgorICAgICAgICAoSW5zcGVjdG9yOjpqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVUaGlz
T2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6anNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChJbnNwZWN0b3I6OmpzSmF2YVNjcmlwdENhbGxGcmFtZUlzVGFp
bERlbGV0ZWQpOgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAg
KEpTQzo6Q2FjaGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsKToKKyAgICAgICAgKEpTQzo6c2l6ZU9m
VmFyYXJncyk6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvckZvcndhcmRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpzaXplRnJhbWVGb3JWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcmVwYXJlRm9yUmVwZWF0Q2FsbCk6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkN1
c3RvbUdldHRlcjo6Y3VzdG9tR2V0dGVyKToKKyAgICAgICAgKFdURjo6UnVudGltZUFycmF5Ojps
ZW5ndGhHZXR0ZXIpOgorICAgICAgICAoZnVuY3Rpb25DcmVhdGVFbGVtZW50KToKKyAgICAgICAg
KGZ1bmN0aW9uUnVuKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKyAgICAgICAgKGZ1
bmN0aW9uTG9hZCk6CisgICAgICAgIChmdW5jdGlvbkxvYWRTdHJpbmcpOgorICAgICAgICAoZnVu
Y3Rpb25SZWFkRmlsZSk6CisgICAgICAgIChmdW5jdGlvbkNoZWNrU3ludGF4KToKKyAgICAgICAg
KGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZlcik6CisgICAgICAgIChmdW5jdGlvbkxvYWRNb2R1
bGUpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgIChmdW5j
dGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyk6CisgICAgICAgICogbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wp
OgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1
Y3RBcnJheVdpdGhTaXplUXVpcmspOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoSlNDOjppc0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jUG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNl
KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjpj
b25jYXRBcHBlbmRPbmUpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25j
YXRNZW1jcHkpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uU2xvd1BhdGhzOjpvcEluKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
c0V4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmludGVycHJl
dGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvTG9jYWxlRGF0
ZVN0cmluZyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0xvY2FsZVRpbWVTdHJpbmcp
OgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNHZXRGdWxsWWVhcik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVh
cik6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRNb250aCk6CisgICAgICAgIChKU0M6
OmRhdGVQcm90b0Z1bmNHZXRVVENNb250aCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXREYXRlKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUpOgorICAgICAg
ICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0RGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldFVUQ0RheSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRIb3Vycyk6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENIb3Vycyk6CisgICAgICAgIChKU0M6OmRhdGVQ
cm90b0Z1bmNHZXRNaW51dGVzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01p
bnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyk6CisgICAgICAg
IChKU0M6OmRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVBy
b3RvRnVuY0dldE1pbGxpU2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRV
VENNaWxsaXNlY29uZHMpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0VGltZXpvbmVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0VGltZSk6CisgICAgICAgIChK
U0M6OnNldE5ld1ZhbHVlRnJvbVRpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVG
cm9tRGF0ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAg
ICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY1RvSlNPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6
OnRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAg
ICAgICAoSlNDOjp0aHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93U3ludGF4RXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuaDoKKyAgICAgICAgKEpTQzo6dGhyb3dSYW5n
ZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dWTUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhy
b3dWTVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OnRocm93Vk1SYW5nZUVycm9yKToKKyAgICAg
ICAgKEpTQzo6U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uOjpjb25zdHJ1Y3RUaHJvd1R5cGVF
cnJvcik6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbjo6Y2FsbFRo
cm93VHlwZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25GdXp6LmNwcDoKKyAgICAgICAgKEpTQzo6ZG9FeGNlcHRpb25GdXp6aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjp0aHJv
d091dE9mTWVtb3J5RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cik6CisgICAgICAgIChKU0M6OnRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZh
bEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpmdW5jdGlvblByb3RvRnVuY0JpbmQpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Y2FsbFNldHRlcik6CisgICAgICAgICogcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmNvbXBhcmVTdHJpbmdz
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNvbXBhcmUpOgorICAgICAgICAoSlND
OjpJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERh
dGVUaW1lRm9ybWF0Ojpmb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlR2V0dGVyRm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9y
bWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcik6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsU3RyaW5n
T3B0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bE51bWJlck9wdGlvbik6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QpOgorICAgICAgICAoSlNDOjpsb29rdXBTdXBwb3J0ZWRM
b2NhbGVzKToKKyAgICAgICAgKiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6Oml0ZXJhdG9yTmV4dCk6CisgICAgICAgIChKU0M6Oml0ZXJhdG9yQ2xvc2UpOgor
ICAgICAgICAoSlNDOjpjcmVhdGVJdGVyYXRvclJlc3VsdE9iamVjdCk6CisgICAgICAgIChKU0M6
Oml0ZXJhdG9yRm9ySXRlcmFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6YXBwZW5kTWVtY3B5KToKKyAg
ICAgICAgKEpTQzo6SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
cG9wKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJy
YXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6Y2FsbEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBydW50
aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZl
clByb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKiBydW50aW1lL0pTQ0lubGluZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b09i
amVjdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKToKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6dG9TdHJpbmdTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjpyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKToKKyAgICAgICAgKiBydW50aW1l
L0pTRGF0YVZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Omdl
dERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQ
cm90b0dldHRlckJ1ZmZlcik6CisgICAgICAgIChKU0M6OmRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRl
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVPZmZzZXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y2FsbGVy
R2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc6OnNldEluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld0Zyb21JdGVyYXRvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXcpOgorICAgICAgICAoSlNDOjpjYWxsR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6dmFsaWRhdGVSYW5nZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
OgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0pvaW4pOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6
OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpj
cmVhdGVFdmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0
ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpk
ZWNvZGUpOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6CisgICAgICAgIChKU0M6Omds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNUaHJvd1R5
cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1
bmNQcm90b0dldHRlcik6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQcm90b1NldHRlcik6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVFbnZpcm9ubWVudDo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJ
bmRleCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Q
cm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAg
ICAgIChKU0M6OldhbGtlcjo6d2Fsayk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJz
ZSk6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpjYWxsVG9QcmltaXRpdmVGdW5jdGlvbik6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpvcmRpbmFyeVRvUHJpbWl0aXZlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmF1bHRIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjp2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldE1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgor
ICAgICAgICAoSlNDOjpjcmVhdGVMaXN0RnJvbUFycmF5TGlrZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlTGlzdEZy
b21BcnJheUxpa2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0SW5saW5lKToKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0UHJvbWlzZSk6CisgICAgICAgIChKU0M6OmNhbGxQcm9taXNlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpwcm9wZXJ0
eU5hbWVJdGVyYXRvckZ1bmNOZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNSb3BlU3RyaW5nOjpvdXRPZk1lbW9yeSk6CisgICAgICAgICogcnVu
dGltZS9KU1N0cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdCdWlsZGVyOjpi
dWlsZCk6CisgICAgICAgIChKU0M6OmpzTWFrZU5vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5l
cjo6am9pbmVkTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNTdHJpbmdKb2luZXI6OmpvaW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJp
bmdKb2luZXI6OkpTU3RyaW5nSm9pbmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTU3ltYm9sVGFi
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6c3ltYm9sVGFibGVQdXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0VHlwZWRBcnJheVZpZXcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNM
ZW5ndGgpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6dHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3Rv
RnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4p
OgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcik6Cisg
ICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAgICAgICAgKEpTQzo6
dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9NYXBDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxNYXApOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RNYXApOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNJdGVyYXRvcj46OmVuc3VyZVNwYWNlRm9yQXBwZW5kKToKKyAgICAgICAgKiBydW50
aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwSXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCk6CisgICAgICAgICogcnVudGltZS9NYXBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpnZXRNYXApOgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNWYWx1ZXMp
OgorICAgICAgICAoSlNDOjptYXBQcm90b0Z1bmNFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6bWFw
UHJvdG9GdW5jS2V5cyk6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6Cisg
ICAgICAgICogcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpj
YWxsUmV0dXJuVW5kZWZpbmVkKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKToKKyAgICAgICAgKEpTQzo6bnVtYmVyUHJv
dG9GdW5jVG9QcmVjaXNpb24pOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgIChKU0M6Om51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKToKKyAgICAg
ICAgKEpTQzo6bnVtYmVyUHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJv
dG90eXBlT2YpOgorICAgICAgICAoSlNDOjp0b1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpv
YmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpvYmplY3RD
b25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAg
ICAgIChKU0M6OmpzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6anNTdHJpbmdGcm9tUmVnaXN0ZXJB
cnJheSk6CisgICAgICAgIChKU0M6OmpzU3RyaW5nRnJvbUFyZ3VtZW50cyk6CisgICAgICAgICog
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6bWFrZVJldm9jYWJs
ZVByb3h5KToKKyAgICAgICAgKEpTQzo6cHJveHlSZXZvY2FibGVDb25zdHJ1Y3RvclRocm93RXJy
b3IpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAgIChKU0M6
OmNhbGxQcm94eSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBlcmZv
cm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
SGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90Q29tbW9uKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQpOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtUHJveHlDYWxsKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5
Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUpOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKToKKyAg
ICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUpOgorICAgICAgICAo
SlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9SZWZsZWN0
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdENvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3REZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OnJl
ZmxlY3RPYmplY3RFbnVtZXJhdGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0R2V0KToK
KyAgICAgICAgKEpTQzo6cmVmbGVjdE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcik6Cisg
ICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZik6CisgICAgICAgIChKU0M6
OnJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUpOgorICAgICAgICAoSlNDOjpyZWZsZWN0T2JqZWN0
T3duS2V5cyk6CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RQcmV2ZW50RXh0ZW5zaW9ucyk6
CisgICAgICAgIChKU0M6OnJlZmxlY3RPYmplY3RTZXQpOgorICAgICAgICAoSlNDOjpyZWZsZWN0
T2JqZWN0U2V0UHJvdG90eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0ZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwQ3Jl
YXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OmNvbGxlY3RNYXRjaGVzKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OnNldExhc3RJbmRleCk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNUZXN0
RmFzdCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY0V4ZWMpOgorICAgICAgICAoSlND
OjpyZWdFeHBQcm90b0Z1bmNNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1
bmNDb21waWxlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4
cFByb3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVy
TXVsdGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAg
ICAgICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdF
eHBQcm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3Vy
Y2UpOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVqZWN0Lmg6CisgICAgICAgIChKU0M6OnJlamVjdCk6CisgICAgICAgICogcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxTZXQpOgorICAgICAg
ICAoSlNDOjpjb25zdHJ1Y3RTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0SXRlcmF0b3JQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpTZXRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0KToK
KyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFNl
dCk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgIChKU0M6OnNl
dFByb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1h
cC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KToKKyAg
ICAgICAgKEpTQzo6U3BhcnNlQXJyYXlFbnRyeTo6cHV0KToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNvZGVQb2ludCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJp
bmdPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OlN0cmluZ09iamVjdDo6cHV0QnlJbmRleCk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpq
c1NwbGljZVN1YnN0cmluZ3MpOgorICAgICAgICAoSlNDOjpqc1NwbGljZVN1YnN0cmluZ3NXaXRo
U2VwYXJhdG9ycyk6CisgICAgICAgIChKU0M6OnJlcGVhdENoYXJhY3Rlcik6CisgICAgICAgIChK
U0M6OnJlcGxhY2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJBdCk6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNDb2Rl
UG9pbnRBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90
b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NsaWNlKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jU3Vic3RyKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jU3Vic3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlND
Ojp0b0xvY2FsZUNhc2UpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNCaWcpOgorICAg
ICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTbWFsbCk6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0JsaW5rKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQm9sZCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZpeGVkKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jSXRhbGljcyk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N0cmlrZSk6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1Yik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY1N1cCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6Cisg
ICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQW5jaG9yKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6
CisgICAgICAgIChKU0M6OnRyaW1TdHJpbmcpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyk6CisgICAgICAgIChKU0M6OnN0
cmluZ1Byb3RvRnVuY0l0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplKToKKyAgICAg
ICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1N0
cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdSZWN1cnNpb25D
aGVja2VyOjp0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICogcnVudGltZS9TeW1i
b2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRvTnVtYmVyKToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0
b3JLZXlGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6VGhyb3dTY29wZSk6CisgICAgICAgIChKU0M6
OlRocm93U2NvcGU6On5UaHJvd1Njb3BlKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6dGhy
b3dFeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjpwcmludElmTmVlZENoZWNr
KToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6c2ltdWxhdGVUaHJvdyk6CisgICAgICAgIChK
U0M6OlRocm93U2NvcGU6OnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKToKKyAg
ICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlRocm93
U2NvcGU6OnZtKToKKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZTo6ZXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6VGhyb3dTY29wZTo6cmVsZWFzZSk6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6
OlRocm93U2NvcGUpOgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6
CisgICAgICAgIChKU0M6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rocm93
U2NvcGVMb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGhyb3dTY29wZUxvY2F0aW9u
OjpUaHJvd1Njb3BlTG9jYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiBydW50aW1lL1ZNRW50cnlTY29wZS5oOgorICAgICAgICAoSlNDOjpWTUVudHJ5U2NvcGU6OnZt
KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmNhbGxXZWFrTWFwKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha01hcCk6CisgICAg
ICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vh
a01hcERhdGEpOgorICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrTWFwU2V0KToKKyAgICAgICAg
KiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWFr
U2V0KToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0V2Vha1NldCk6CisgICAgICAgICogcnVudGlt
ZS9XZWFrU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0V2Vha01hcERhdGEpOgor
ICAgICAgICAoSlNDOjpwcm90b0Z1bmNXZWFrU2V0QWRkKToKKwogMjAxNi0wOC0yOSAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIw
MjU2OCk6IFdlYiBJbnNwZWN0b3I6IEV4cGFuZGluZyBBcnJheSBQcm90b3R5cGUgaW4gQ29uc29s
ZSBzaG93cyBubyBwcm9wZXJ0aWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgxNCw2ICs4MTQsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3ltYm9sT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisgICAgcnVudGlt
ZS9UaHJvd1Njb3BlLmNwcAogICAgIHJ1bnRpbWUvVGVtcGxhdGVSZWdpc3RyeS5jcHAKICAgICBy
dW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKICAgICBydW50aW1lL1R5cGVMb2NhdGlvbkNhY2hl
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsMTIgKzM2NSwx
NSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjdXN0b21H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBDdXN0b21HZXR0ZXIq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEN1c3RvbUdldHRlcio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2Jq
ZWN0LT5nZXQoZXhlYywgUHJvcGVydHlOYW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywg
InNob3VsZFRocm93IikpKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChzaG91bGRUaHJv
dykKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDEwMCkpOwogICAgIH0KIH07CkBAIC00NzAsOSArNDcz
LDEyIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgbGVuZ3RoR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgUnVudGltZUFycmF5KiB0aGlz
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxSdW50aW1lQXJyYXkqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CiAgICAgfQogCkBAIC0xMjMyLDExICsxMjM4LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmUKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNyZWF0ZUVsZW1lbnQoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUm9v
dCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iKSkpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIHJvb3QpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3Qg
Y3JlYXRlIEVsZW1lbnQgd2l0aG91dCBhIFJvb3QuIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShFbGVtZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
cm9vdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0RWxl
bWVudChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDE2LDIwICsxNDI1LDIzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBT
dHJpbmcgZmlsZU5hbWUgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZl
dGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIp
KSkpOwogCi0gICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNy
ZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOworICAgIEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSog
YXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAw
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyAr
K2kpCiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdCgKLSAgICAgICAgZXhlYy0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CisgICAg
ICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
LCAiYXJndW1lbnRzIiksIGFycmF5KTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0
aW9uOwogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CkBAIC0xNDM4LDcgKzE0NTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgc3RvcFdhdGNoLnN0b3Ao
KTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIHNjb3BlLCBleGNlcHRpb24p
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICAKQEAgLTE0NDcsMjMgKzE0NTksMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblJ1bgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVu
U3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBzb3Vy
Y2UgPSBleGVjLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKLSAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZt
KCksIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAgR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKICAgICBKU0FycmF5
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7
ICsraSkKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9i
amVjdC0+cHV0RGlyZWN0KAotICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKyAg
ICAgICAgdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNl
cHRpb247CiAgICAgZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG1ha2VTb3Vy
Y2Uoc291cmNlKSwgSlNWYWx1ZSgpLCBleGNlcHRpb24pOwogCiAgICAgaWYgKGV4Y2VwdGlvbikg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCBleGNlcHRpb24pOworICAgICAgICBzY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgCkBAIC0xNDcyLDI0ICsxNDg3LDMw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZT
dHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3Jp
cHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNj
cmlwdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBv
cGVuIGZpbGUuIikpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQg
bm90IG9wZW4gZmlsZS4iKSkpKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgCiAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShzY3JpcHQsIGZpbGVOYW1lKSwg
SlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBpZiAoZXZhbHVhdGlvbkV4Y2Vw
dGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBldmFsdWF0aW9u
RXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV2YWx1YXRp
b25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWRTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NDk4LDMwICsxNTE5LDM2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25M
b2EKICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNv
dXJjZShzb3VyY2VDb2RlKSwgSlNWYWx1ZSgpLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBp
ZiAoZXZhbHVhdGlvbkV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGV2YWx1YXRpb25FeGNlcHRpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJl
YWRGaWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxl
TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmlsbEJ1ZmZlcldp
dGhDb250ZW50c09mRmlsZShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90IG9wZW4gZmlsZS4iKSkpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHNjcmlw
dCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZWNrU3lu
dGF4KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9t
TG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
OwogCkBAIC0xNTMzLDcgKzE1NjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uQ2hlCiAgICAgc3RvcFdhdGNoLnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRTeW50YXgp
Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgc3ludGF4RXhjZXB0aW9u
KTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHN5bnRheEV4Y2VwdGlvbik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdG9wV2F0Y2guZ2V0RWxhcHNl
ZE1TKCkpKTsKIH0KIApAQCAtMTYzOCwxMiArMTY2NSwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUmVvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25UcmFuc2ZlckFycmF5QnVmZmVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKSkpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vdCBlbm91Z2ggYXJndW1lbnRzIikpKSk7CiAgICAg
CiAgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiKSkpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
Y3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIi
KSkpKTsKICAgICAKICAgICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAg
YnVmZmVyLT5pbXBsKCktPnRyYW5zZmVyKGR1bW15Q29udGVudHMpOwpAQCAtMTgxMCwyNyArMTg0
MCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBWZWN0b3I8
Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZp
bGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
b3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKICAgICBKU0ludGVybmFsUHJvbWlzZSog
cHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShleGVjLCBmaWxlTmFtZSk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBlcnJvcjsKLSAgICBKU0Z1bmN0aW9uKiBlcnJv
ckhhbmRsZXIgPSBKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4ZWNTdGF0ZSogZXhlYykg
eworICAgIEpTRnVuY3Rpb24qIGVycm9ySGFuZGxlciA9IEpTTmF0aXZlU3RkRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgWyZdKEV4
ZWNTdGF0ZSogZXhlYykgewogICAgICAgICBlcnJvciA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0pOwogCiAg
ICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRyLCBlcnJvckhhbmRsZXIpOwotICAgIGV4ZWMt
PnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgdm0uZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAg
aWYgKGVycm9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgZXJyb3IpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0xODU4LDYgKzE4OTEsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9X
VEZTdHJpbmcoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTg3MCw3ICsxOTA2LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogICAgIHN0b3BXYXRj
aC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCB0b1N0cmluZygiU3lu
dGF4RXJyb3I6ICIsIGVycm9yLm1lc3NhZ2UoKSwgIjoiLCBlcnJvci5saW5lKCkpKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywg
dG9TdHJpbmcoIlN5bnRheEVycm9yOiAiLCBlcnJvci5tZXNzYWdlKCksICI6IiwgZXJyb3IubGlu
ZSgpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdl
dEVsYXBzZWRNUygpKSk7CiB9CiAKQEAgLTE5MDcsMTAgKzE5NDMsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblN0YQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKLSAgICBpZiAoIWV4ZWMtPnZtKCkuc2FtcGxpbmdQcm9maWxlcigpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3Rh
cnRlZCIpKSkpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCF2bS5zYW1wbGluZ1Byb2ZpbGVyKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2FtcGxpbmcgcHJvZmlsZXIgd2Fz
IG5ldmVyIHN0YXJ0ZWQiKSkpKTsKIAotICAgIFN0cmluZyBqc29uU3RyaW5nID0gZXhlYy0+dm0o
KS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CisgICAgU3RyaW5nIGpz
b25TdHJpbmcgPSB2bS5zYW1wbGluZ1Byb2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CiAg
ICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShleGVj
LCBqc29uU3RyaW5nKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
KTsKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw2ICs0NCw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgRW5jb2RlZEpTVmEKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxs
YmFja0Z1bmN0aW9uOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpS
ZWYgPSB0b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhl
YywgTm90U3RyaWN0TW9kZSkpKTsKQEAgLTYxLDcgKzYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBBUElDYWxsYmFjawogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8VCo+KHRvSlMo
ZnVuY3Rpb25SZWYpKS0+ZnVuY3Rpb25DYWxsYmFjaygpKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0
aGlzT2JqUmVmLCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsK
ICAgICB9CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKIAogICAgIC8vIHJlc3VsdCBt
dXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4KICAgICBpZiAoIXJlc3VsdCkKQEAgLTczLDYgKzc1LDgg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBBUElDYWxsYmFjawogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rp
b246OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9
IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29u
c3RydWN0b3IpOwpAQCAtOTIsMTIgKzk2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgQVBJQ2FsbGJhY2sKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKGN0eCwgY29uc3Ry
dWN0b3JSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGV4Y2VwdGlvbikp
OwogICAgICAgICB9CiAgICAgICAgIC8vIHJlc3VsdCBtdXN0IGJlIGEgdmFsaWQgSlNWYWx1ZS4K
ICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKHJlc3VsdCkpOwogICAgIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1
bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTMzLDYg
KzEzMyw5IEBAIFN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNsYXNzTmEKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtMTU5LDcgKzE2Miw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm8KICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5n
ZXQoKSwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAgICAgICAgICAgICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKICAgICAg
ICAgICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRF
bnVtLCBqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjAwLDYgKzIwMyw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+OjpnZXRPd25Qcm8KIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBKU1ZhbHVlIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSBoaW50KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgY29uc3QgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxjb25zdCBKU0NhbGxiYWNrT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBKU0NvbnRleHRSZWYgY3R4
ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmpl
Y3QpOwpAQCAtMjEwLDcgKzIxNiw3IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpkZWZhdWwKICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gY29udmVydFRvVHlwZShjdHgsIHRoaXNSZWYsIGpzSGlu
dCwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4
ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJlc3VsdCkKQEAgLTIyNCw2ICsyMzAsOSBA
QCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsCiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxs
YmFja09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCk7
CiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRo
aXNSZWYgPSB0b1JlZih0aGlzT2JqZWN0KTsKQEAgLTI0Miw3ICsyNTEsNyBAQCBib29sIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgcHJvcGVydHlOYW1lUmVmLmdldCgpLCB2YWx1
ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCB8fCBleGNlcHRpb24pCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CkBAIC0yNTksNyArMjY4LDcgQEAgYm9vbCBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IHNldFByb3BlcnR5KGN0eCwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFt
ZVJlZi5nZXQoKSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhl
YywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNzMsNyArMjgy
LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFBhcmVudDo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmF0
dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc09i
amVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCB2YWx1ZSk7IC8vIHB1dCBhcyBvdmVycmlkZSBwcm9wZXJ0eQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpw
dXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUpOyAvLyBwdXQgYXMgb3ZlcnJpZGUgcHJv
cGVydHkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI4
NSw2ICsyOTQsOSBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsCiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
SW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtMzAzLDcgKzMxNSw3IEBA
IGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBzZXRQcm9wZXJ0eShjdHgsIHRoaXNSZWYsIHByb3BlcnR5TmFtZVJlZi5nZXQo
KSwgdmFsdWVSZWYsICZleGNlcHRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICBpZiAo
cmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CkBAIC0zMjAsNyArMzMyLDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46
OnB1dEJ5SW5kZQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0UHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBlbnRyeS0+cHJvcGVydHlOYW1lUmVmLmdldCgpLCB2YWx1ZVJlZiwgJmV4
Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8IGV4Y2VwdGlvbikKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQyLDYg
KzM1NCw5IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXRCeUluZGUKIHRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CiBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihjZWxsKTsKICAgICBKU0NvbnRleHRSZWYg
Y3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNP
YmplY3QpOwpAQCAtMzU5LDcgKzM3NCw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
OjpkZWxldGVQcm8KICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsZXRlUHJvcGVydHko
Y3R4LCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNlcHRpb24pOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0
b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgfHwgZXhj
ZXB0aW9uKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
QEAgLTQwOCw2ICs0MjMsOSBAQCBDb25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yID0gZXhlYy0+Y2FsbGVlKCk7CiAgICAgSlNDb250
ZXh0UmVmIGV4ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3Rv
clJlZiA9IHRvUmVmKGNvbnN0cnVjdG9yKTsKQEAgLTQyNiw3ICs0NDQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
dG9KUyhjYWxsQXNDb25zdHJ1Y3RvcihleGVjUmVmLCBjb25zdHJ1Y3RvclJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC00MzgsNiArNDU2LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OgogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwogICAgIEpTQ29u
dGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9
IHRvUmVmKHRoaXNPYmplY3QpOwpAQCAtNDUyLDcgKzQ3Myw3IEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpjdXN0b21IYXMKICAgICAgICAgICAgICAgICByZXN1bHQgPSBoYXNJbnN0
YW5jZShleGVjUmVmLCB0aGlzUmVmLCB2YWx1ZVJlZiwgJmV4Y2VwdGlvbik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgdG9KUyhleGVjLCBleGNlcHRpb24p
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzUs
NiArNDk2LDkgQEAgQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRDYQogdGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0NvbnRl
eHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGZ1bmN0aW9uUmVm
ID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNPYmpSZWYgPSB0
b1JlZihqc0Nhc3Q8SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90
U3RyaWN0TW9kZSkpKTsKQEAgLTQ5Myw3ICs1MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YWxsQXNGdW5jdGlvbihleGVjUmVmLCBmdW5jdGlvblJlZiwgdGhpc09ialJlZiwgYXJndW1lbnRD
b3VudCwgYXJndW1lbnRzLmRhdGEoKSwgJmV4Y2VwdGlvbikpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CisgICAgICAgICAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01NzAsNiArNTk0LDkgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaGVy
aXRzKAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9S
ZWYodGhpcyk7CiAgICAgCiAgICAgaWYgKFN0cmluZ0ltcGwqIG5hbWUgPSBwcm9wZXJ0eU5hbWUu
dWlkKCkpIHsKQEAgLTU4NCw3ICs2MTEsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6Z2V0U3RhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9w
ZXJ0eSh0b1JlZihleGVjKSwgdGhpc1JlZiwgZW50cnktPnByb3BlcnR5TmFtZVJlZi5nZXQoKSwg
JmV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCB0b0pT
KGV4ZWMsIGV4Y2VwdGlvbikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQpAQCAtNjAxLDYgKzYyOCw5IEBAIEpTVmFsdWUgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpnZXRTdGEKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09i
aiA9IGFzQ2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICAvLyBDaGVjayBmb3Ig
Y2FjaGVkIG9yIG92ZXJyaWRlIHByb3BlcnR5LgpAQCAtNjEzLDcgKzY0Myw2IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50PjoKICAgICAgICAgICAgIGlmIChPcGFxdWVK
U0NsYXNzU3RhdGljRnVuY3Rpb25zVGFibGUqIHN0YXRpY0Z1bmN0aW9ucyA9IGpzQ2xhc3MtPnN0
YXRpY0Z1bmN0aW9ucyhleGVjKSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNGdW5jdGlv
bkVudHJ5KiBlbnRyeSA9IHN0YXRpY0Z1bmN0aW9ucy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2FsbEFzRnVuY3Rp
b24gPSBlbnRyeS0+Y2FsbEFzRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU09iamVjdCogbyA9
IEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwg
Y2FsbEFzRnVuY3Rpb24sIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+
cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG8sIGVudHJ5LT5hdHRyaWJ1dGVzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobyk7CkBAIC02MjMsMTIg
KzY1MiwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rp
b24gY2FsbGJhY2suIikpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rp
b24gY2FsbGJhY2suIikpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFz
Q2FsbGJhY2tPYmplY3QodGhpc1ZhbHVlKTsKICAgICAKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYodGhpc09iaik7CkBAIC02NDYsNyArNjc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
YWxsYmFja09iamVjdDxQYXJlbnQ+OgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdldFBy
b3BlcnR5KHRvUmVmKGV4ZWMpLCB0aGlzUmVmLCBwcm9wZXJ0eU5hbWVSZWYuZ2V0KCksICZleGNl
cHRpb24pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
dG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIHRvSlMoZXhlYywgZXhjZXB0aW9uKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKQEAgLTY1NSw3ICs2ODcsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJoYXNQcm9wZXJ0eSBj
YWxsYmFjayByZXR1cm5lZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4i
KSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImhhc1Byb3BlcnR5
IGNhbGxiYWNrIHJldHVybmVkIHRydWUgZm9yIGEgcHJvcGVydHkgdGhhdCBkb2Vzbid0IGV4aXN0
LiIpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDkgKzEwMCwxMSBAQCBpbmxpbmUgVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShKCiAK
IHN0YXRpYyBKU09iamVjdCogY3JlYXRlVHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVHlw
ZWRBcnJheVR5cGUgdHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghYnVm
ZmVyKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIHN3aXRjaCAodHlwZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDk2
LDggKzIwOTYsMTAgQEAKIAkJRkUxQzBGRkYxQjE5NEZEMTAwQjUzRkNBIC8qIEV4Y2VwdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJRkUyMENFOUQxNUYw
NEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUIxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xv
b3AuY3BwICovOyB9OwogCQlGRTIwQ0U5RTE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMx
NUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTJFNkE3QjFENkVBNjJDMDA2MEY4OTYgLyogVGhy
b3dTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTJFNkE3QTFENkVBNUZFMDA2MEY4OTYgLyogVGhyb3dTY29wZS5jcHAgKi87IH07CiAJCUZF
MzE4RkRGMUNBQzk4MjcwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4
RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNw
cCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgyRjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50
ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFs
RnVuY3Rpb25zLmggKi87IH07CisJCUZFMzQyMjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0
MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAv
KiBKU0RvbGxhclZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMzg0RUUxMUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmNwcCAqLzsgfTsK
IAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFEREI3QUQwMDU1REUy
QyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkUzODRFRTcxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUz
ODRFRTMxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovOyB9OwpA
QCAtMjEyNCw2ICsyMTI2LDcgQEAKIAkJRkU1MDY4NjcxQUUyNUUyODAwMDlEQUI3IC8qIERlZmVy
cmVkU291cmNlRHVtcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTUwNjg2NjFBRTI1RTI4MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNw
cCAqLzsgfTsKIAkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTU5MzJBNTE4
M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCAqLzsgfTsKIAkJRkU1OTMyQTgxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlT
Y29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUZFNjAyOUQ5MUQ2RTFFNEYwMDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjAyOUQ4MUQ2RTFFMzMw
MDMwMjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTY4QzYzNzFCOTBERTA0MDA0MkJDQjMgLyogTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTY4QzYzNjFCOTBEREQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmlu
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2OEM2MzgxQjkwREUwQjAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY4QzYzNTFCOTBE
REQ5MDA0MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmNwcCAqLzsgfTsKIAkJRkU3QkE2
MEYxQTFBN0NFQzAwRjFGN0I0IC8qIEhlYXBWZXJpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyog
SGVhcFZlcmlmaWVyLmNwcCAqLzsgfTsKQEAgLTQzOTgsOCArNDQwMSwxMCBAQAogCQlGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlDMTVG
MDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUyRTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2Nv
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1
NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQg
LyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Nj
b3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocm93U2NvcGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTExQUREQjdBRDAwNTVERTJDIC8qIEpT
RG9sbGFyVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xs
YXJWTS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzg0RUUyMUFEREI3QUQw
MDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRG9sbGFyVk0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzODRFRTMxQURE
QjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk1Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2xsYXJWTVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NDI2LDYgKzQ0MzEsNyBAQAogCQlGRTUwNjg2NjFBRTI1RTI4
MDAwOURBQjcgLyogRGVmZXJyZWRTb3VyY2VEdW1wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERlZmVycmVkU291cmNlRHVtcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNTkzMkE1MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk1FbnRyeVNjb3BlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU1OTMyQTYxODNDNUEyNjAwQTFFQ0NDIC8q
IFZNRW50cnlTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWTUVudHJ5
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU2MDI5RDgxRDZFMUUzMzAw
MzAyMDREIC8qIFRocm93U2NvcGVMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJvd1Njb3BlTG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU2OEM2MzUxQjkwREREOTAwNDJCQ0IzIC8qIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlclByaW50
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTY4QzYzNjFCOTBEREQ5MDA0
MkJDQjMgLyogTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTdCQTYwRDFBMUE3Q0VDMDBGMUY3QjQgLyogSGVhcFZlcmlmaWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBWZXJpZmllci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTI5LDYgKzYxMzUsOSBAQAogCQkJCTcwRUNBNjA0
MUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5S2V5LmggKi8sCiAJCQkJMEZBMkMx
NzkxN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5jcHAgKi8sCiAJCQkJMEZBMkMx
N0ExN0Q3Q0Y4NDAwOUQwMTVGIC8qIFRlc3RSdW5uZXJVdGlscy5oICovLAorCQkJCUZFMkU2QTdB
MUQ2RUE1RkUwMDYwRjg5NiAvKiBUaHJvd1Njb3BlLmNwcCAqLywKKwkJCQlGRTM0MjIxMTFENkI4
MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovLAorCQkJCUZFNjAyOUQ4MUQ2RTFFMzMwMDMw
MjA0RCAvKiBUaHJvd1Njb3BlTG9jYXRpb24uaCAqLywKIAkJCQkwRjU1OTg5NzE3Qzg2QzU2MDBB
MUU1NDMgLyogVG9OYXRpdmVGcm9tVmFsdWUuaCAqLywKIAkJCQkwRjJCNjZEODE3QjZCNUFCMDBB
N0FFM0YgLyogVHlwZWRBcnJheUFkYXB0b3JzLmggKi8sCiAJCQkJMEYyQjY2RDkxN0I2QjVBQjAw
QTdBRTNGIC8qIFR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTc2MzUsNiArNzY0NCw3
IEBACiAJCQkJQkMxOEM0MDUwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk2MkQyRDM5MDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8q
IEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUzNDIyMTIxRDZCODFD
MzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUyQ0FFMTRF
OTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2
RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkFDMTdCNkI1M0YwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291bnRl
ZC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Njc2LDYgKzc2ODYsNyBAQAogCQkJCTBGRTA1MDFBMUFB
OTA5MTEwMEQzM0IzMyAvKiBHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcwOEVCRTI0MUNFOEYzNTgwMDQ1MzE0NiAvKiBJbnRsT2Jq
ZWN0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU2MDI5RDkxRDZFMUU0RjAwMzAyMDRE
IC8qIFRocm93U2NvcGVMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMUIxQUE5
MDkxMTAwRDMzQjMzIC8qIEdlbmVyaWNPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2
NkUwMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkI2NkUxMTdCNkI1QUIwMEE3QUUzRiAvKiBHZW5lcmljVHlwZWRBcnJheVZp
ZXdJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTkxNzcsNiArOTE4OCw3IEBACiAJCQkJMEZD
RUZBQUIxODA0QzEzRTAwNDcyQ0U0IC8qIEZUTFNhdmVSZXN0b3JlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBW
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTJFNkE3QjFENkVBNjJDMDA2MEY4OTYgLyog
VGhyb3dTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjhEQUVB
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsOCAr
MTM4LDEwIEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqIGUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVn
YXRpdmUiKSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUi
KSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oVmlld0NsYXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzaXplKSk7CkBAIC03MjUs
MTIgKzcyNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlCiAg
ICAgCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJhc2UgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFy
Z3VtZW50KTsKICAgICAKICAgICBpZiAoIWJhc2UuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZv
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNTdHJpbmcqIGlucHV0
ID0gYXJndW1lbnQudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFpbnB1dCkKQEAgLTc2
OSwxMiArNzcyLDEzIEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlZ0V4cFRlc3QK
ICAgICAKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QXJndW1lbnQpOwogCiAgICAgaWYgKCFiYXNlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC05MzMs
OSArOTM3LDEwIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXQKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0p
OwogCiAgICAgaWYgKFVOTElLRUxZKHNpemUgPCAwKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2gg
cG9zaXRpdmUgaW50ZWdlci4iKSkpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFy
Kj4odGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRl
Z2VyLiIpKSkpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlKCp2bSwg
YXJyYXlTdHJ1Y3R1cmUsIHNpemUpOwogICAgIHJlc3VsdC0+YnV0dGVyZmx5KCk7IC8vIEVuc3Vy
ZSB0aGF0IHRoZSBiYWNraW5nIHN0b3JlIGlzIGluIHRvLXNwYWNlLgpAQCAtMTM4OCw5ICsxMzkz
LDEwIEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25NYWtlUm9wZTIKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBpZiAoc3VtT3ZlcmZsb3dzPGludDMyX3Q+KGxlZnQtPmxlbmd0aCgpLCByaWdodC0+bGVuZ3Ro
KCkpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xNDAxLDkgKzE0MDcsMTAgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk1ha2VSb3BlMwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oYS0+
bGVuZ3RoKCksIGItPmxlbmd0aCgpLCBjLT5sZW5ndGgoKSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MTQsNiArMTQy
MSw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEUKIHsKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZt
LCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBKU1N0cmluZyogc3RyMSA9IEpTVmFsdWU6OmRlY29kZShhKS50b1N0cmluZyhleGVjKTsKICAg
ICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsgLy8gSW1wb3NzaWJsZSwgc2luY2Ugd2UgbXVzdCBo
YXZlIGJlZW4gZ2l2ZW4gcHJpbWl0aXZlcy4KQEAgLTE0MjEsNyArMTQyOSw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25TdHJDYXQyKEUKICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlv
bigpKTsKIAogICAgIGlmIChzdW1PdmVyZmxvd3M8aW50MzJfdD4oc3RyMS0+bGVuZ3RoKCksIHN0
cjItPmxlbmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtMTQzMiw2ICsxNDQwLDcgQEAgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblN0ckNhdDMoRQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTU3RyaW5nKiBzdHIxID0gSlNW
YWx1ZTo6ZGVjb2RlKGEpLnRvU3RyaW5nKGV4ZWMpOwogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9u
KCkpOyAvLyBJbXBvc3NpYmxlLCBzaW5jZSB3ZSBtdXN0IGhhdmUgYmVlbiBnaXZlbiBwcmltaXRp
dmVzLgpAQCAtMTQ0MSw3ICsxNDUwLDcgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blN0ckNhdDMoRQogICAgIEFTU0VSVCghdm0uZXhjZXB0aW9uKCkpOwogCiAgICAgaWYgKHN1bU92
ZXJmbG93czxpbnQzMl90PihzdHIxLT5sZW5ndGgoKSwgc3RyMi0+bGVuZ3RoKCksIHN0cjMtPmxl
bmd0aCgpKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTU0NSw3ICsxNTU0LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93U3RhY2tPdgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotICAgIHRocm93U3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiB9CiAKIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplT2ZWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCkKQEAgLTE3MzIsMTMgKzE3NDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzY29wZS0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xv
dCYgc2xvdCkgLT4gSlNWYWx1ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAg
IEdldFB1dEluZm8gZ2V0UHV0SW5mbyhnZXRQdXRJbmZvQml0cyk7CiAgICAgICAgICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhy
b3dTY29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAg
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtMTc0Niw3ICsx
NzU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgICAg
ICAgICAgLy8gV2hlbiB3ZSBjYW4ndCBzdGF0aWNhbGx5IHByb3ZlIHdlIG5lZWQgYSBURFogY2hl
Y2ssIHdlIG11c3QgcGVyZm9ybSB0aGUgY2hlY2sgb24gdGhlIHNsb3cgcGF0aC4KICAgICAgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAg
ICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9y
KGV4ZWMpKTsKICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNzYwLDYgKzE3NzEsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RHluYW1pY1ZhCiB7CiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCk7
CiAgICAgR2V0UHV0SW5mbyBnZXRQdXRJbmZvKGdldFB1dEluZm9CaXRzKTsKQEAgLTE3NzEsMTMg
KzE3ODMsMTMgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dER5bmFtaWNWYQogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChzY29wZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldCk7CiAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRPd25Q
cm9wZXJ0eVNsb3Qoc2NvcGUsIGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICAgICAgaWYgKHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaWRlbnQpID09IGpzVERaVmFsdWUoKSkgewotICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CisgICAg
ICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihl
eGVjKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
Z2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCAmJiAhaGFzUHJvcGVy
dHkpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAJKHJl
dmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmpl
Y3RlZFNjcmlwdEhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw5ICs5NSwxMiBAQCBKU1Zh
bHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZShFCiAKIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgc2NyaXB0VmFsdWUgPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFs
dWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBh
cmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBwcm9ncmFtID0gc2Ny
aXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKQEAgLTEwNyw3ICsxMTAsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpldmFsdWF0ZVdpCiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uID0gZXhlYy0+YXJn
dW1lbnQoMSkuZ2V0T2JqZWN0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmV2YWx1YXRl
V2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMsIG1ha2VTb3VyY2UocHJvZ3JhbSksIHNjb3BlRXh0ZW5z
aW9uLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdFByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDEyMCArNzcsMTU2IEBAIHZvaWQg
SlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGU6OmZpbmkKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUF0dHJpYnV0ZUV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNjcmlwdEhvc3QqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0Kj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlKGV4ZWMpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlw
ZUZ1bmN0aW9uSW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmpl
Y3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25J
c0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmlzSFRN
TEFsbENvbGxlY3Rpb24oZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25XZWFrTWFwU2l6ZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFj
YXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrTWFwU2l6ZShleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5j
dGlvbldlYWtNYXBFbnRyaWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNJbmplY3RlZFNj
cmlwdEhvc3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSW5qZWN0ZWRTY3JpcHRIb3N0
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPndlYWtN
YXBFbnRyaWVzKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0lu
amVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZUZ1bmN0aW9uV2Vha1NldFNpemUoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVk
VGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY2FzdGVkVGhpcy0+d2Vha1NldFNpemUoZXhlYykpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25X
ZWFrU2V0RW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRo
aXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT53ZWFrU2V0RW50
cmllcyhleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3Rl
ZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvbkl0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU0luamVjdGVkU2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRU
aGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5pdGVyYXRvckVudHJpZXMoZXhlYykpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rp
b25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGVGdW5jdGlvblN1
YnR5cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFsdWUp
OwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c3VidHlwZShleGVjKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNJbmplY3RlZFNjcmlwdEhvc3RQcm90
b3R5cGVGdW5jdGlvbkZ1bmN0aW9uRGV0YWlscyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0luamVjdGVk
U2NyaXB0SG9zdCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRU
aGlzLT5mdW5jdGlvbkRldGFpbHMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzSW5qZWN0ZWRTY3JpcHRIb3N0UHJvdG90eXBlRnVuY3Rpb25HZXRJbnRlcm5hbFBy
b3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNJbmplY3RlZFNjcmlwdEhvc3QqPih0aGlzVmFs
dWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Z2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzKGV4ZWMpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDIwNTE4
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsOSArNzcsMTIgQEAgSlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp+SlNKYXZhU2NyaXB0Q2FsbAogCiBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6
ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50
IG11c3QgYmUgYSBzdHJpbmcuIikpOwogCiAgICAgU3RyaW5nIHNjcmlwdCA9IHNjcmlwdFZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC04OSw3ICs5Miw3IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFs
dWF0ZVcKICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb24gPSBleGVjLT5hcmd1bWVudCgxKS5n
ZXRPYmplY3QoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwoKS5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihzY3JpcHQsIHNjb3BlRXh0ZW5zaW9uLCBleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0
aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
NiwxMTAgKzc2LDE0MyBAQCB2b2lkIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZTo6Zmlu
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJv
dG90eXBlRnVuY3Rpb25FdmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRo
aXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGV4ZWMpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVQcm90
b3R5cGVGdW5jdGlvblNjb3BlRGVzY3JpcHRpb25zKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+c2NvcGVEZXNjcmlwdGlvbnMoZXhlYykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFtZUF0dHJpYnV0ZUNhbGxlcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
IWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNhbGxlcihleGVjKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlU291cmNl
SUQoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRDYWxsRnJhbWUqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFtZSo+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5zb3VyY2VJRChleGVjKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0
cmlidXRlTGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmxpbmUoZXhlYykp
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxGcmFt
ZUF0dHJpYnV0ZUNvbHVtbihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENh
bGxGcmFtZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmNvbHVt
bihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0
Q2FsbEZyYW1lQXR0cmlidXRlRnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAg
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFT
Y3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2Fz
dGVkVGhpcy0+ZnVuY3Rpb25OYW1lKGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc0phdmFTY3JpcHRDYWxsRnJhbWVBdHRyaWJ1dGVTY29wZUNoYWluKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxsRnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICgh
Y2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+c2NvcGVDaGFpbihleGVjKSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNKYXZhU2NyaXB0Q2FsbEZyYW1lQXR0cmlidXRlVGhp
c09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIEpTSmF2YVNjcmlwdENhbGxGcmFtZSog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNKYXZhU2NyaXB0Q2FsbEZyYW1lKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoIWNhc3RlZFRoaXMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRoaXNPYmplY3QoZXhl
YykpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzSmF2YVNjcmlwdENhbGxG
cmFtZUF0dHJpYnV0ZVR5cGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBKU0phdmFTY3JpcHRD
YWxsRnJhbWUqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTSmF2YVNjcmlwdENhbGxGcmFt
ZSo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFjYXN0ZWRUaGlzKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50eXBl
KGV4ZWMpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc0phdmFTY3JpcHRD
YWxsRnJhbWVJc1RhaWxEZWxldGVkKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgSlNKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0phdmFTY3JpcHRDYWxs
RnJhbWUqPih0aGlzVmFsdWUpOwogICAgIGlmICghY2FzdGVkVGhpcykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+
aXNUYWlsRGVsZXRlZChleGVjKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDEyICs0NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9pbnRlcnBy
ZXRlcihjYWxsRnJhbWUtPmludGVycHJldGVyKCkpCiAgICAgICAgICAgICAsIG1fZW50cnlTY29w
ZShjYWxsRnJhbWUtPnZtKCksIGZ1bmN0aW9uLT5zY29wZSgpLT5nbG9iYWxPYmplY3QoKSkKICAg
ICAgICAgeworICAgICAgICAgICAgVk0mIHZtID0gbV9lbnRyeVNjb3BlLnZtKCk7CisgICAgICAg
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgICAg
IEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+dm0oKS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7
CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkodm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewog
ICAgICAgICAgICAgICAgIG1fYXJndW1lbnRzLnJlc2l6ZShhcmd1bWVudENvdW50KTsKICAgICAg
ICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2Fs
bChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwgJm1fcHJvdG9DYWxsRnJhbWUs
IGZ1bmN0aW9uLCBhcmd1bWVudENvdW50ICsgMSwgZnVuY3Rpb24tPnNjb3BlKCksIG1fYXJndW1l
bnRzLmRhdGEoKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgc2NvcGUpOwogICAgICAgICAgICAgbV92YWxpZCA9ICFj
YWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwLCAyMDEyLTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24g
WndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEy
Nyw2ICsxMjcsOSBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgCiAK
IEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxs
RnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAKQEAgLTEzNCwxMCArMTM3LDEwIEBAIEpTVmFsdWUgZXZhbChDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBpZiAoIXByb2dyYW0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0
dXJuIHByb2dyYW07CiAKLSAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZyYW1lKGNhbGxG
cmFtZS0+dm0oKSwgY2FsbEZyYW1lKTsKKyAgICBUb3BDYWxsRnJhbWVTZXR0ZXIgdG9wQ2FsbEZy
YW1lKHZtLCBjYWxsRnJhbWUpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
YWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRpb24o
Y2FsbEZyYW1lLCBjcmVhdGVFdmFsRXJyb3IoY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QtPmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGNhbGxGcmFt
ZSwgc2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihjYWxsRnJhbWUsIGdsb2JhbE9iamVjdC0+ZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQogICAgIFN0cmluZyBwcm9ncmFtU291cmNlID0gYXNTdHJpbmcocHJvZ3JhbSktPnZhbHVl
KGNhbGxGcmFtZSk7CkBAIC0xODEsNyArMTg0LDcgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgbGl0ZXJh
bCBwYXJzZXIgYmFpbGVkLCBpdCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGV4Y2VwdGlvbnMuCi0g
ICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52bSgpLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgQVNT
RVJUKCF2bS5leGNlcHRpb24oKSk7CiAKICAgICAgICAgZXZhbCA9IGNhbGxlckNvZGVCbG9jay0+
ZXZhbENvZGVDYWNoZSgpLmdldFNsb3coY2FsbEZyYW1lLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ckNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRl
eHRUeXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0LCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIApAQCAtMTkwLDE3ICsxOTMsMjAgQEAgSlNWYWx1ZSBldmFsKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogICAgIH0KIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbGVyRnJhbWUt
PnRoaXNWYWx1ZSgpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNhbGxGcmFtZS0+
dm0oKS5pbnRlcnByZXRlcjsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSB2bS5pbnRl
cnByZXRlcjsKICAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbCwgY2FsbEZyYW1l
LCB0aGlzVmFsdWUsIGNhbGxlclNjb3BlQ2hhaW4pOwogfQogCiB1bnNpZ25lZCBzaXplT2ZWYXJh
cmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWSgh
YXJndW1lbnRzLmlzQ2VsbCgpKSkgewogICAgICAgICBpZiAoYXJndW1lbnRzLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCi0gICAgICAgIGNhbGxG
cmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGNyZWF0ZUludmFsaWRGdW5jdGlv
bkFwcGx5UGFyYW1ldGVyRXJyb3IoY2FsbEZyYW1lLCBhcmd1bWVudHMpKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihjYWxsRnJhbWUsIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAgICAgCkBAIC0yMTUsNyArMjIxLDcgQEAgdW5zaWduZWQgc2l6ZU9mVmFyYXJncyhD
YWxsRnJhbWUqIGNhbGxGcgogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cmluZ1R5cGU6CiAg
ICAgY2FzZSBTeW1ib2xUeXBlOgotICAgICAgICBjYWxsRnJhbWUtPnZtKCkudGhyb3dFeGNlcHRp
b24oY2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNh
bGxGcmFtZSwgIGFyZ3VtZW50cykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUs
IHNjb3BlLCBjcmVhdGVJbnZhbGlkRnVuY3Rpb25BcHBseVBhcmFtZXRlckVycm9yKGNhbGxGcmFt
ZSwgIGFyZ3VtZW50cykpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgCiAgICAgZGVmYXVs
dDoKQEAgLTIzNywyMSArMjQzLDI1IEBAIHVuc2lnbmVkIHNpemVPZlZhcmFyZ3MoQ2FsbEZyYW1l
KiBjYWxsRnIKIAogdW5zaWduZWQgc2l6ZUZyYW1lRm9yRm9yd2FyZEFyZ3VtZW50cyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgVk0mIHZtLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGNhbGxGcmFtZSwgbnVtVXNlZFN0YWNrU2xv
dHMsIGxlbmd0aCArIDEpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0
eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkKLSAgICAgICAgdGhyb3dTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lLCBzY29wZSk7CiAKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCiB1bnNpZ25lZCBzaXpl
RnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWTSYgdm0sIEpTVmFsdWUgYXJn
dW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc2l6ZU9mVmFyYXJncyhjYWxsRnJhbWUsIGFyZ3VtZW50cywg
Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgIAogICAgIENhbGxGcmFtZSogY2FsbGVlRnJhbWUgPSBj
YWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBudW1Vc2VkU3RhY2tTbG90cywgbGVuZ3Ro
ICsgMSk7CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heEFyZ3VtZW50cyB8fCAhdm0uZW5z
dXJlU3RhY2tDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSkgewotICAgICAg
ICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOworICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIApAQCAtODIyLDE1ICs4MzIsMTYgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShQcm9ncmFtRXhlYwogewogICAgIEpTU2NvcGUqIHNjb3BlID0gdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbFNjb3BlKCk7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCF2
bS5leGNlcHRpb24oKSk7CisgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKICAg
ICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5j
dXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JC
dXN5KCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkKLSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwog
CiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlICJwcm9ncmFtIiBpcyBhY3R1YWxseSBqdXN0IGEg
SlNPTiBvYmplY3QuIElmIHNvLAogICAgIC8vIHdlJ2xsIGhhbmRsZSB0aGUgSlNPTiBvYmplY3Qg
aGVyZS4gRWxzZSwgd2UnbGwgaGFuZGxlIHJlYWwgSlMgY29kZQpAQCAtODcxLDIyICs4ODIsMjIg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhlYwogICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChnbG9iYWxPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmdldFByb3Bl
cnR5U2xvdChjYWxsRnJhbWUsIEpTT05QUGF0aFtpXS5tX3BhdGhFbnRyeU5hbWUsIHNsb3QpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBKU09OUFBh
dGhbaV0ubV9wYXRoRW50cnlOYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVm
aW5lZFZhcmlhYmxlRXJyb3IoY2FsbEZyYW1lLCBKU09OUFBhdGhbaV0ubV9wYXRoRW50cnlOYW1l
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWRKU09OUDsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VPYmplY3Qg
PSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVudHJ5TmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZU9iamVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoW2ldLm1fcGF0aEVu
dHJ5TmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICAgICAgICAgICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2Fz
ZSBKU09OUFBhdGhFbnRyeVR5cGVMb29rdXA6IHsKICAgICAgICAgICAgICAgICAgICAgYmFzZU9i
amVjdCA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
T05QUGF0aFtpXS5tX3BhdGhJbmRleCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbEZy
YW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUu
ZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpAQCAt
ODk5LDI5ICs5MTAsMjkgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShQcm9ncmFtRXhl
YwogICAgICAgICAgICAgc3dpdGNoIChKU09OUFBhdGgubGFzdCgpLm1fdHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBKU09OUFBhdGhFbnRyeVR5cGVDYWxsOiB7CiAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBmdW5jdGlvbiA9IGJhc2VPYmplY3QuZ2V0KGNhbGxGcmFtZSwgSlNPTlBQYXRoLmxhc3Qo
KS5tX3BhdGhFbnRyeU5hbWUpOwotICAgICAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlmICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2Fs
bEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlTm90QUZ1bmN0aW9u
RXJyb3IoY2FsbEZyYW1lLCBmdW5jdGlvbikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25F
cnJvcihjYWxsRnJhbWUsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgTWFya2VkQXJndW1l
bnRCdWZmZXIganNvbkFyZzsKICAgICAgICAgICAgICAgICBqc29uQXJnLmFwcGVuZChKU09OUFZh
bHVlKTsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IEpTT05QUGF0aC5zaXpl
KCkgPT0gMSA/IGpzVW5kZWZpbmVkKCk6IGJhc2VPYmplY3Q7CiAgICAgICAgICAgICAgICAgSlNP
TlBWYWx1ZSA9IEpTQzo6Y2FsbChjYWxsRnJhbWUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHRoaXNWYWx1ZSwganNvbkFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxGcmFtZS0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKU09OUFBhdGhF
bnRyeVR5cGVEb3Q6IHsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LnB1dChjYWxsRnJhbWUs
IEpTT05QUGF0aC5sYXN0KCkubV9wYXRoRW50cnlOYW1lLCBKU09OUFZhbHVlLCBzbG90KTsKLSAg
ICAgICAgICAgICAgICBpZiAoY2FsbEZyYW1lLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAg
ICAgICBpZiAodGhyb3dTY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIEpTT05QUGF0aEVudHJ5VHlwZUxvb2t1cDogewogICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QucHV0QnlJbmRleChjYWxsRnJhbWUsIEpTT05QUGF0aC5sYXN0KCku
bV9wYXRoSW5kZXgsIEpTT05QVmFsdWUsIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwotICAgICAgICAg
ICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIGlm
ICh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTk0
MSwxOCArOTUyLDIwIEBAIGZhaWxlZEpTT05QOgogCiAgICAgLy8gQ29tcGlsZSBzb3VyY2UgdG8g
Ynl0ZWNvZGUgaWYgbmVjZXNzYXJ5OgogICAgIGlmIChKU09iamVjdCogZXJyb3IgPSBwcm9ncmFt
LT5pbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyh2bSwgY2FsbEZyYW1lLCBzY29wZSkpCi0gICAg
ICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihj
YWxsRnJhbWUsIGVycm9yKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93RXhj
ZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpKTsKIAogICAgIFByb2dyYW1Db2Rl
QmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9j
azsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVj
dXRpb248UHJvZ3JhbUV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVG
b3JDYWxsLCB0ZW1wQ29kZUJsb2NrKSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KGNhbGxGcmFtZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIGVycm9yKSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248UHJvZ3Jh
bUV4ZWN1dGFibGU+KGNhbGxGcmFtZSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCF0aHJvd1Njb3BlLmV4Y2VwdGlvbigpIHx8IHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0ganNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPihlcnJvcikp
OworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGVycm9yKSk7CiAgICAgICAgIGNv
ZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7CiAgICAg
fQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjYWxsRnJh
bWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihj
YWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAKICAgICBpZiAoc2NvcGUtPnN0cnVjdHVyZSgp
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQogICAgICAgICBzY29wZS0+ZmxhdHRlbkRpY3Rp
b25hcnlPYmplY3Qodm0pOwpAQCAtOTcxLDYgKzk4NCw4IEBAIGZhaWxlZEpTT05QOgogSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTT2JqZWN0
KiBmdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSwg
SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgVk0mIHZtID0g
Y2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeSgpKTsKICAgICBpZiAodm0uaXNDb2xsZWN0b3JCdXN5
KCkpCkBAIC05OTMsMTMgKzEwMDgsMTQgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVj
dCk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lLCB0aHJvd1Njb3BlKSk7CiAKICAgICBpZiAoaXNKU0NhbGwpIHsKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgY2FsbGVlOgogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0g
Y2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwg
c2NvcGUsIENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOworICAgICAgICBBU1NFUlQodGhyb3dT
Y29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGNvbXBpbGVF
cnJvcikpOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNh
bGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVy
bih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwog
CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+
bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTEwMDcsNyArMTAyMyw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKICAgICAgICAgbmV3Q29kZUJs
b2NrID0gMDsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
Y2FsbEZyYW1lKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNl
cHRpb24oY2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93U2NvcGUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUg
cHJvdG9DYWxsRnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGZ1
bmN0aW9uLCB0aGlzVmFsdWUsIGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTAxNSwxMSAr
MTAzMSwxMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlQ2FsbChDYWxsRnJhCiAgICAg
SlNWYWx1ZSByZXN1bHQ7CiAgICAgewogICAgICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgotICAg
ICAgICBpZiAoaXNKU0NhbGwpCisgICAgICAgIGlmIChpc0pTQ2FsbCkgewogICAgICAgICAgICAg
cmVzdWx0ID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
Rm9yQ2FsbCgpLT5leGVjdXRlKCZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSh2bUVudHJ5VG9OYXRpdmUocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKSwgJnZtLCAmcHJvdG9D
YWxsRnJhbWUpKTsKLSAgICAgICAgICAgIGlmIChjYWxsRnJhbWUtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICAgICAgaWYgKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0ganNOdWxsKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDMwLDEyICsxMDQ3LDE0
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKENhbGxGcmEKIEpTT2JqZWN0KiBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNPYmpl
Y3QqIGNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUsIGNvbnN0IENvbnN0
cnVjdERhdGEmIGNvbnN0cnVjdERhdGEsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3
VGFyZ2V0KQogewogICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghY2FsbEZyYW1l
LT5oYWRFeGNlcHRpb24oKSk7CiAgICAgQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAg
ICAgLy8gV2UgdGhyb3cgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugd2UgaGF2ZSB0byByZXR1cm4gc29t
ZXRoaW5nICJ2YWxpZCIgYnV0IHdlJ3JlCiAgICAgLy8gYWxyZWFkeSBpbiBhbiBpbnZhbGlkIHN0
YXRlLgogICAgIGlmICh2bS5pc0NvbGxlY3RvckJ1c3koKSkKLSAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKSk7CisgICAgICAgIHJl
dHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhy
b3dTY29wZSkpOwogCiAgICAgYm9vbCBpc0pTQ29uc3RydWN0ID0gKGNvbnN0cnVjdFR5cGUgPT0g
Q29uc3RydWN0VHlwZTo6SlMpOwogICAgIEpTU2NvcGUqIHNjb3BlID0gbnVsbHB0cjsKQEAgLTEw
NTQsMTMgKzEwNzMsMTMgQEAgSlNPYmplY3QqIEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0
KAogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpKTsKKyAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
LCB0aHJvd1Njb3BlKSk7CiAKICAgICBpZiAoaXNKU0NvbnN0cnVjdCkgewogICAgICAgICAvLyBD
b21waWxlIHRoZSBjYWxsZWU6CiAgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRXJyb3IgPSBjb25z
dHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KGNhbGxGcmFtZSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciksIHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2spOwogICAgICAgICBpZiAo
VU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1
cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9y
KSk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxs
RnJhbWUsIHRocm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogCiAgICAgICAgIEFTU0VSVCghIW5l
d0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNCZUlubGlu
ZWQgPSBmYWxzZTsKQEAgLTEwNjgsNyArMTA4Nyw3IEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6
ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICAgICAgbmV3Q29kZUJsb2NrID0gMDsKIAogICAgIGlmIChV
TkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9DYWxsRnJhbWU7CiAgICAg
cHJvdG9DYWxsRnJhbWUuaW5pdChuZXdDb2RlQmxvY2ssIGNvbnN0cnVjdG9yLCBuZXdUYXJnZXQs
IGFyZ3NDb3VudCwgYXJncy5kYXRhKCkpOwpAQCAtMTA5NSw2ICsxMTE0LDcgQEAgSlNPYmplY3Qq
IEludGVycHJldGVyOjpleGVjdXRlQ29uc3RydWN0KAogQ2FsbEZyYW1lQ2xvc3VyZSBJbnRlcnBy
ZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBQcm90b0NhbGxGcmFtZSogcHJvdG9DYWxs
RnJhbWUsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIEpTU2NvcGUqIHNjb3BlLCBKU1ZhbHVlKiBhcmdzKQogewogICAgIFZNJiB2bSA9ICpzY29w
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBBU1NFUlQoIXZtLmV4Y2VwdGlvbigpKTsKICAgICAKICAgICBpZiAodm0uaXNDb2xsZWN0
b3JCdXN5KCkpCkBAIC0xMTA0LDcgKzExMjQsNyBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVycHJl
dGVyOjpwcmVwYXJlRm9yCiAgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2s7CiAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBmdW5jdGlvbiwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOwogICAgIGlmIChlcnJvcikgewotICAgICAgICBjYWxsRnJhbWUtPnZtKCku
dGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBlcnJvcik7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4gQ2FsbEZyYW1l
Q2xvc3VyZSgpOwogICAgIH0KICAgICBuZXdDb2RlQmxvY2stPm1fc2hvdWxkQWx3YXlzQmVJbmxp
bmVkID0gZmFsc2U7CkBAIC0xMTIwLDcgKzExNDAsOCBAQCBDYWxsRnJhbWVDbG9zdXJlIEludGVy
cHJldGVyOjpwcmVwYXJlRm9yCiBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKENhbGxGcmFt
ZUNsb3N1cmUmIGNsb3N1cmUpIAogewogICAgIFZNJiB2bSA9ICpjbG9zdXJlLnZtOwotICAgIAor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQVNT
RVJUKCF2bS5pc0NvbGxlY3RvckJ1c3koKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uY3VycmVu
dFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7CiAgICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeSgp
KQpAQCAtMTEyOSw3ICsxMTUwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxs
RnJhbWVDbAogICAgIFN0YWNrU3RhdHM6OkNoZWNrUG9pbnQgc3RhY2tDaGVja1BvaW50OwogCiAg
ICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJtaW5hdGlvbihjbG9zdXJlLm9sZENh
bGxGcmFtZSkpKQotICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0
aW9uKGNsb3N1cmUub2xkQ2FsbEZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRl
ZEV4ZWN1dGlvbkV4Y2VwdGlvbihjbG9zdXJlLm9sZENhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAK
ICAgICAvLyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2xvc3VyZS5m
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCktPmV4ZWN1dGUoJnZt
LCBjbG9zdXJlLnByb3RvQ2FsbEZyYW1lKTsKQEAgLTExNDAsNyArMTE2MSw4IEBAIEpTVmFsdWUg
SW50ZXJwcmV0ZXI6OmV4ZWN1dGUoQ2FsbEZyYW1lQ2wKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNTY29wZSogc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gKnNjb3BlLT52bSgp
OwotICAgIAorICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgQVNTRVJUKHNjb3BlLT52bSgpID09ICZjYWxsRnJhbWUtPnZtKCkpOwogICAgIEFTU0VS
VCghdm0uZXhjZXB0aW9uKCkpOwogICAgIEFTU0VSVCghdm0uaXNDb2xsZWN0b3JCdXN5KCkpOwpA
QCAtMTE1MCw3ICsxMTcyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhl
Y3V0YQogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHNjb3BlLT5nbG9iYWxPYmpl
Y3QoKSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUpKTsgICAgICAgIAorICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKIAogICAgIHVuc2lnbmVkIG51bVZh
cmlhYmxlcyA9IGV2YWwtPm51bVZhcmlhYmxlcygpOwogICAgIGludCBudW1GdW5jdGlvbnMgPSBl
dmFsLT5udW1iZXJPZkZ1bmN0aW9uRGVjbHMoKTsKQEAgLTExODEsNyArMTIwMyw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGEKICAgICAgICAgQ29kZUJsb2NrKiB0
ZW1wQ29kZUJsb2NrOwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXZhbC0+cHJl
cGFyZUZvckV4ZWN1dGlvbjxFdmFsRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBudWxscHRyLCBzY29w
ZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwogICAgICAgICBpZiAoVU5MSUtFTFkoISFj
b21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZyYW1l
LT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENv
ZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIApAQCAtMTE5Miw3ICsxMjE0LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPnZhcmlhYmxlKGkpOwogICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgICAgIGlmIChKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbExleGljYWxF
bnZpcm9ubWVudCwgY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VTdHJpbmco
IkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJp
bmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2Vk
UmV0dXJuKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSwgbWFrZVN0cmluZygi
Q2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmlu
ZyhpZGVudC5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAt
MTIwMCw3ICsxMjIyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0
YQogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKGkpOwogICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKICAgICAgICAgICAgIGlmIChKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudDo6Z2V0T3du
UHJvcGVydHlTbG90KGdsb2JhbExleGljYWxFbnZpcm9ubWVudCwgY2FsbEZyYW1lLCBmdW5jdGlv
bi0+bmFtZSgpLCBzbG90KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxp
Y2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhmdW5jdGlvbi0+bmFtZSgp
LmltcGwoKSksICInIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNy
ZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoZnVuY3Rp
b24tPm5hbWUoKS5pbXBsKCkpLCAiJyIpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMjI5LDcgKzEyNTEsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2
YWxFeGVjdXRhCiAgICAgfQogCiAgICAgaWYgKFVOTElLRUxZKHZtLnNob3VsZFRyaWdnZXJUZXJt
aW5hdGlvbihjYWxsRnJhbWUpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1
dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUpOworICAgICAgICByZXR1cm4gdGhyb3dUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKGNhbGxGcmFtZSwgdGhyb3dTY29wZSk7CiAKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAndGhp
cycuCiAKQEAgLTEyNDUsNiArMTI2Nyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGEKIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9kdWxlUHJvZ3JhbUV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU01vZHVsZUVudmly
b25tZW50KiBzY29wZSkKIHsKICAgICBWTSYgdm0gPSAqc2NvcGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBBU1NFUlQoc2NvcGUt
PnZtKCkgPT0gJmNhbGxGcmFtZS0+dm0oKSk7CiAgICAgQVNTRVJUKCF2bS5leGNlcHRpb24oKSk7
CkBAIC0xMjU1LDE5ICsxMjc4LDE5IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoTW9k
dWxlUHJvZ3IKIAogICAgIFZNRW50cnlTY29wZSBlbnRyeVNjb3BlKHZtLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCkpOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkK
LSAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKSk7CisgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dTY29wZSkpOwogCiAgICAgTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogY29kZUJsb2NrOwogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiB0ZW1wQ29kZUJsb2Nr
OwogICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gZXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4oY2FsbEZyYW1lLCBudWxscHRyLCBz
Y29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwogICAgICAgICBpZiAoVU5MSUtFTFko
ISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY2FsbEZy
YW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY29tcGlsZUVycm9yKSk7CisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsIHRo
cm93U2NvcGUsIGNvbXBpbGVFcnJvcikpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwogICAgIH0KIAogICAgIGlmIChV
TkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24oY2FsbEZyYW1lKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oY2FsbEZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihjYWxsRnJhbWUs
IHRocm93U2NvcGUpOwogCiAgICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGFja092CiB7CiAgICAgLy8gV2UgcGFzcyBpbiBvdXIgb3duIGNv
ZGUgYmxvY2ssIGJlY2F1c2UgdGhlIGNhbGxmcmFtZSBoYXNuJ3QgYmVlbiBwb3B1bGF0ZWQuCiAg
ICAgVk0qIHZtID0gY29kZUJsb2NrLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CiAKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFtZSA9IHZtLT50
b3BWTUVudHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNhbGxl
ckZyYW1lKHZtRW50cnlGcmFtZSk7CkBAIC05OCw0MyArOTksNDggQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgIH0KIAogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0g
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpOworICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lLCBzY29wZSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3dEaXZpZGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIFZNRW50cnlGcmFtZSogdm1FbnRy
eUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1l
ID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKIAogICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7
CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKLSAgICB2bS0+dGhyb3dF
eGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBBU0NJSUxpdGVy
YWwoIkRpdmlzaW9uIGJ5IHplcm8gb3IgZGl2aXNpb24gb3ZlcmZsb3cuIikpKTsKKyAgICB0aHJv
d0V4Y2VwdGlvbihjYWxsZXJGcmFtZSwgc2NvcGUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBB
U0NJSUxpdGVyYWwoIkRpdmlzaW9uIGJ5IHplcm8gb3IgZGl2aXNpb24gb3ZlcmZsb3cuIikpKTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93T3V0T2ZCb3VuZHNBY2Nlc3NF
cnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIFZNRW50cnlGcmFt
ZSogdm1FbnRyeUZyYW1lID0gdm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNh
bGxlckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKIAogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxs
ZXJGcmFtZSk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUoKnZtKTsKLSAgICB2
bS0+dGhyb3dFeGNlcHRpb24oY2FsbGVyRnJhbWUsIGNyZWF0ZUVycm9yKGNhbGxlckZyYW1lLCBB
U0NJSUxpdGVyYWwoIk91dC1vZi1ib3VuZHMgYWNjZXNzLiIpKSk7CisgICAgdGhyb3dFeGNlcHRp
b24oY2FsbGVyRnJhbWUsIHNjb3BlLCBjcmVhdGVFcnJvcihjYWxsZXJGcmFtZSwgQVNDSUlMaXRl
cmFsKCJPdXQtb2YtYm91bmRzIGFjY2Vzcy4iKSkpOwogfQogI2VuZGlmCiAKIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjayhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKIAogICAgIGludDMyX3QgbWlzc2luZ0FyZ0NvdW50ID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICp2bSwgQ29kZUZvckNhbGwpOwogICAgIGlmIChtaXNz
aW5nQXJnQ291bnQgPCAwKSB7CiAgICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0g
dm0tPnRvcFZNRW50cnlGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4
ZWMtPmNhbGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlcldpdGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0g
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUsIHNjb3BlKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gbWlzc2luZ0FyZ0NvdW50OwpAQCAtMTQzLDEzICsxNDksMTQgQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxBcml0eQogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2soRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7
CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChtaXNzaW5nQXJn
Q291bnQgPCAwKSB7CiAgICAgICAgIFZNRW50cnlGcmFtZSogdm1FbnRyeUZyYW1lID0gdm0tPnRv
cFZNRW50cnlGcmFtZTsKICAgICAgICAgQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSA9IGV4ZWMtPmNh
bGxlckZyYW1lKHZtRW50cnlGcmFtZSk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcldp
dGhSZXN0b3JlIHRyYWNlcih2bSwgdm1FbnRyeUZyYW1lLCBjYWxsZXJGcmFtZSk7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxlckZyYW1lKTsKKyAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUsIHNjb3BlKTsKICAgICB9CiAKICAgICByZXR1cm4g
bWlzc2luZ0FyZ0NvdW50OwpAQCAtMjU0LDkgKzI2MSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7Ci0gICAgCisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIGlmICghYmFzZS0+aXNP
YmplY3QoKSkgewotICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxp
ZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVyRXJyb3IoZXhlYywgYmFzZSkpOwog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAg
ICAKQEAgLTI4MywxMSArMjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSW4KICAgICAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAgICAKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSgqdm0pOworCiAgICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRy
dWU7CiAKICAgICBpZiAoIWJhc2UtPmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdm0tPnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsK
KyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFt
ZXRlckVycm9yKGV4ZWMsIGJhc2UpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICB9CiAKQEAgLTc5NCw2ICs4MDMsNyBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgZXhlY0NhbGxlZS0+
c2V0Q29kZUJsb2NrKDApOwogCkBAIC04MTksNyArODI5LDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgICAgICB9CiAgICAgCiAgICAgICAgIEFTU0VSVChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihl
eGVjLCBjYWxsZWUpKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAg
IHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvciku
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsKQEAgLTg0Niw3ICs4NTYsNyBAQCBzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsCiAgICAgfQogICAgIAogICAgIEFTU0VSVChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpOwotICAgIGV4ZWMtPnZtKCkudGhyb3dF
eGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7
CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVy
cm9yKGV4ZWMsIGNhbGxlZSkpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgIHZt
LT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KEtlZXBUaGVGcmFtZSkpOwpAQCAtODU2LDYgKzg2Niw4IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpOwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKKwogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCA9IGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAgICAgCkBAIC04NjUsNiAr
ODc3LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNhY2hlIHRoZXNlIGtpbmRzIG9mIGNhbGxzLiBUaGV5IGNh
biBiZSBjb21tb24gYW5kIGN1cnJlbnRseSB0aGV5IGFyZQogICAgICAgICAvLyBleHBlbnNpdmUu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ0
NTgKKyAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVI
b3N0Q2FsbChleGVjQ2FsbGVlLCBjYWxsZWVBc1ZhbHVlLCBjYWxsTGlua0luZm8pOwogICAgIH0K
IApAQCAtODkyLDcgKzkwNSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGkKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBp
ZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHko
KSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
ZXhlYywgY2FsbGVlKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKICAgICAgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIo
dGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVw
VGhlRnJhbWUpKTsKQEAgLTkwMCw4ICs5MTMsOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4
ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICBKU09iamVjdCogZXJyb3Ig
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPihleGVjQ2FsbGVlLCBjYWxsZWUsIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7Cisg
ICAgICAgIEFTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IHJlaW50ZXJwcmV0X2Nhc3Q8
RXhjZXB0aW9uKj4oZXJyb3IpKTsKICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoCiAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwK
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihLZWVwVGhlRnJhbWUpKTsK
QEAgLTkyNyw2ICs5NDEsOCBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JX
aXRoCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKCp2bSk7CisKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQgPSBj
YWxsTGlua0luZm8tPnNwZWNpYWxpemF0aW9uS2luZCgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOwogCkBAIC05NDcsNyArOTYzLDcgQEAgaW5saW5lIFNsb3dQ
YXRoUmV0dXJuVHlwZSB2aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjdXRhYmxlKTsKIAogICAgICAgICAgICAgaWYgKCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkgPT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fu
bm90Q29uc3RydWN0KSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOworICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dF
eGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRo
ZUZyYW1lKSk7CkBAIC05NTYsNyArOTcyLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2
aXJ0dWFsRm9yV2l0aAogICAgICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2NrU2xvdCA9IGV4
ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwogICAgICAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oZXhlY0NhbGxlZSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xv
dCk7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCB0aHJvd1Njb3BlLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdldENUSVN0dWIodGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZy
YW1lKSk7CkBAIC05NjQsNyArOTgwLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSB2aXJ0
dWFsRm9yV2l0aAogICAgICAgICB9IGVsc2UgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICAgICAgICAgIGlmICghaXNDYWxsKGtpbmQpKSB7Ci0gICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBm
dW5jdGlvbikpOworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgdm0tPmdl
dENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwKICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkBAIC0xMTM5LDkgKzExNTUsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBSZWdFeHAqIHJlZ2V4cCA9IHN0YXRpY19j
YXN0PFJlZ0V4cCo+KHJlZ2V4cFB0cik7CiAgICAgaWYgKCFyZWdleHAtPmlzVmFsaWQoKSkgewot
ICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBy
ZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdleHAtPmVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCkBA
IC0xMTU2LDkgKzExNzQsMTAgQEAgVW51c2VkUHRyIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFu
ZGxlVwogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSh2bS5zaG91bGRUcmlnZ2VyVGVybWluYXRpb24o
ZXhlYykpKQotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbigmdm0pKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtMTE2NywxMyArMTE4NiwxNSBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVGhyb3dTdGF0aWNFCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBlcnJvck1lc3NhZ2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGVycm9yTWVzc2FnZVZhbHVlLmlzU3RyaW5nKCkpOwogICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSBhc1N0cmluZyhlcnJvck1lc3NhZ2VWYWx1ZSktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChyZWZl
cmVuY2VFcnJvckZsYWcpCi0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7
CiAgICAgZWxzZQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSogZXhlYywgaW50MzJf
dCBkZWJ1Z0hvb2tJRCkKQEAgLTE4NzEsMTMgKzE4OTIsMTQgQEAgc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uRGVsZXRlQnlJZAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIWJhc2VP
YmopCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
ai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tVWlkKCZ2bSwgdWlkKSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIApAQCAtMTg5MCw2ICsx
OTEyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKS50b09i
amVjdChleGVjKTsKICAgICBKU1ZhbHVlIGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5
KTsKQEAgLTE5MDksNyArMTkzMiw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRl
bGV0ZUJ5VmEKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsIHByb3BlcnR5KTsKICAgICB9CiAgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgIHJldHVybiBjb3VsZERl
bGV0ZTsKIH0KIApAQCAtMjAyNiw2ICsyMDQ5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKICAgICBJbnN0cnVjdGlvbiogcGMgPSBieXRlY29kZVBDOwogCkBA
IC0yMDM5LDcgKzIwNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzY29wZS0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1
ZSB7CiAgICAgICAgIGlmICghZm91bmQpIHsKICAgICAgICAgICAgIGlmIChnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kKQotICAgICAgICAgICAgICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVh
dGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7CiAgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQogCkBAIC0yMDQ4LDcgKzIwNzMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyBXaGVu
IHdlIGNhbid0IHN0YXRpY2FsbHkgcHJvdmUgd2UgbmVlZCBhIFREWiBjaGVjaywgd2UgbXVzdCBw
ZXJmb3JtIHRoZSBjaGVjayBvbiB0aGUgc2xvdyBwYXRoLgogICAgICAgICAgICAgcmVzdWx0ID0g
c2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IGpz
VERaVmFsdWUoKSkgewotICAgICAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVj
LCB0aHJvd1Njb3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIwNjUsNiAr
MjA5MCw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEluc3RydWN0aW9uKiBwYyA9IGJ5dGVjb2RlUEM7CiAKICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwpAQCAtMjA5MiwyMCArMjExOSwyMCBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KHNjb3BlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
ICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQ6OmdldE93blByb3BlcnR5U2xvdChz
Y29wZSwgZXhlYywgaWRlbnQsIHNsb3QpOwogICAgICAgICBpZiAoc2xvdC5nZXRWYWx1ZShleGVj
LCBpZGVudCkgPT0ganNURFpWYWx1ZSgpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChnZXRQdXRJbmZvLnJl
c29sdmVNb2RlKCkgPT0gVGhyb3dJZk5vdEZvdW5kICYmICFoYXNQcm9wZXJ0eSkgewotICAgICAg
ICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoZXhlYywgaWRlbnQpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dT
Y29wZSwgY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2NvcGUsIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCksIFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQsIGlz
SW5pdGlhbGl6YXRpb24oZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSkpOwogICAgIHNj
b3BlLT5tZXRob2RUYWJsZSgpLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgc2xvdCk7
CiAgICAgCi0gICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCisgICAgaWYgKHZtLmV4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBDb21tb25TbG93UGF0aHM6OnRyeUNhY2hl
UHV0VG9TY29wZUdsb2JhbChleGVjLCBjb2RlQmxvY2ssIHBjLCBzY29wZSwgZ2V0UHV0SW5mbywg
c2xvdCwgaWRlbnQpOwpAQCAtMjExNSw5ICsyMTQyLDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRXhjZXB0aW9uVmFsdWUpOwotICAgIHZtLT50aHJvd0V4
Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGV4Y2VwdGlvblZhbHVlKTsKIAogICAgIC8vIFJlc3VsdHMgc3RvcmVkIG91dC1vZi1i
YW5kIGluIHZtLnRhcmdldE1hY2hpbmVQQ0ZvclRocm93ICYgdm0uY2FsbEZyYW1lRm9yQ2F0Y2gK
ICAgICBnZW5lcmljVW53aW5kKHZtLCBleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjUsNyArNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAog
I2RlZmluZSBMTElOVF9CRUdJTl9OT19TRVRfUEMoKSBcCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsgICAgICBcCi0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpCisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOyBcCisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSkKIAogI2lmbmRlZiBOREVCVUcKICNk
ZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVCUygpIGRvIHsgXApAQCAtOTIsMTQgKzkzLDE0IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogI2RlZmluZSBMTElOVF9FTkRfSU1Q
TCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIDApCiAKICNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7
ICAgICAgIFwKICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAog
I2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIGRvRXhjZXB0aW9uRnV6emluZ0lmRW5hYmxlZChleGVjLCAiTExJbnRTbG93UGF0
aHMiLCBwYyk7ICAgIFwKLSAgICAgICAgaWYgKFVOTElLRUxZKHZtLmV4Y2VwdGlvbigpKSkgeyAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRp
b24oKSkpIHsgICAgICAgICBcCiAgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYyk7
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNTIsNyArMTUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CiAKICNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBl
eGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgRXhlY1N0
YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oX19jdF9leGVjLCBleGNlcHRpb25Ub1Rocm93
KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oX19jdF9leGVjLCB0
aHJvd1Njb3BlLCBleGNlcHRpb25Ub1Rocm93KTsgICAgICAgIFwKICAgICAgICAgTExJTlRfQ0FM
TF9FTkRfSU1QTCgwLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMpKTsgICAgICAgICAgICAgICAgIFwK
ICAgICB9IHdoaWxlIChmYWxzZSkKIApAQCAtMTYwLDcgKzE2MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgewogICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUq
IF9fY2NlX2V4ZWNDYWxsZWUgPSAoZXhlY0NhbGxlZSk7ICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICBkb0V4Y2VwdGlvbkZ1enppbmdJZkVuYWJsZWQoX19jY2VfZXhlYywgIkxMSW50U2xv
d1BhdGhzL2NhbGwiLCBudWxscHRyKTsgXAotICAgICAgICBpZiAoVU5MSUtFTFkodm0uZXhjZXB0
aW9uKCkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTCgwLCBjYWxsVG9UaHJvdyhfX2Nj
ZV9leGVjQ2FsbGVlKSk7ICAgICAgXAogICAgIH0gd2hpbGUgKGZhbHNlKQogCkBAIC00NjYsNiAr
NDY3LDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wocmVwbGFjZSkKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHN0YWNrX2NoZWNrKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBWTUVudHJ5RnJhbWUq
IHZtRW50cnlGcmFtZSA9IHZtLnRvcFZNRW50cnlGcmFtZTsKICAgICBDYWxsRnJhbWUqIGNhbGxl
ckZyYW1lID0gZXhlYy0+Y2FsbGVyRnJhbWUodm1FbnRyeUZyYW1lKTsKICAgICBpZiAoIWNhbGxl
ckZyYW1lKSB7CkBAIC00ODIsOSArNDg1LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc3RhY2tf
Y2hlY2spCiAgICAgZGF0YUxvZ0YoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVMb2NhbHMpOwogICAgIGRhdGFMb2dGKCJOdW0gdmFy
cyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CiAKLSAgICBkYXRhTG9n
RigiQ3VycmVudCBPUyBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLnNvZnRTdGFj
a0xpbWl0KCkpOworICAgIGRhdGFMb2dGKCJDdXJyZW50IE9TIHN0YWNrIGVuZCBpcyBhdCAlcC5c
biIsIHZtLnNvZnRTdGFja0xpbWl0KCkpOwogI2lmICFFTkFCTEUoSklUKQotICAgIGRhdGFMb2dG
KCJDdXJyZW50IEMgTG9vcCBzdGFjayBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT52bSgpLmNsb29w
U3RhY2tMaW1pdCgpKTsKKyAgICBkYXRhTG9nRigiQ3VycmVudCBDIExvb3Agc3RhY2sgZW5kIGlz
IGF0ICVwLlxuIiwgdm0uY2xvb3BTdGFja0xpbWl0KCkpOwogI2VuZGlmCiAKICNlbmRpZgpAQCAt
NTAyLDcgKzUwNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogI2VuZGlm
CiAKICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7Ci0gICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbGVyRnJhbWUpOworICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxlckZyYW1lLCB0aHJvd1Njb3BlKTsKICAgICBwYyA9IHJldHVyblRvVGhyb3coY2FsbGVy
RnJhbWUpOwogICAgIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpOwogfQpAQCAtNzg0LDEwICs3
ODcsMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZAogICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKIH0KIAotaW5saW5lIEpTVmFsdWUg
Z2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldEJ5VmFsKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCiB7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKExJS0VM
WShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7Ci0gICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJh
c2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKEpTQ2VsbDo6Y2Fu
VXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKICAgICAgICAgICAgIGlmIChSZWZQ
dHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBhc1N0cmluZyhzdWJz
Y3JpcHQpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKGV4ZWMpKSB7CkBAIC04MDYsMTAgKzgxMCwx
MCBAQCBpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsCiAgICAgfQogCiAg
ICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoc2Nv
cGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIHJldHVy
biBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKIH0KQEAgLTgxNyw3ICs4MjEsNyBAQCBp
bmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsCiBMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwotICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwodm0sIGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOwogfQogCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKQEAgLTgyNyw2ICs4MzEsNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhCiAgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKTsKICAgICAKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CkBAIC04
MzUsMTYgKzg0MCwxNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
CiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAg
ICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5k
ZXgob2JqZWN0LCBleGVjLCBpLCB2YWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBleGVjLCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgICAgIExMSU5U
X0VORCgpOwogICAgICAgICB9Ci0gICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGV4ZWMsIGks
IHZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICBiYXNl
VmFsdWUucHV0QnlJbmRleChleGVjLCBpLCB2YWx1ZSwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAg
TExJTlRfRU5EKCk7CiAgICAgfQogCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGV4ZWMpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwotICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIGlzU3RyaWN0TW9kZSk7
CiAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIExM
SU5UX0VORCgpOwogfQpAQCAtMTE4Niw2ICsxMTkxLDcgQEAgc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBoYW5kbGVIb3N0Q2FsbAogICAgIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKICAgICBleGVjQ2FsbGVlLT5jbGVhclJldHVyblBDKCk7CkBAIC0xMjM4
LDE4ICsxMjQ0LDIwIEBAIHN0YXRpYyBTbG93UGF0aFJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwK
IGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCiB7CiAg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nRigiUGVy
Zm9ybWluZyBjYWxsIHdpdGggcmVjb3JkZWQgUEMgPSAlcFxuIiwgZXhlYy0+Y3VycmVudFZQQygp
KTsKICNlbmRpZgogICAgIAogICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRK
U0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwotICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkgeworICAgICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBj
YWxsZWVBc1ZhbHVlLCBraW5kKTsKLSAgICAKKyAgICB9CiAgICAgSlNGdW5jdGlvbiogY2FsbGVl
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CiAgICAgSlNTY29w
ZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7Ci0gICAgVk0mIHZtID0gKnNjb3Bl
LT52bSgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRh
YmxlKCk7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKQEAgLTEzMzUsMTIg
KzEzNDMsMTQgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeAogTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGwpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9f
U0VUX1BDKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGdlbmVyaWND
YWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7CiB9CiAKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3QpCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ29uc3RydWN0KTsKIH0KIApAQCAtMTQ5OCw2ICsxNTA4LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2RlYnVnKQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2hhbmRsZV9leGNlcHRpb24pCiB7CiAgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGdlbmVyaWNVbndpbmQoJnZtLCBleGVjKTsK
ICAgICBMTElOVF9FTkRfSU1QTCgpOwogfQpAQCAtMTUwNSw3ICsxNTE2LDYgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2hhbmRsZV9leAogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2dldF9mcm9tX3Njb3BlKQogewogICAgIExMSU5UX0JFR0lOKCk7Ci0KICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNd
LnUub3BlcmFuZCk7CiAgICAgSlNPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTT2JqZWN0Kj4oTExJ
TlRfT1AoMikuanNWYWx1ZSgpKTsKICAgICBHZXRQdXRJbmZvIGdldFB1dEluZm8ocGNbNF0udS5v
cGVyYW5kKTsKQEAgLTE1MTYsNyArMTUyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfZnJvbV8KICAgICBMTElOVF9SRVRVUk4oc2NvcGUtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFs
dWUgewogICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgICBpZiAoZ2V0UHV0SW5mby5y
ZXNvbHZlTW9kZSgpID09IFRocm93SWZOb3RGb3VuZCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpKTsKICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICB9CiAKQEAg
LTE1MjUsNyArMTUzNSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfZnJv
bV8KICAgICAgICAgICAgIC8vIFdoZW4gd2UgY2FuJ3Qgc3RhdGljYWxseSBwcm92ZSB3ZSBuZWVk
IGEgVERaIGNoZWNrLCB3ZSBtdXN0IHBlcmZvcm0gdGhlIGNoZWNrIG9uIHRoZSBzbG93IHBhdGgu
CiAgICAgICAgICAgICByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0ganNURFpWYWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOwogICAgICAgICB9CiAKICAgICAgICAgQ29tbW9uU2xvd1Bh
dGhzOjp0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbChleGVjLCB2bSwgcGMsIHNjb3BlLCBzbG90
LCBpZGVudCk7CkBAIC0xNTgyLDkgKzE1OTIsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X3RvX3NjCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaWZf
ZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghIXZtLmV4Y2VwdGlvbigpKTsKKyAgICBS
RUxFQVNFX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih2bS5leGNlcHRpb24oKSkpCisgICAgaWYgKGlzVGVy
bWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbih0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhwYywgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSk7CiAgICAgTExJTlRfUkVUVVJOX1RXTyhwYywgMCk7CiB9CkBAIC0xNjE5
LDkgKzE2MjksMTEgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKCp2bSk7CisKICAgICBpZiAoIWV4ZWMpCiAgICAgICAgIGV4ZWMgPSBwcm90b0Zy
YW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
MyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKgpAQCAtNzMsMTggKzczLDIwIEBAIHZv
aWQgQXJyYXlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotSlNPYmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMs
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqIHByb2ZpbGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgbGVuZ3RoLCBKU1ZhbHVlIG5ld1RhcmdldCkKK0pTVmFsdWUgY29uc3Ry
dWN0QXJyYXlXaXRoU2l6ZVF1aXJrKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZSogcHJvZmlsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZW5n
dGgsIEpTVmFsdWUgbmV3VGFyZ2V0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmICghbGVuZ3RoLmlz
TnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheU5lZ2F0aXZlSW5kZXhlZChl
eGVjLCBwcm9maWxlLCBnbG9iYWxPYmplY3QsICZsZW5ndGgsIDEsIG5ld1RhcmdldCk7CiAgICAg
CiAgICAgdWludDMyX3QgbiA9IGxlbmd0aC50b1VJbnQzMihleGVjKTsKICAgICBpZiAobiAhPSBs
ZW5ndGgudG9OdW1iZXIoZXhlYykpCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBcnJheSBz
aXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiIpKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIikpKTsKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBwcm9m
aWxlLCBnbG9iYWxPYmplY3QsIG4sIG5ld1RhcmdldCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNP
YmplY3QqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQorc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xp
c3QmIGFyZ3MsIEpTVmFsdWUgbmV3VGFyZ2V0KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmpl
Y3QoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDgsIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIlByb3h5T2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNjAsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBDYWxsVHlwZSBn
ZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOwogfTsKIAotSlNPYmplY3QqIGNvbnN0cnVj
dEFycmF5V2l0aFNpemVRdWlyayhFeGVjU3RhdGUqLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxlbmd0aCwgSlNWYWx1ZSBwcm90b3R5cGUgPSBKU1Zh
bHVlKCkpOworSlNWYWx1ZSBjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoRXhlY1N0YXRlKiwg
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgs
IEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKik7CiAKQEAgLTY4LDYgKzY5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheUNvbnN0cgogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNh
cnJheQogaW5saW5lIGJvb2wgaXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYXJndW1l
bnRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghYXJndW1lbnRWYWx1ZS5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgxLDcgKzg1LDcgQEAgaW5saW5lIGJv
b2wgaXNBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTVgogCiAgICAgICAgIFByb3h5T2JqZWN0KiBw
cm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGFyZ3VtZW50KTsKICAgICAgICAgaWYgKHByb3h5
LT5pc1Jldm9rZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94eSB0aGF0IGhh
cyBiZWVuIHJldm9rZWQiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQgb24gYSBQcm94
eSB0aGF0IGhhcyBiZWVuIHJldm9rZWQiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgYXJndW1lbnQgPSBwcm94eS0+dGFyZ2V0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsOSBAQCBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluCiB0ZW1wbGF0ZTxKU0FycmF5OjpTaGlmdENvdW50
TW9kZSBzaGlmdENvdW50TW9kZT4KIHZvaWQgc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iaiwgdW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2ln
bmVkIHJlc3VsdENvdW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
RUxFQVNFX0FTU0VSVChjdXJyZW50Q291bnQgPiByZXN1bHRDb3VudCk7CiAgICAgdW5zaWduZWQg
Y291bnQgPSBjdXJyZW50Q291bnQgLSByZXN1bHRDb3VudDsKIApAQCAtMjg2LDE0ICsyODksMTQg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogICAgICAgICAgICAg
dGhpc09iai0+cHV0QnlJbmRleElubGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0
eS4iKSk7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgewotICAg
ICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgayAtIDEpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwor
ICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDIsNiArMzA1LDkg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogdGVtcGxhdGU8SlNB
cnJheTo6U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CiB2b2lkIHVuc2hpZnQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgdW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBj
dXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENvdW50LCB1bnNpZ25lZCBsZW5ndGgpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHRDb3VudCA+IGN1cnJlbnRDb3Vu
dCk7CiAgICAgdW5zaWduZWQgY291bnQgPSByZXN1bHRDb3VudCAtIGN1cnJlbnRDb3VudDsKIApA
QCAtMzEwLDcgKzMxNiw3IEBAIHZvaWQgdW5zaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiAKIAogICAgIC8vIEd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuCiAgICAgaWYgKGNvdW50ID4gKFVJ
TlRfTUFYIC0gbGVuZ3RoKSkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTMyNyw4ICszMzMsOCBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogCiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpc09iai0+cHV0QnlJbmRl
eElubGluZShleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlz
T2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBA
IC0zNjEsNyArMzY3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RgogICAgICAgICBjdXN0b21Kb2luQ2FzZSA9IHRydWU7CiAKICAgICBpZiAoVU5MSUtFTFkoY3Vz
dG9tSm9pbkNhc2UpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7
CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUg
YW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgogICAgIGlmICghaXNKU0FycmF5KHRoaXNPYmpl
Y3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlOjpIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5mdW5j
dGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCkBAIC02NzQsNiArNjgwLDkgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jUG9wKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMs
IFN0cmljdE1vZGUpOwogCiAgICAgaWYgKGlzSlNBcnJheSh0aGlzVmFsdWUpKQpAQCAtNjk0LDgg
KzcwMyw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAg
ICAgcmVzdWx0ID0gdGhpc09iai0+Z2V0KGV4ZWMsIGxlbmd0aCAtIDEpOwogICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFi
bGUodm0pLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkp
IHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQogICAgICAgICBwdXRMZW5ndGgo
ZXhlYywgdGhpc09iaiwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwpAQCAtNzQwLDExICs3NDksMTMg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNW
YWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAo
IXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
IAotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2V0TGVu
Z3RoKGV4ZWMsIHRoaXNPYmplY3QpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTgxMiw3ICs4MjMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqZWN0LCBleGVjLCBsb3dlcikpIHsKICAgICAgICAgICAgIGlmICghdm0uZXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
KTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICAg
ICAgfQogCkBAIC04MjIsNyArODMzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgdXBwZXIpKSB7CiAgICAgICAg
ICAgICBpZiAoIXZtLmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC05MDIsNiArOTEzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgIC8vIDE1LjQuNC4x
MgogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBKU09iamVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1
ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoIXRo
aXNPYmopCkBAIC05NjYsNyArOTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
VW5kZWNpZGVkKSwgZGVsZXRlQ291bnQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgayA9IDA7IGsgPCBkZWxldGVDb3VudDsgKytrKSB7CiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZSB2ID0gZ2V0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgayArIGJlZ2luKTsKQEAg
LTExMjMsNiArMTEzNSw4IEBAIHN0YXRpYyBib29sIG1vdmVFbGVtZW50cyhFeGVjU3RhdGUqIGV4
ZWMKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbmNhdEFwcGVuZE9uZShFeGVjU3RhdGUqIGV4
ZWMsIFZNJiB2bSwgSlNBcnJheSogZmlyc3QsIEpTVmFsdWUgc2Vjb25kKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVCghaXNKU0FycmF5
KHNlY29uZCkpOwogICAgIEFTU0VSVCghc2hvdWxkVXNlU2xvd1B1dChmaXJzdC0+aW5kZXhpbmdU
eXBlKCkpKTsKICAgICBCdXR0ZXJmbHkqIGZpcnN0QnV0dGVyZmx5ID0gZmlyc3QtPmJ1dHRlcmZs
eSgpOwpAQCAtMTEzNSw3ICsxMTQ5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNvbmNhdEFw
cGVuZE9uZShFeAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24odHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6Y3JlYXRlKHZtLCBy
ZXN1bHRTdHJ1Y3R1cmUsIGZpcnN0QXJyYXlTaXplICsgMSk7CiAgICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICghcmVzdWx0LT5hcHBlbmRNZW1jcHkoZXhlYywgdm0s
IDAsIGZpcnN0KSkgewogICAgICAgICBpZiAoIW1vdmVFbGVtZW50cyhleGVjLCB2bSwgcmVzdWx0
LCAwLCBmaXJzdCwgZmlyc3RBcnJheVNpemUpKSB7CkBAIC0xMTU0LDYgKzExNjgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9QCiB7CiAgICAgQVNTRVJUKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTQXJyYXkqIGZpcnN0
QXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKIApA
QCAtMTE5Nyw3ICsxMjEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvUAogICAgIFN0cnVjdHVyZSogcmVzdWx0U3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
dHlwZSk7CiAgICAgSlNBcnJheSogcmVzdWx0ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgcmVzdWx0U3RydWN0dXJlLCBmaXJzdEFycmF5U2l6ZSArIHNlY29uZEFycmF5U2l6
ZSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICh0eXBlID09
IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICBkb3VibGUqIGJ1ZmZlciA9IHJlc3VsdC0+YnV0
dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjgsNiArNjgsNyBAQCB2b2lk
IEJvb2xlYW5Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoKnZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICh0aGlzVmFsdWUgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh2bS0+c21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCkpOwpAQCAtNzYsNyAr
NzcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy50cnVlU3RyaW5nKCkpOwog
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoQm9vbGVhbk9iamVjdDo6aW5mbygpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIGlmIChhc0Jvb2xlYW5PYmplY3QodGhp
c1ZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodm0tPnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKQEAg
LTg3LDEyICs4OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3RvRnVuY1ZhbHVlT2Yo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKHRoaXNWYWx1ZS5pc0Jvb2xlYW4oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aGlzVmFsdWUpOwogCiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoQm9vbGVh
bk9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNCb29sZWFuT2JqZWN0KHRoaXNWYWx1ZSktPmludGVybmFs
VmFsdWUoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDcgKzkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEVORF9JTVBMKCkgUkVUVVJOX1RX
TyhwYywgZXhlYykKIAogI2RlZmluZSBUSFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNl
cHRpb25Ub1Rocm93KTsgICAgICAgICAgXAorICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7ICAgICAgICAgICAgICAgXAorICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgXAogICAgICAgICBSRVRVUk5fVE9f
VEhST1coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0g
d2hpbGUgKGZhbHNlKQpAQCAtMTQwLDEzICsxNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2Rl
ZmluZSBDQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIFJFVFVSTl9UV08oKGNhbGxUYXJn
ZXQpLCAoZXhlYykpCiAKLSNkZWZpbmUgQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRXhlY1N0YXRlKiBjdEV4
ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN0UEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ0FMTF9FTkRfSU1QTChjdEV4
ZWMsIExMSW50OjpjYWxsVG9UaHJvdyhjdEV4ZWMpKTsgICAgICAgICAgICAgIFwKLSAgICB9IHdo
aWxlIChmYWxzZSkKLQogI2RlZmluZSBDQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBFeGVjU3RhdGUqIGNjZUV4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBJbnN0
cnVjdGlvbiogY2NlUEMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw4ICs3MywxMCBAQCBBTFdB
WVNfSU5MSU5FIGludCBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0CiAKIGlubGluZSBib29sIG9wSW4o
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgaWYgKCFiYXNlVmFsLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihl
eGVjLCBiYXNlVmFsKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihleGVjLCBiYXNlVmFsKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTg1LDcgKzg3LDcgQEAgaW5saW5lIGJvb2wgb3BJbihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdQogICAgICAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJvcGVydHko
ZXhlYywgaSk7CiAKICAgICBhdXRvIHByb3BlcnR5ID0gcHJvcE5hbWUudG9Qcm9wZXJ0eUtleShl
eGVjKTsKLSAgICBpZiAoZXhlYy0+dm0oKS5leGNlcHRpb24oKSkKKyAgICBpZiAodm0uZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gYmFzZU9iai0+aGFzUHJv
cGVydHkoZXhlYywgcHJvcGVydHkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzRXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRoc0V4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw3ICszOCw5IEBAIHZvaWQg
aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSoKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKLSAg
ICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKCp2bSk7CisKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwg
ZXJyb3IpOwogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dp
bmcgZXhjZXB0aW9uICIsIHZtLT5leGNlcHRpb24oKSwgIi5cbiIpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcAkocmV2
aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDEwICszNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogSlNPYmplY3QqIGNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29uc3RydWN0
b3JPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9y
T2JqZWN0LCBjb25zdHJ1Y3REYXRhKTsKICAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1
Y3RUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJv
ck1lc3NhZ2UpOwogCiAgICAgcmV0dXJuIGNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVj
dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3Qp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
OCwgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKQEAgLTMyMCw5ICszMjAsMTAgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0
TG9jYWxlRGF0ZShFeGVjU3RhdAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVUaW1lRm9ybWF0IGZvcm1hdCwgYm9vbCBhc1VU
Q1ZhcmlhbnQpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKIApAQCAtNTIyLDEzICs1MjMsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRo
aXNWYWx1ZSk7IAogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0ZU9iai0+aW50ZXJuYWxO
dW1iZXIoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgRGF0ZSIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJJbnZhbGlkIERhdGUiKSkpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUq
IGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4
ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCkBAIC01NjgsOSArNTcwLDEwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVj
KQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZm9ybWF0TG9jYWxl
RGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCksIExv
Y2FsZURhdGVBbmRUaW1lKSk7CkBAIC01NzgsOSArNTgxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jVG9Mb2NhbGVEYXRlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFs
dWUpOyAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywg
dGhpc0RhdGVPYmosIHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVEYXRlKSk7
CkBAIC01ODgsOSArNTkyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jVG9Mb2Nh
bGVUaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGZvcm1hdExvY2FsZURhdGUoZXhlYywgdGhpc0RhdGVPYmosIHRoaXNE
YXRlT2JqLT5pbnRlcm5hbE51bWJlcigpLCBMb2NhbGVUaW1lKSk7CkBAIC01OTgsMTMgKzYwMywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVj
LT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAg
IGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4cGVjdGVkIHx0
aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3Rl
ZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTT2JqZWN0Kj4odGhpc1ZhbHVlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRD
b3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0ZS5wcm90
b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGUucHJvdG90
eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4iKTsKIAog
ICAgIEpTVmFsdWUgaGludFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAg
UHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0eXBlID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGV4
ZWMsIGhpbnRWYWx1ZSk7CkBAIC02MTksMTggKzYyNSwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFRpbWUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0ZUluc3Rh
bmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpLT5pbnRlcm5hbFZhbHVl
KCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRG
dWxsWWVhcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8o
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRo
aXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY0Miw5ICs2NTAs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENGdWxsWWVhcihFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY1Niw5ICs2NjUsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVl
KTsgCiAKQEAgLTY3MCw5ICs2ODAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENNb250aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6Omlu
Zm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2Uq
IHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTY4NCw5ICs2
OTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNjk4LDkgKzcxMCwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
RGF0ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7
IAogCkBAIC03MTIsOSArNzI1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0
RGF5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtNzI2LDkgKzc0MCwxMCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFu
Y2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc0MCw5ICs3NTUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5z
dGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRl
SW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAg
LTc1NCw5ICs3NzAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENIb3Vy
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRl
T2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTc2OCw5ICs3ODUsMTAgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5j
ZSh0aGlzVmFsdWUpOyAKIApAQCAtNzgyLDkgKzgwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0
ZVByb3RvRnVuY0dldFVUQ01pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoRGF0
ZUluc3RhbmNlOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
RGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAog
CkBAIC03OTYsOSArODE1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vj
b25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNE
YXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTgxMCw5ICs4MzAsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENTZWNvbmRzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgp
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJ
bnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAtODI0LDkgKzg0NSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0ZVByb3RvRnVuY0dldE1pbGxpU2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+dm0oKSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7
CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1Zh
bHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7
CkBAIC04NDAsOSArODYyLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVBy
b3RvRnUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
TWlsbGlzZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6
aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5j
ZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAgICBkb3VibGUg
bWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKQEAgLTg1Niw5ICs4NzksMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRUaW1lem9uZU9mZnNldChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZXhlYy0+
dm0oKSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhEYXRlSW5zdGFuY2U6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNE
YXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAKQEAgLTg3MCw5ICs4OTQsMTAgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUp
OyAKIApAQCAtODg0LDkgKzkwOSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21UaW1lQXJn
cyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsIFdURjo6VGltZVR5cGUgaW5wdXRU
aW1lVHlwZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52
bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0Rh
dGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGRvdWJsZSBtaWxsaSA9IHRoaXNEYXRlT2JqLT5p
bnRlcm5hbE51bWJlcigpOwpAQCAtOTIzLDkgKzk0OSwxMCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgc2V0TmV3VmFsdWVGcm9tVGltCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1
ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsIFdURjo6VGlt
ZVR5cGUgaW5wdXRUaW1lVHlwZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5jZTo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJbnN0YW5jZSogdGhpc0Rh
dGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOwogICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKSB7CkBAIC0xMDM1LDkgKzEwNjIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQ
cm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4
ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0YW5j
ZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgRGF0ZUluc3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3Rh
bmNlKHRoaXNWYWx1ZSk7CkBAIC0xMDc4LDkgKzExMDYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRZZWFyKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKERhdGVJbnN0
YW5jZTo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIERhdGVJ
bnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKIApAQCAt
MTA5NCw2ICsxMTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4
ZWMtPnZtKCkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZS50b1RoaXMo
ZXhlYywgTm90U3RyaWN0TW9kZSkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAg
LTExMTIsMTMgKzExNDIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdQogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEodG9JU09WYWx1ZSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgidG9JU09TdHJpbmcg
aXMgbm90IGEgZnVuY3Rpb24iKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZXhlYywg
YXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBleGVjLT5l
bXB0eUxpc3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9J
U09TdHJpbmcgZGlkIG5vdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoInRvSVNPU3Ry
aW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsMzQgKzE5OCwzNCBAQCBi
b29sIGhhc0Vycm9ySW5mbyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqCiAgICAgICAgIHx8IGVycm9y
LT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIHNvdXJjZVVS
TFByb3BlcnR5TmFtZSkpOwogfQogCi1KU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJl
Q2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNv
bnN0cnVjdG9yTmFtZSkKK0pTT2JqZWN0KiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRB
c0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiY2FsbGluZyAiLCBjb25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0
b3Igd2l0aG91dCBuZXcgaXMgaW52YWxpZCIpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoImNhbGxpbmcgIiwgY29uc3RydWN0b3JOYW1lLCAiIGNv
bnN0cnVjdG9yIHdpdGhvdXQgbmV3IGlzIGludmFsaWQiKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJv
d1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOworICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMpKTsKIH0K
IAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgQVNDSUlMaXRlcmFs
IGVycm9yTWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKQogewotICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7CisgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7CiB9
CiAKLUpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3Nh
Z2UpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBtZXNzYWdlKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXgg
ZXJyb3IiKSkpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
U3ludGF4RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW50YXggZXJyb3IiKSkpOwogfQogCi1K
U09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK0pTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtZXNz
YWdlKSk7CisgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTeW50
YXhFcnJvcihleGVjLCBtZXNzYWdlKSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogI2luY2x1ZGUg
PHN0ZGludC5oPgogCiAKQEAgLTcxLDIxICs3MiwyMSBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqCiAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KIAogLy8gQ29u
dmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRl
ZmF1bHQgbWVzc2FnZS4KLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IGNo
YXIqIGNvbnN0cnVjdG9yTmFtZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7Ci1KU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3lu
dGF4RXJyb3IoRXhlY1N0YXRlKik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dT
eW50YXhFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci1pbmxp
bmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24oc3Rh
dGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CitKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogY29uc3RydWN0
b3JOYW1lKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVj
U3RhdGUqLCBUaHJvd1Njb3BlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3Nh
Z2UpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0
ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRf
UFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3Bl
Jik7CitKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3Rh
dGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworaW5saW5lIEpT
T2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2Nv
cGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihz
dGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiAK
IC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVkSlNWYWx1
ZS4KLWlubGluZSB2b2lkIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSB7IGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsg
fQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGVycm9yKSk7IH0KLWlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KLWlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBlcnJvck1lc3NhZ2UpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93
Vk1SYW5nZUVycm9yKEV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1l
c3NhZ2UpKTsgfQoraW5saW5lIHZvaWQgdGhyb3dWTUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBleGNlcHRpb24pOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVy
cm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEpTVmFsdWUgZXJyb3IpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3Ip
KTsgfQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBUaHJvd1Njb3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZN
VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSkpOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhy
b3dWTVJhbmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dSYW5n
ZUVycm9yKHN0YXRlLCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KIAogY2xhc3MgU3RyaWN0TW9k
ZVR5cGVFcnJvckZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHJpdmF0ZToK
QEAgLTEwOSw3ICsxMTAsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzdGF0aWNfY2FzdDxTdHJpY3RNb2Rl
VHlwZUVycm9yRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSktPm1fbWVzc2FnZSk7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHN0YXRpY19j
YXN0PFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgfQog
CkBAIC0xMjEsNyArMTI0LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHN0YXRpY19jYXN0PFN0cmljdE1vZGVUeXBl
RXJyb3JGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKS0+bV9tZXNzYWdlKTsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgc3RhdGljX2Nhc3Q8
U3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpLT5tX21lc3NhZ2Up
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTIgKzY3LDE1IEBAIHZvaWQg
RXJyb3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiAKIC8vIEVDTUEtMjYyIDUuMSwgMTUu
MTEuNC40CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GdW5jVG9TdHJp
bmcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMS4gTGV0IE8gYmUg
dGhlIHRoaXMgdmFsdWUuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKIAogICAgIC8vIDIuIElmIFR5cGUoTykgaXMgbm90IE9iamVjdCwgdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uLgogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBhc09iamVjdCh0aGlz
VmFsdWUpOwogCiAgICAgLy8gR3VhcmQgYWdhaW5zdCByZWN1cnNpb24hCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAkocmV2aXNpb24g
MjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDE3ICszOCwxOCBAQCB1bnNpZ25lZCBudW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MoKSB7CiAvLyBDYWxsIHRoaXMgb25seSBpZiB5b3Uga25vdyB0aGF0IGV4
Y2VwdGlvbiBmdXp6aW5nIGlzIGVuYWJsZWQuCiB2b2lkIGRvRXhjZXB0aW9uRnV6emluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIHdoZXJlLCB2b2lkKiByZXR1cm5QQykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBBU1NFUlQoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKTsKIAotICAgIERl
ZmVyR0NGb3JBV2hpbGUgZGVmZXJHQyhleGVjLT52bSgpLmhlYXApOworICAgIERlZmVyR0NGb3JB
V2hpbGUgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAKICAgICBzX251bWJlck9mRXhjZXB0aW9uRnV6
ekNoZWNrcysrOwogICAgIAogICAgIHVuc2lnbmVkIGZpcmVUYXJnZXQgPSBPcHRpb25zOjpmaXJl
RXhjZXB0aW9uRnV6ekF0KCk7CiAgICAgaWYgKGZpcmVUYXJnZXQgPT0gc19udW1iZXJPZkV4Y2Vw
dGlvbkZ1enpDaGVja3MpIHsKICAgICAgICAgcHJpbnRmKCJKU0MgRVhDRVBUSU9OIEZVWlo6IFRo
cm93aW5nIGZ1enogZXhjZXB0aW9uIHdpdGggY2FsbCBmcmFtZSAlcCwgc2VlbiBpbiAlcyBhbmQg
cmV0dXJuIGFkZHJlc3MgJXAuXG4iLCBleGVjLCB3aGVyZSwgcmV0dXJuUEMpOwotICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKAotICAgICAgICAgICAgZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFeGNlcHRpb24gRnV6eiIpKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4Y2Vw
dGlvbiBGdXp6IikpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDUxODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yODksMjMgKzI4OSwyMyBAQCBKU09iamVjdCogY3JlYXRl
VERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKLUpT
T2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3Qq
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
KQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU91
dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJv
d1N0YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCitKU09iamVjdCogdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3Bl
KHZtKTsKLSAgICByZXR1cm4gdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiB9CiAKLUpTT2JqZWN0KiB0aHJvd1Rl
cm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQorSlNPYmplY3QqIHRo
cm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2Nv
cGUmIHNjb3BlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGlu
Z1Njb3BlIGVycm9yU2NvcGUodm0pOwotICAgIHJldHVybiB2bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKCZ2bSkpOworICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVGVybWluYXRlZEV4ZWN1dGlvbkV4Y2Vw
dGlvbigmdm0pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkVycm9ySW5zdGFu
Y2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTUyLDkgKzUzLDkgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFG
dW5jdGlvbkVycm9yKEV4ZWNTdAogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBKU1N0cmluZyogZXJyb3JE
ZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSopOwotSlNfRVhQ
T1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSop
OwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAKIGNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lv
biAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCw3IEBAIENvZGVCbG9jayogU2NyaXB0RXhl
Y3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgSlNPYmplY3QqJiBleGNlcHRpb24p
CiB7CiAgICAgVk0qIHZtID0gc2NvcGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAgQVNTRVJUKHZtLT5oZWFwLmlzRGVmZXJyZWQo
KSk7CiAgICAgQVNTRVJUKHN0YXJ0Q29sdW1uKCkgIT0gVUlOVF9NQVgpOwpAQCAtMzE5LDggKzMy
MCw4IEBAIENvZGVCbG9jayogU2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2MKICAgICAgICAg
ZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCks
IGZpcnN0TGluZSgpLCAKICAgICAgICAgbGFzdExpbmUoKSwgc3RhcnRDb2x1bW4oKSwgZW5kQ29s
dW1uKCkpOyAKICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7Ci0gICAgICAgIGV4Y2VwdGlv
biA9IHZtLT50aHJvd0V4Y2VwdGlvbigKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLAorICAgICAgICBleGNlcHRpb24gPSB0aHJvd0V4Y2VwdGlvbigKKyAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCB0aHJvd1Njb3BlLAogICAgICAgICAgICAgZXJy
b3IudG9FcnJvck9iamVjdChnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUtPm1fc291cmNlKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTQyOSwyMCArNDMwLDIzIEBAIGNvbnN0
IENsYXNzSW5mbyBFdmFsRXhlY3V0YWJsZTo6c19pbmZvID0KIAogRXZhbEV4ZWN1dGFibGUqIEV2
YWxFeGVjdXRhYmxlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCwgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5k
ZXJURFopCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5l
dmFsRW5hYmxlZCgpKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNz
YWdlKCkpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUV2YWxF
cnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXZhbEV4ZWN1dGFibGU+KCpleGVjLT5oZWFw
KCkpKSBFdmFsRXhlY3V0YWJsZShleGVjLCBzb3VyY2UsIGlzSW5TdHJpY3RDb250ZXh0LCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
Ci0gICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSk7CisgICAgZXhlY3V0
YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogCiAgICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiB1
bmxpbmtlZEV2YWxDb2RlID0gZ2xvYmFsT2JqZWN0LT5jcmVhdGVFdmFsQ29kZUJsb2NrKGV4ZWMs
IGV4ZWN1dGFibGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAgICBpZiAoIXVubGlua2VkRXZhbENv
ZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV2YWxD
b2RlQmxvY2suc2V0KGV4ZWMtPnZtKCksIGV4ZWN1dGFibGUsIHVubGlua2VkRXZhbENvZGUpOwor
ICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFdmFsQ29kZUJsb2NrLnNldCh2bSwgZXhlY3V0YWJs
ZSwgdW5saW5rZWRFdmFsQ29kZSk7CiAKICAgICByZXR1cm4gZXhlY3V0YWJsZTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTc2LDggKzc2LDExIEBAIENhbGxUeXBlIEZ1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXQKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBD
b25zdHJ1Y3RvcgogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9i
amVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0
LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwogICAgIHJldHVybiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayhleGVjLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGZ1
bmN0aW9uTmFtZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgLTEsIGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSwgbmV3VGFyZ2V0KTsKIH0KIApAQCAtODYsNiArODksOSBAQCBKU09iamVjdCogY29uc3Ry
dWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgCiAgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbiwgaW50IG92ZXJyaWRlTGluZU51bWJlciwgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
IGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1w
b3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwpAQCAt
MTE2LDE0ICsxMjIsMTQgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RQogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6
OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwgKmV4ZWMsIHNvdXJjZSwgZXhjZXB0aW9uLCBv
dmVycmlkZUxpbmVOdW1iZXIpOwogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJU
KGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFy
Z2V0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0
cnVjdHVyZSk7CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw4
IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNW
YWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSkg
ewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhp
c1ZhbHVlKTsKQEAgLTExMiwxOSArMTE0LDIxIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Qcm8KICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNW
YWx1ZSk7CiAgICAgICAgIGlmIChvYmplY3QtPmlubGluZVR5cGVGbGFncygpICYgVHlwZU9mU2hv
dWxkQ2FsbEdldENhbGxEYXRhKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICAgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0
YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZTo6Tm9uZSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAh
PSBDYWxsVHlwZTo6Tm9uZSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjbGFzc0luZm8g
PSBvYmplY3QtPmNsYXNzSW5mbygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIsIGNsYXNz
SW5mby0+Y2xhc3NOYW1lLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiB9CiAKIC8v
IDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kICh0aGlzQXJnIFssIGFyZzEgWywgYXJn
MiwgLi4uXV0pCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5j
QmluZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIC8v
IExldCBUYXJnZXQgYmUgdGhlIHRoaXMgdmFsdWUuCkBAIC0xMzQsMTEgKzEzOCwxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YSh0YXJnZXQsIGNhbGxEYXRh
KTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgLy8gUHJpbWl0aXZlIHZhbHVlcyBhcmUgbm90IGNhbGxhYmxlLgog
ICAgIEFTU0VSVCh0YXJnZXQuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdldE9iamVj
dCA9IGFzT2JqZWN0KHRhcmdldCk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIC8v
IExldCBBIGJlIGEgbmV3IChwb3NzaWJseSBlbXB0eSkgaW50ZXJuYWwgbGlzdCBvZiBhbGwgb2Yg
dGhlIGFyZ3VtZW50IHZhbHVlcyBwcm92aWRlZCBhZnRlciB0aGlzQXJnIChhcmcxLCBhcmcyIGV0
YyksIGluIG9yZGVyLgogICAgIHNpemVfdCBudW1Cb3VuZEFyZ3MgPSBleGVjLT5hcmd1bWVudENv
dW50KCkgPiAxID8gZXhlYy0+YXJndW1lbnRDb3VudCgpIC0gMSA6IDA7CkBAIC0xNDYsNyArMTQ5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgIGlmIChu
dW1Cb3VuZEFyZ3MpIHsKICAgICAgICAgYm91bmRBcmdzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIG51bUJvdW5kQXJncyk7CiAg
ICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKICAgICAgICAg
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQm91bmRBcmdzOyArK2kpCiAgICAg
ICAgICAgICBib3VuZEFyZ3MtPmluaXRpYWxpemVJbmRleCh2bSwgaSwgZXhlYy0+YXJndW1lbnQo
aSArIDEpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA5LCAy
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC04NywxMSArODcsMTQgQEAgSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYQogCiBib29sIGNhbGxTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJh
c2UsIEpTVmFsdWUgZ2V0dGVyU2V0dGVyLCBKU1ZhbHVlIHZhbHVlLCBFQ01BTW9kZSBlY21hTW9k
ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyT2JqID0g
anNDYXN0PEdldHRlclNldHRlcio+KGdldHRlclNldHRlcik7CiAKICAgICBpZiAoZ2V0dGVyU2V0
dGVyT2JqLT5pc1NldHRlck51bGwoKSkgewogICAgICAgICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0
TW9kZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTAxLDcgKzEwNCw3IEBAIGJvb2wgY2FsbFNldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHNl
dHRlciwgY2FsbERhdGEpOwogICAgIGNhbGwoZXhlYywgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERh
dGEsIGJhc2UsIGFyZ3MpOwogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCShyZXZpc2lvbiAyMDUxODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjcsMTEgKzM2NywxNCBAQCB2b2lkIEludGxDb2xsYXRvcjo6Y3JlYXRl
Q29sbGF0b3IoRXhlY1N0CiAKIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhF
eGVjU3RhdGUmIHN0YXRlLCBTdHJpbmdWaWV3IHgsIFN0cmluZ1ZpZXcgeSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIDEwLjMuNCBDb21wYXJlU3RyaW5ncyBhYnN0cmFjdCBvcGVyYXRpb24gKEVD
TUEtNDAyIDIuMCkKICAgICBpZiAoIW1fY29sbGF0b3IpIHsKICAgICAgICAgY3JlYXRlQ29sbGF0
b3Ioc3RhdGUpOwogICAgICAgICBpZiAoIW1fY29sbGF0b3IpCi0gICAgICAgICAgICByZXR1cm4g
c3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIikpKTsKICAgICB9CiAKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTM3OSw3ICszODIsNyBAQCBK
U1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoRXhlCiAgICAgVUNoYXJJdGVyYXRv
ciBpdGVyYXRvclkgPSBjcmVhdGVJdGVyYXRvcih5KTsKICAgICBhdXRvIHJlc3VsdCA9IHVjb2xf
c3RyY29sbEl0ZXIobV9jb2xsYXRvci5nZXQoKSwgJml0ZXJhdG9yWCwgJml0ZXJhdG9yWSwgJnN0
YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUu
dm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRl
cmFsKCJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdzLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJh
bCgiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iKSkpOwogICAgIHJldHVybiBqc051bWJlcihy
ZXN1bHQpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29s
bGF0b3JQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiwxNiArMTA2LDE4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsQ29s
bGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgLy8gMTAuMy4zIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgKEVD
TUEtNDAyIDIuMCkKICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhpcyBDb2xsYXRvciBvYmpl
Y3QuCiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxh
dG9yKj4oc3RhdGUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwo
IkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgQ29sbGF0b3IiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIENvbGxhdG9yIikpKTsKIAogICAgIEpT
Qm91bmRGdW5jdGlvbiogYm91bmRDb21wYXJlID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgpOwog
ICAgIC8vIDIuIElmIGNvbGxhdG9yLltbYm91bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLAogICAg
IGlmICghYm91bmRDb21wYXJlKSB7Ci0gICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVj
dCgpOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmpl
Y3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZ
cyBsZW5ndGggcHJvcGVydHkgaXMgMi4KQEAgLTEzNCwxMCArMTM2LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bENvbGxhdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBJbnRsQ29sbGF0b3JQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTAuMy41IEludGwuQ29sbGF0b3IucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucygpIChFQ01BLTQwMiAyLjApCiAgICAgSW50bENvbGxhdG9y
KiBjb2xsYXRvciA9IGpzRHluYW1pY0Nhc3Q8SW50bENvbGxhdG9yKj4oc3RhdGUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVyYWwoIkludGwuQ29sbGF0b3IucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3Qg
aW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludGwuQ29s
bGF0b3IucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBDb2xsYXRvciIpKSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw2ICs0
MjAsOSBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6c2V0Rm9ybWF0c0Zyb21QCiAKIHZvaWQg
SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlJiBl
eGVjLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3JpZ2luYWxPcHRpb25zKQogeworICAgIFZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAvLyAxMi4xLjEgSW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0IChkYXRlVGltZUZv
cm1hdCwgbG9jYWxlcywgb3B0aW9ucykgKEVDTUEtNDAyIDIuMCkKICAgICAvLyAxLiBJZiBkYXRl
VGltZUZvcm1hdC5bW2luaXRpYWxpemVkSW50bE9iamVjdF1dIGlzIHRydWUsIHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KICAgICAvLyAyLiBTZXQgZGF0ZVRpbWVGb3JtYXQuW1tpbml0aWFs
aXplZEludGxPYmplY3RdXSB0byB0cnVlLgpAQCAtNDQwLDcgKzQ0Myw2IEBAIHZvaWQgSW50bERh
dGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVQKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBsb2NhbGVPcHQ7CiAKICAgICAvLyA4LiBMZXQgbWF0Y2hlciBiZSBHZXRPcHRpb24ob3B0aW9u
cywgImxvY2FsZU1hdGNoZXIiLCAic3RyaW5nIiwgwqsibG9va3VwIiwgImJlc3QgZml0IsK7LCAi
YmVzdCBmaXQiKS4KLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgU3RyaW5nIGxvY2FsZU1h
dGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGV4ZWMsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIg
bXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsK
ICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4KICAgICBpZiAoZXhlYy5oYWRFeGNl
cHRpb24oKSkKQEAgLTQ4Nyw3ICs0ODksNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5p
dGlhbGl6ZURhdGVUCiAgICAgICAgIC8vIGQuIExldCB0eiBiZSBDYW5vbmljYWxpemVUaW1lWm9u
ZU5hbWUodHopLgogICAgICAgICB0eiA9IGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShvcmlnaW5h
bFR6KTsKICAgICAgICAgaWYgKHR6LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoJmV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRpbWUgem9uZTogJXMiLCBvcmln
aW5hbFR6LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcigmZXhl
Yywgc2NvcGUsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIHRpbWUgem9uZTogJXMiLCBvcmlnaW5h
bFR6LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CkBAIC02NDcsNyArNjQ5LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IFVEYXRlVGltZVBhdHRlcm5HZW5lcmF0b3IqIGdlbmVyYXRvciA9IHVkYXRwZ19vcGVuKGRhdGFM
b2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2Myw3ICs2NjUsNyBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUCiAgICAgfQogICAgIHVkYXRw
Z19jbG9zZShnZW5lcmF0b3IpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJmYWlsZWQgdG8gaW5pdGlhbGl6
ZSBEYXRlVGltZUZvcm1hdCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzQsNyArNjc2LDcgQEAgdm9pZCBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVAogICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVWaWV3
KG1fdGltZVpvbmUpOwogICAgIG1fZGF0ZUZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUZv
cm1hdCwgVURhdGVGb3JtYXREZWxldGVyPih1ZGF0X29wZW4oVURBVF9QQVRURVJOLCBVREFUX1BB
VFRFUk4sIG1fbG9jYWxlLnV0ZjgoKS5kYXRhKCksIHRpbWVab25lVmlldy51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuLnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCBwYXR0ZXJuLmxlbmd0aCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwo
ImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IikpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGluaXRpYWxpemUg
RGF0ZVRpbWVGb3JtYXQiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg4Myw2ICs4
ODUsOSBAQCBKU09iamVjdCogSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wCiAKIEpTVmFs
dWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoRXhlY1N0YXRlJiBleGVjLCBkb3VibGUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEyLjMuNCBGb3JtYXREYXRlVGltZSBhYnN0cmFj
dCBvcGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKICAgICBpZiAoIW1faW5pdGlhbGl6ZWREYXRlVGlt
ZUZvcm1hdCkgewogICAgICAgICBpbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoZXhlYywganNVbmRl
ZmluZWQoKSwganNVbmRlZmluZWQoKSk7CkBAIC04OTEsNyArODk2LDcgQEAgSlNWYWx1ZSBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChFeGVjUwogCiAgICAgLy8gMS4gSWYgeCBpcyBub3QgYSBm
aW5pdGUgTnVtYmVyLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcigm
ZXhlYywgQVNDSUlMaXRlcmFsKCJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVG
b3JtYXQgZm9ybWF0KCkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoJmV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGlt
ZUZvcm1hdCBmb3JtYXQoKSIpKTsKIAogICAgIC8vIERlbGVnYXRlIHJlbWFpbmluZyBzdGVwcyB0
byBJQ1UuCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC05MDMsNyAr
OTA4LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChFeGVjUwogICAgICAg
ICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCBy
ZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgIH0KICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRl
cmFsKCJmYWlsZWQgdG8gZm9ybWF0IGRhdGUgdmFsdWUiKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiZmFpbGVkIHRvIGZvcm1hdCBk
YXRlIHZhbHVlIikpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZleGVjLCBTdHJpbmcocmVzdWx0
LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAodGhldGFsZWNy
YWZ0ZXJAZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDYg
KzExMSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGwKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVHZXR0
ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAxMi4z
LjMgSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IChFQ01BLTQwMiAyLjApCiAg
ICAgLy8gMS4gTGV0IGR0ZiBiZSB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVjdC4KICAgICBJbnRs
RGF0ZVRpbWVGb3JtYXQqIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1lRm9ybWF0Kj4o
c3RhdGUtPnRoaXNWYWx1ZSgpKTsKQEAgLTExNywyMyArMTIxLDIyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bERhdGVUaW0KICAgICAvLyBGSVhNRTogV29ya2Fyb3VuZCB0byBw
cm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJu
cy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5
CiAgICAgaWYgKCFkdGYpCi0gICAgICAgIGR0ZiA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgpLmdldChzdGF0ZSwgc3RhdGUtPnZtKCkucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1dGVWYWx1ZVByaXZhdGVOYW1lKCkp
KTsKKyAgICAgICAgZHRmID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0
ZS0+dGhpc1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5pbnRsU3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgLy8gMi4gUmV0dXJu
SWZBYnJ1cHQoZHRmKS4KICAgICBpZiAoIWR0ZikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9y
bWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJ
bnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwogCiAg
ICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IGR0Zi0+Ym91bmRGb3JtYXQoKTsKICAg
ICAvLyAzLiBJZiB0aGUgW1tib3VuZEZvcm1hdF1dIGludGVybmFsIHNsb3Qgb2YgdGhpcyBEYXRl
VGltZUZvcm1hdCBvYmplY3QgaXMgdW5kZWZpbmVkLAogICAgIGlmICghYm91bmRGb3JtYXQpIHsK
LSAgICAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBkdGYtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAvLyBhLiBMZXQgRiBi
ZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMi4zLjQuCiAg
ICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5v
dGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCiAgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJbnRsRGF0ZVRpbWVGb3JtYXRGdW5j
Rm9ybWF0RGF0ZVRpbWUsIE5vSW50cmluc2ljKTsKICAgICAgICAgSlNBcnJheSogYm91bmRBcmdz
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoVW5kZWNp
ZGVkKSwgMCk7CiAgICAgICAgIGlmICghYm91bmRBcmdzKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKHN0YXRlLCBzY29w
ZSkpOwogCiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKr
dGhpcyB2YWx1ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgc3RhdGUsIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIGJvdW5kQXJn
cywgMSwgQVNDSUlMaXRlcmFsKCJmb3JtYXQiKSk7CkBAIC0xNDgsMTYgKzE1MSwxOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxEYXRlVGltCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9u
cyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDEyLjMuNSBJbnRs
LkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4w
KQogICAgIEludGxEYXRlVGltZUZvcm1hdCogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAKICAgICAvLyBGSVhN
RTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQwMiAxLjAg
Y2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFkYXRlVGltZUZvcm1hdCkKLSAgICAgICAgZGF0
ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIGRhdGVU
aW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPihzdGF0ZS0+dGhp
c1ZhbHVlKCkuZ2V0KHN0YXRlLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbnRs
U3Vic3RpdHV0ZVZhbHVlUHJpdmF0ZU5hbWUoKSkpOwogCiAgICAgaWYgKCFkYXRlVGltZUZvcm1h
dCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
QVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
RGF0ZVRpbWVGb3JtYXQiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnRsLkRhdGVUaW1lRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgRGF0ZVRpbWVGb3JtYXQiKSkpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKCpzdGF0ZSkp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKHRoZXRhbGVj
cmFmdGVyQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxNiBTdWtvbHNhayBTYWtzaHV3
b25nIChzdWtvbHNha0BnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNTksNiArMTYwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
RgogewogICAgIC8vIDExLjEuMSBJbml0aWFsaXplTnVtYmVyRm9ybWF0IChudW1iZXJGb3JtYXQs
IGxvY2FsZXMsIG9wdGlvbnMpIChFQ01BLTQwMiAyLjApCiAgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAx
LiBJZiBudW1iZXJGb3JtYXQgaGFzIGFuIFtbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gaW50ZXJu
YWwgc2xvdCB3aXRoIHZhbHVlIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICAvLyAyLiBTZXQgbnVtYmVyRm9ybWF0LltbaW5pdGlhbGl6ZWRJbnRsT2JqZWN0XV0gdG8gdHJ1
ZS4KQEAgLTE4Niw3ICsxODgsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVO
dW1iZXJGCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OwogCiAgICAgLy8gOC4gTGV0
IG1hdGNoZXIgYmUgR2V0T3B0aW9uKG9wdGlvbnMsICJsb2NhbGVNYXRjaGVyIiwgInN0cmluZyIs
IMKrImxvb2t1cCIsICJiZXN0IGZpdCLCuywgImJlc3QgZml0IikuCi0gICAgU3RyaW5nIG1hdGNo
ZXIgPSBpbnRsU3RyaW5nT3B0aW9uKHN0YXRlLCBvcHRpb25zLCBzdGF0ZS52bSgpLnByb3BlcnR5
TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1h
dGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBm
aXQiKTsKKyAgICBTdHJpbmcgbWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oc3RhdGUsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZp
dCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3Qg
Zml0XCIiLCAiYmVzdCBmaXQiKTsKICAgICAvLyA5LiBSZXR1cm5JZkFicnVwdChtYXRjaGVyKS4K
ICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMCw3
ICsyMzIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGCiAgICAg
aWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewogICAgICAgICAvLyBhLiBJZiB0aGUgcmVzdWx0IG9m
IElzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjKSwgaXMgZmFsc2UsIHRoZW4gdGhyb3cgYSBSYW5n
ZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKGN1cnJlbmN5Lmxlbmd0aCgpICE9IDMgfHwg
IWN1cnJlbmN5LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKSB7Ci0gICAg
ICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlUmFuZ2VFcnJv
cigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3Vy
cmVuY3kgY29kZSIpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJjdXJyZW5jeSBpcyBub3Qg
YSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTIzOSw3ICsyNDEsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6
OmluaXRpYWxpemVOdW1iZXJGCiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7
CiAgICAgICAgIC8vIDIyLiBJZiBzIGlzICJjdXJyZW5jeSIgYW5kIGMgaXMgdW5kZWZpbmVkLCB0
aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmIChjdXJyZW5jeS5pc051bGwo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoImN1
cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNDIzLDExICs0MjUsMTQgQEAg
dm9pZCBJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVOdW1iZXJGb3JtYQogCiBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdE51bWJlcihFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgbnVtYmVy
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMTEuMy40IEZvcm1hdE51bWJlciBhYnN0cmFjdCBv
cGVyYXRpb24gKEVDTUEtNDAyIDIuMCkKICAgICBpZiAoIW1fbnVtYmVyRm9ybWF0KSB7CiAgICAg
ICAgIGNyZWF0ZU51bWJlckZvcm1hdChzdGF0ZSk7CiAgICAgICAgIGlmICghbV9udW1iZXJGb3Jt
YXQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkZhaWxlZCB0byBmb3JtYXQgYSBu
dW1iZXIuIikpKTsKICAgICB9CiAKICAgICAvLyBNYXAgbmVnYXRpdmUgemVybyB0byBwb3NpdGl2
ZSB6ZXJvLgpAQCAtNDQzLDcgKzQ0OCw3IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9y
bWF0TnVtYmVyKEUKICAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0
KCksIG51bWJlciwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKICAg
ICB9CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iKSkpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZz
dGF0ZSwgU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsNiArMTAwLDkgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVH
ZXR0ZXJGb3JtYXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAx
MS4zLjMgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCAoRUNNQS00MDIgMi4wKQog
ICAgIC8vIDEuIExldCBuZiBiZSB0aGlzIE51bWJlckZvcm1hdCBvYmplY3QuCiAgICAgSW50bE51
bWJlckZvcm1hdCogbmYgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPihzdGF0ZS0+
dGhpc1ZhbHVlKCkpOwpAQCAtMTA3LDIyICsxMTAsMjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTnVtYmVyRgogICAgIC8vIEZJWE1FOiBXb3JrYXJvdW5kIHRvIHByb3ZpZGUg
Y29tcGF0aWJpbGl0eSB3aXRoIEVDTUEtNDAyIDEuMCBjYWxsL2FwcGx5IHBhdHRlcm5zLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2NzkKICAgICBp
ZiAoIW5mKQotICAgICAgICBuZiA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0
YXRlLT50aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAg
IG5mID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4oc3RhdGUtPnRoaXNWYWx1ZSgp
LmdldChzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuaW50bFN1YnN0aXR1
dGVWYWx1ZVByaXZhdGVOYW1lKCkpKTsKIAogICAgIGlmICghbmYpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW50bC5O
dW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBOdW1iZXJGb3JtYXQiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZvcm1hdCIpKSk7CiAg
ICAgCiAgICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgp
OwogICAgIC8vIDIuIElmIG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCiAgICAgaWYg
KCFib3VuZEZvcm1hdCkgewotICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG5mLT5nbG9iYWxPYmplY3QoKTsKICAgICAg
ICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmlu
ZWQgaW4gMTEuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHBy
b3BlcnR5IGlzIDEuCiAgICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBBU0NJSUxpdGVyYWwoImZvcm1hdCIpLCBJ
bnRsTnVtYmVyRm9ybWF0RnVuY0Zvcm1hdE51bWJlciwgTm9JbnRyaW5zaWMpOwogICAgICAgICBK
U0FycmF5KiBib3VuZEFyZ3MgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhVbmRlY2lkZWQpLCAwKTsKICAgICAgICAgaWYgKCFib3VuZEFyZ3MpCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihzdGF0
ZSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3Ioc3RhdGUsIHNjb3BlKSk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJmIGJlIEJvdW5kRnVu
Y3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgogICAgICAgICBib3VuZEZvcm1hdCA9IEpT
Qm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmpl
Y3QsIG5mLCBib3VuZEFyZ3MsIDEsIEFTQ0lJTGl0ZXJhbCgiZm9ybWF0IikpOwpAQCAtMTM3LDE2
ICsxMzksMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTnVtYmVyRgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5j
UmVzb2x2ZWRPcHRpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Ly8gMTEuMy41IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMoKSAo
RUNNQS00MDIgMi4wKQogICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IGpzRHlu
YW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAKICAgICAv
LyBGSVhNRTogV29ya2Fyb3VuZCB0byBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBFQ01BLTQw
MiAxLjAgY2FsbC9hcHBseSBwYXR0ZXJucy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNjc5CiAgICAgaWYgKCFudW1iZXJGb3JtYXQpCi0gICAgICAg
IG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50
aGlzVmFsdWUoKS5nZXQoc3RhdGUsIHN0YXRlLT52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmludGxTdWJzdGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CisgICAgICAgIG51bWJl
ckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHN0YXRlLT50aGlzVmFs
dWUoKS5nZXQoc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmludGxTdWJz
dGl0dXRlVmFsdWVQcml2YXRlTmFtZSgpKSk7CiAKICAgICBpZiAoIW51bWJlckZvcm1hdCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIE51bWJlckZv
cm1hdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
c3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTnVtYmVyRm9ybWF0IikpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoKnN0YXRlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1
MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsOSBAQCBib29sIGludGxCb29sZWFuT3B0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsCiAKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0
IGNoYXIqIGZhbGxiYWNrKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gOS4yLjkgR2V0T3B0aW9u
IChvcHRpb25zLCBwcm9wZXJ0eSwgdHlwZSwgdmFsdWVzLCBmYWxsYmFjaykKICAgICAvLyBGb3Ig
dHlwZT0ic3RyaW5nIi4KIApAQCAtMTk1LDcgKzE5OCw3IEBAIFN0cmluZyBpbnRsU3RyaW5nT3B0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUKICAgICAgICAgLy8gZC4gSWYgdmFsdWVzIGlzIG5vdCB1bmRl
ZmluZWQsIHRoZW4KICAgICAgICAgLy8gaS4gSWYgdmFsdWVzIGRvZXMgbm90IGNvbnRhaW4gYW4g
ZWxlbWVudCBlcXVhbCB0byB2YWx1ZSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAg
ICAgICAgaWYgKHZhbHVlcy5zaXplKCkgJiYgc3RkOjpmaW5kKHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuZW5kKCksIHN0cmluZ1ZhbHVlKSA9PSB2YWx1ZXMuZW5kKCkpIHsKLSAgICAgICAgICAgIHN0
YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9yKCZzdGF0ZSwg
bm90Rm91bmQpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBub3RGb3VuZCkpOwogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQogCkBAIC0yMDksNiArMjEyLDkgQEAgU3RyaW5nIGludGxTdHJpbmdPcHRp
b24oRXhlY1N0YXRlJiBzdGF0ZQogCiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lIHByb3BlcnR5LCB1bnNpZ25l
ZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjaykKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIC8vIDkuMi45IEdldE51bWJlck9wdGlvbiAob3B0aW9ucywgcHJvcGVydHks
IG1pbmltdW0sIG1heGltdW0sIGZhbGxiYWNrKSAoRUNNQS00MDIgMi4wKQogICAgIC8vIDEuIExl
dCBvcHRzIGJlIFRvT2JqZWN0KG9wdGlvbnMpLgogICAgIEpTT2JqZWN0KiBvcHRzID0gb3B0aW9u
cy50b09iamVjdCgmc3RhdGUpOwpAQCAtMjMzLDcgKzIzOSw3IEBAIHVuc2lnbmVkIGludGxOdW1i
ZXJPcHRpb24oRXhlY1N0YXRlJiBzdGEKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAv
LyAxLiBJZiB2YWx1ZSBpcyBOYU4gb3IgbGVzcyB0aGFuIG1pbmltdW0gb3IgZ3JlYXRlciB0aGFu
IG1heGltdW0sIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICghKGRv
dWJsZVZhbHVlID49IG1pbmltdW0gJiYgZG91YmxlVmFsdWUgPD0gbWF4aW11bSkpIHsKLSAgICAg
ICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVSYW5nZUVycm9y
KCZzdGF0ZSwgKnByb3BlcnR5LnB1YmxpY05hbWUoKSArICIgaXMgb3V0IG9mIHJhbmdlIikpOwor
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cigmc3RhdGUsICpwcm9wZXJ0eS5wdWJsaWNOYW1lKCkgKyAiIGlzIG91dCBvZiByYW5nZSIpKTsK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKQEAgLTUyNCw2ICs1MzAsOCBAQCBW
ZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEV4CiB7CiAgICAgLy8gOS4yLjEg
Q2Fub25pY2FsaXplTG9jYWxlTGlzdCAobG9jYWxlcykKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgVmVjdG9yPFN0cmluZz4gc2VlbjsKIApAQCAtNTg3LDcgKzU5NSw3IEBAIFZlY3RvcjxT
dHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoRXgKIAogICAgICAgICAgICAgLy8gaWlpLiBJ
ZiBUeXBlKGtWYWx1ZSkgaXMgbm90IFN0cmluZyBvciBPYmplY3QsIHRocm93IGEgVHlwZUVycm9y
IGV4Y2VwdGlvbi4KICAgICAgICAgICAgIGlmICgha1ZhbHVlLmlzU3RyaW5nKCkgJiYgIWtWYWx1
ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBB
U0NJSUxpdGVyYWwoImxvY2FsZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCIpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoImxvY2FsZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG9iamVjdCIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICAgICAgICAgIH0KIApAQCAtNjAy
LDcgKzYxMCw3IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoRXgKICAg
ICAgICAgICAgIC8vIHZpaS4gTGV0IGNhbm9uaWNhbGl6ZWRUYWcgYmUgQ2Fub25pY2FsaXplTGFu
Z3VhZ2VUYWcodGFnKS4KICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxpemVkVGFnID0gY2Fu
b25pY2FsaXplTGFuZ3VhZ2VUYWcodGFnLT52YWx1ZSgmc3RhdGUpKTsKICAgICAgICAgICAgIGlm
IChjYW5vbmljYWxpemVkVGFnLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudm0o
KS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZVJhbmdlRXJyb3IoJnN0YXRlLCBTdHJpbmc6
OmZvcm1hdCgiaW52YWxpZCBsYW5ndWFnZSB0YWc6ICVzIiwgdGFnLT52YWx1ZSgmc3RhdGUpLnV0
ZjgoKS5kYXRhKCkpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcigmc3RhdGUsIFN0cmluZzo6Zm9ybWF0KCJpbnZhbGlkIGxh
bmd1YWdlIHRhZzogJXMiLCB0YWctPnZhbHVlKCZzdGF0ZSkudXRmOCgpLmRhdGEoKSkpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKICAgICAgICAgICAgIH0KIApA
QCAtODcwLDYgKzg3OCw5IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUo
RXgKIAogc3RhdGljIEpTQXJyYXkqIGxvb2t1cFN1cHBvcnRlZExvY2FsZXMoRXhlY1N0YXRlJiBz
dGF0ZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcykKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIDku
Mi42IExvb2t1cFN1cHBvcnRlZExvY2FsZXMgKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMpCiAKICAgICAvLyAxLiBMZXQgckxvY2FsZXMgYmUgQ3JlYXRlQXJyYXlGcm9tTGlzdChy
ZXF1ZXN0ZWRMb2NhbGVzKS4KQEAgLTg3OSwxMSArODkwLDEwIEBAIHN0YXRpYyBKU0FycmF5KiBs
b29rdXBTdXBwb3J0ZWRMb2NhbGVzKEUKICAgICBzaXplX3QgbGVuID0gcmVxdWVzdGVkTG9jYWxl
cy5zaXplKCk7CiAKICAgICAvLyAzLiBMZXQgc3Vic2V0IGJlIGFuIGVtcHR5IExpc3QuCi0gICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
c3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwogICAgIEpTQXJyYXkqIHN1YnNldCA9IEpT
QXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aFVuZGVjaWRlZCks
IDApOwogICAgIGlmICghc3Vic2V0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
MDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTQgKzM3LDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgaXRlcmF0b3Is
IEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSBuZXh0RnVuY3Rpb24gPSBpdGVyYXRvci5n
ZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5uZXh0KTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTVmFsdWUgbmV4dEZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPm5leHQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBDYWxsRGF0YSBuZXh0RnVuY3Rpb25DYWxsRGF0YTsK
ICAgICBDYWxsVHlwZSBuZXh0RnVuY3Rpb25DYWxsVHlwZSA9IGdldENhbGxEYXRhKG5leHRGdW5j
dGlvbiwgbmV4dEZ1bmN0aW9uQ2FsbERhdGEpOwogICAgIGlmIChuZXh0RnVuY3Rpb25DYWxsVHlw
ZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgbmV4dEZ1bmN0aW9uQXJndW1lbnRzOwogICAgIGlmICghdmFsdWUu
aXNFbXB0eSgpKQpAQCAtNTMsNyArNTcsNyBAQCBKU1ZhbHVlIGl0ZXJhdG9yTmV4dChFeGVjU3Rh
dGUqIGV4ZWMsIEpTCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgaWYgKCFy
ZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iKSk7CiAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODksMTggKzkzLDIxIEBAIEpTVmFsdWUgaXRlcmF0b3JT
dGVwKEV4ZWNTdGF0ZSogZXhlYywgSlMKIAogdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEV4Y2VwdGlvbiog
ZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CiAgICAgICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CiAgICAgfQotICAgIEpTVmFsdWUgcmV0dXJuRnVuY3Rpb24gPSBpdGVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5yZXR1cm5LZXl3b3JkKTsKKyAg
ICBKU1ZhbHVlIHJldHVybkZ1bmN0aW9uID0gaXRlcmF0b3IuZ2V0KGV4ZWMsIHZtLnByb3BlcnR5
TmFtZXMtPnJldHVybktleXdvcmQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJldHVybkZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBleGNlcHRpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDgsOSAr
MTE1LDkgQEAgdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgIENh
bGxUeXBlIHJldHVybkZ1bmN0aW9uQ2FsbFR5cGUgPSBnZXRDYWxsRGF0YShyZXR1cm5GdW5jdGlv
biwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYgKHJldHVybkZ1bmN0aW9uQ2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE4LDcg
KzEyNSw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBK
U1ZhbHVlIGlubmVyUmVzdWx0ID0gY2FsbChleGVjLCByZXR1cm5GdW5jdGlvbiwgcmV0dXJuRnVu
Y3Rpb25DYWxsVHlwZSwgcmV0dXJuRnVuY3Rpb25DYWxsRGF0YSwgaXRlcmF0b3IsIHJldHVybkZ1
bmN0aW9uQXJndW1lbnRzKTsKIAogICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI2LDcgKzEzMyw3IEBAIHZvaWQgaXRlcmF0b3JDbG9zZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFpbm5lclJlc3VsdC5pc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVz
dWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE0Nywx
NCArMTU0LDE4IEBAIFN0cnVjdHVyZSogY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3RTdHIKIAog
SlNPYmplY3QqIGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBkb25lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNPYmplY3QqIHJlc3VsdE9iamVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+aXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUoKSk7
Ci0gICAgcmVzdWx0T2JqZWN0LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZG9uZVByb3BlcnR5T2Zm
c2V0LCBqc0Jvb2xlYW4oZG9uZSkpOwotICAgIHJlc3VsdE9iamVjdC0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIHZhbHVlUHJvcGVydHlPZmZzZXQsIHZhbHVlKTsKKyAgICByZXN1bHRPYmplY3QtPnB1
dERpcmVjdCh2bSwgZG9uZVByb3BlcnR5T2Zmc2V0LCBqc0Jvb2xlYW4oZG9uZSkpOworICAgIHJl
c3VsdE9iamVjdC0+cHV0RGlyZWN0KHZtLCB2YWx1ZVByb3BlcnR5T2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdE9iamVjdDsKIH0KIAogSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTVmFsdWUgaXRlcmFibGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IAogICAgIEpTVmFsdWUgaXRlcmF0b3JGdW5jdGlvbiA9IGl0ZXJhYmxlLmdldChzdGF0ZSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgaWYgKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKQEAgLTE2Miw3ICsxNzMsNyBA
QCBKU1ZhbHVlIGl0ZXJhdG9yRm9ySXRlcmFibGUoRXhlY1N0YXRlKiBzCiAgICAgQ2FsbERhdGEg
aXRlcmF0b3JGdW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGl0ZXJhdG9yRnVuY3Rpb25D
YWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9yRnVuY3Rpb24sIGl0ZXJhdG9yRnVuY3Rpb25D
YWxsRGF0YSk7CiAgICAgaWYgKGl0ZXJhdG9yRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6
Tm9uZSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQog
CkBAIC0xNzIsNyArMTgzLDcgQEAgSlNWYWx1ZSBpdGVyYXRvckZvckl0ZXJhYmxlKEV4ZWNTdGF0
ZSogcwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCiAgICAgaWYgKCFpdGVyYXRvci5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3Ioc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZp
c2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIsIDIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDks
IDIwMTItMjAxMywgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAg
LTc1LDYgKzc1LDkgQEAgdm9pZCBKU0FycmF5OjpzZXRMZW5ndGhXcml0YWJsZShFeGVjU3RhdAog
Ly8gRGVmaW5lZCBpbiBFUzUuMSAxNS40LjUuMQogYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCB0aHJv
d0V4Y2VwdGlvbikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTQXJyYXkqIGFycmF5ID0ganNDYXN0
PEpTQXJyYXkqPihvYmplY3QpOwogCiAgICAgLy8gMy4gSWYgUCBpcyAibGVuZ3RoIiwgdGhlbgpA
QCAtMTA2LDcgKzEwOSw3IEBAIGJvb2wgSlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmpl
Y3QKICAgICAgICAgdW5zaWduZWQgbmV3TGVuID0gZGVzY3JpcHRvci52YWx1ZSgpLnRvVUludDMy
KGV4ZWMpOwogICAgICAgICAvLyBkLiBJZiBuZXdMZW4gaXMgbm90IGVxdWFsIHRvIFRvTnVtYmVy
KCBEZXNjLltbVmFsdWVdXSksIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAg
IGlmIChuZXdMZW4gIT0gZGVzY3JpcHRvci52YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSB7Ci0gICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAg
ICBKU0M6OnRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGgiKSkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTE5MSw2ICsxOTQsOSBAQCBib29sIEpTQXJyYXk6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjCiAvLyBFQ01BIDE1LjQuNS4xCiBib29sIEpTQXJy
YXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5Kj4oY2VsbCk7
CiAKICAgICBpZiAoVU5MSUtFTFkoaXNUaGlzVmFsdWVBbHRlcmVkKHNsb3QsIHRoaXNPYmplY3Qp
KSkKQEAgLTE5OSw3ICsyMDUsNyBAQCBib29sIEpTQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7CiAgICAgICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IHZhbHVlLnRvVUludDMyKGV4ZWMp
OwogICAgICAgICBpZiAodmFsdWUudG9OdW1iZXIoZXhlYykgIT0gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihuZXdMZW5ndGgpKSB7Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhp
c09iamVjdC0+c2V0TGVuZ3RoKGV4ZWMsIG5ld0xlbmd0aCwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CkBAIC0zOTMsNiArMzk5LDggQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAogCiBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2
bSwgdW5zaWduZWQgc3RhcnRJbmRleCwgSlNDOjpKU0FycmF5KiBvdGhlckFycmF5KQogeworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghY2FuRmFz
dENvcHkodm0sIG90aGVyQXJyYXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQxOCw3
ICs0MjYsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShFeGVjU3RhdGUqIGV4CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBuZXdMZW5ndGgp
KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBBU1NFUlQoY29weVR5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwpAQCAtNDMzLDYgKzQ0
MSw5IEBAIGJvb2wgSlNBcnJheTo6YXBwZW5kTWVtY3B5KEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJv
b2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRl
cmZseSA9IG1fYnV0dGVyZmx5LmdldCgpOwogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFycmF5Q2xhc3M6CkBAIC00NDEsOSArNDUyLDkgQEAgYm9vbCBKU0FycmF5Ojpz
ZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICBpZiAobmV3TGVuZ3RoID49IE1JTl9T
UEFSU0VfQVJSQVlfSU5ERVgpIHsKICAgICAgICAgICAgIHJldHVybiBzZXRMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIG5ld0xlbmd0aCwgdGhyb3dFeGNlcHRp
b24sCi0gICAgICAgICAgICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAg
ICAgICAgICAgICAgICBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsKICAgICAgICAgfQotICAgICAg
ICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCk7CisgICAgICAg
IGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQodm0sIG5ld0xlbmd0aCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKQEAgLTQ1NywxMSAr
NDY4LDExIEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAg
ICAgICAgICAgICAmJiAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihuZXdMZW5ndGgsIGNvdW50RWxl
bWVudHMoKSkpKSB7CiAgICAgICAgICAgICByZXR1cm4gc2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFn
ZSgKICAgICAgICAgICAgICAgICBleGVjLCBuZXdMZW5ndGgsIHRocm93RXhjZXB0aW9uLAotICAg
ICAgICAgICAgICAgIGVuc3VyZUFycmF5U3RvcmFnZShleGVjLT52bSgpKSk7CisgICAgICAgICAg
ICAgICAgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5l
d0xlbmd0aCA+IGJ1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlmICgh
ZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG5ld0xlbmd0aCkpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICBpZiAoIWVuc3VyZUxlbmd0
aCh2bSwgbmV3TGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NzAsNyArNDgxLDcgQEAgYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICB1bnNpZ25lZCBsZW5n
dGhUb0NsZWFyID0gYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSAtIG5ld0xlbmd0aDsKICAgICAg
ICAgdW5zaWduZWQgY29zdFRvQWxsb2NhdGVOZXdCdXR0ZXJmbHkgPSA2NDsgLy8gYSBoZXVyaXN0
aWMuCiAgICAgICAgIGlmIChsZW5ndGhUb0NsZWFyID4gbmV3TGVuZ3RoICYmIGxlbmd0aFRvQ2xl
YXIgPiBjb3N0VG9BbGxvY2F0ZU5ld0J1dHRlcmZseSkgewotICAgICAgICAgICAgcmVhbGxvY2F0
ZUFuZFNocmlua0J1dHRlcmZseShleGVjLT52bSgpLCBuZXdMZW5ndGgpOworICAgICAgICAgICAg
cmVhbGxvY2F0ZUFuZFNocmlua0J1dHRlcmZseSh2bSwgbmV3TGVuZ3RoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTQ5Nyw2ICs1MDgsOSBAQCBib29sIEpTQXJy
YXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAKIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gbV9idXR0ZXJmbHkuZ2V0KCk7CiAgICAgCiAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewpAQCAtNTQ4LDcgKzU2Miw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7CiAgICAgICAg
IGlmICghbGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoIWlzTGVuZ3RoV3JpdGFibGUoKSkKLSAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIH0KIApAQCAtNTgwLDcgKzU5NCw3IEBAIEpT
VmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAgICAgLy8gQ2FsbCB0aGUgW1tEZWxldGVdXSBpbnRlcm5hbCBtZXRob2Qgb2Yg
TyB3aXRoIGFyZ3VtZW50cyBpbmR4IGFuZCB0cnVlLgogICAgIGlmICghZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXMsIGV4ZWMsIGluZGV4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogICAg
IC8vIENhbGwgdGhlIFtbUHV0XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBhcmd1bWVudHMg
Imxlbmd0aCIsIGluZHgsIGFuZCB0cnVlLgpAQCAtNTk0LDIzICs2MDgsMjYgQEAgSlNWYWx1ZSBK
U0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogLy8gIC0gcHVzaGluZyB0byBhbiBhcnJheSBv
ZiBsZW5ndGggMl4zMi0xIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBl
cnJvci4KIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG1fYnV0dGVyZmx5
LmdldCgpOwogICAgIAogICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFy
cmF5Q2xhc3M6IHsKLSAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCAw
KTsKKyAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZCh2bSwgMCk7CiAgICAgICAgIEZBTExU
SFJPVUdIOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6IHsK
LSAgICAgICAgY29udmVydFVuZGVjaWRlZEZvclZhbHVlKGV4ZWMtPnZtKCksIHZhbHVlKTsKKyAg
ICAgICAgY29udmVydFVuZGVjaWRlZEZvclZhbHVlKHZtLCB2YWx1ZSk7CiAgICAgICAgIHB1c2go
ZXhlYywgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKICAgICBjYXNl
IEFycmF5V2l0aEludDMyOiB7CiAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKSB7Ci0gICAg
ICAgICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBjb252ZXJ0SW50MzJGb3JWYWx1ZSh2bSwgdmFsdWUpOwogICAgICAgICAgICAgcHVzaChl
eGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTYyNCw5ICs2
NDEsOSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMs
IGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5wdXRC
eUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCFleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZh
bGlkIGFycmF5IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC02MzgsMTUgKzY1NSwxNSBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVj
LCBKU1ZhCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGJ1dHRlcmZseS0+cHVibGljTGVuZ3Ro
KCk7CiAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7
CiAgICAgICAgIGlmIChsZW5ndGggPCBidXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5ndGhdLnNldChleGVjLT52bSgpLCB0
aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtsZW5ndGhd
LnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNM
ZW5ndGgobGVuZ3RoICsgMSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwg
dmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KHRo
aXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5o
YWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5
IGxlbmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0
aCIpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC02NTYs
MTMgKzY3MywxMyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAg
ICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7CiAgICAgICAgIGlmICghdmFsdWUu
aXNOdW1iZXIoKSkgewotICAgICAgICAgICAgY29udmVydERvdWJsZVRvQ29udGlndW91cyhleGVj
LT52bSgpKTsKKyAgICAgICAgICAgIGNvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXModm0pOwogICAg
ICAgICAgICAgcHVzaChleGVjLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgZG91YmxlIHZhbHVlQXNEb3VibGUgPSB2YWx1ZS5hc051bWJlcigpOwogICAg
ICAgICBpZiAodmFsdWVBc0RvdWJsZSAhPSB2YWx1ZUFzRG91YmxlKSB7Ci0gICAgICAgICAgICBj
b252ZXJ0RG91YmxlVG9Db250aWd1b3VzKGV4ZWMtPnZtKCkpOworICAgICAgICAgICAgY29udmVy
dERvdWJsZVRvQ29udGlndW91cyh2bSk7CiAgICAgICAgICAgICBwdXNoKGV4ZWMsIHZhbHVlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjc2LDkgKzY5Myw5IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywg
ZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVu
Z3RoIikpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIikp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTcwMyw3ICs3
MjAsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAg
IC8vIEZhc3QgY2FzZSAtIHB1c2ggd2l0aGluIHZlY3RvciwgYWx3YXlzIHVwZGF0ZSBtX2xlbmd0
aCAmIG1fbnVtVmFsdWVzSW5WZWN0b3IuCiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3Jh
Z2UtPmxlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoIDwgc3RvcmFnZS0+dmVjdG9yTGVuZ3Ro
KCkpIHsKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0uc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2xlbmd0aF0u
c2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5zZXRMZW5ndGgobGVu
Z3RoICsgMSk7CiAgICAgICAgICAgICArK3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3I7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC03MTEsMTAgKzcyOCwxMCBAQCB2b2lkIEpTQXJyYXk6OnB1
c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAKICAgICAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJh
eSBvZiBpbnZhbGlkIGxlbmd0aCAoMl4zMS0xKSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhy
b3dzIGEgcmFuZ2UgZXJyb3IuCiAgICAgICAgIGlmIChzdG9yYWdlLT5sZW5ndGgoKSA+IE1BWF9B
UlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKKyAgICAg
ICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5s
ZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVTNS4xIDE1LjQuNC43
IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCIp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTYzLDYgKzk4MCw5IEBA
IGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1QKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgdW5zaGlmdCBjYW4gYmUgaGFuZGxlZCwgZmFsc2UgdG8gZmFsbGJhY2suICAgIAog
Ym9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3Rv
cmFnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxl
bmd0aCgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwpAQCAt
OTgxLDEzICsxMDAxLDEzIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3Rv
cmEKICAgICAgICAgc3RvcmFnZSA9IG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAg
ICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzIC09IGNvdW50OwogICAgICAgICBzdG9yYWdlLT5zZXRW
ZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoICsgY291bnQpOwotICAgICAgICBzZXRCdXR0ZXJmbHlX
aXRob3V0Q2hhbmdpbmdTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgbmV3QnV0dGVyZmx5KTsKKyAgICAg
ICAgc2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJlKHZtLCBuZXdCdXR0ZXJmbHkp
OwogICAgIH0gZWxzZSBpZiAoIW1vdmVGcm9udCAmJiB2ZWN0b3JMZW5ndGggLSBsZW5ndGggPj0g
Y291bnQpCiAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+YXJyYXlTdG9y
YWdlKCk7Ci0gICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2UoZXhlYy0+dm0oKSwgbW92
ZUZyb250LCBjb3VudCkpCisgICAgZWxzZSBpZiAodW5zaGlmdENvdW50U2xvd0Nhc2Uodm0sIG1v
dmVGcm9udCwgY291bnQpKQogICAgICAgICBzdG9yYWdlID0gYXJyYXlTdG9yYWdlKCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC0xMDA3LDYgKzEwMjcsOSBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5n
VHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBtX2J1dHRlcmZs
eS5nZXQoKTsKICAgICAKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CkBAIC0xMDIyLDEw
ICsxMDQ1LDEwIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW4KICAg
ICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRvIHRoZSB1
bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYgaXQncyBu
b3QgaG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5kZXggPj0g
TUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJheVN0b3Jh
Z2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBcnJh
eVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFnZSh2bSkp
OwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwgb2xkTGVu
Z3RoICsgY291bnQpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7
CisgICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBvbGRMZW5ndGggKyBjb3VudCkpIHsKKyAg
ICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0gbV9idXR0ZXJm
bHkuZ2V0KCk7CkBAIC0xMDM1LDcgKzEwNTgsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0aDsgaS0t
ID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGJ1dHRlcmZseS0+Y29u
dGlndW91cygpW2ldLmdldCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFy
dEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVjLCBzdGFydElu
ZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7KSB7CkBAIC0x
MDU4LDEwICsxMDgxLDEwIEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4
aW4KICAgICAgICAgLy8gV2UgbWF5IGhhdmUgdG8gd2FsayB0aGUgZW50aXJlIGFycmF5IHRvIGRv
IHRoZSB1bnNoaWZ0LiBXZSdyZSB3aWxsaW5nIHRvIGRvIHNvCiAgICAgICAgIC8vIG9ubHkgaWYg
aXQncyBub3QgaG9ycmlibHkgc2xvdy4KICAgICAgICAgaWYgKG9sZExlbmd0aCAtIHN0YXJ0SW5k
ZXggPj0gTUlOX1NQQVJTRV9BUlJBWV9JTkRFWCkKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0
Q291bnRXaXRoQXJyYXlTdG9yYWdlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50LCBlbnN1cmVBcnJh
eVN0b3JhZ2UoZXhlYy0+dm0oKSkpOworICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhZ2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQsIGVuc3VyZUFycmF5U3RvcmFn
ZSh2bSkpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwg
b2xkTGVuZ3RoICsgY291bnQpKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYyk7CisgICAgICAgIGlmICghZW5zdXJlTGVuZ3RoKHZtLCBvbGRMZW5ndGggKyBjb3VudCkp
IHsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnV0dGVyZmx5ID0gbV9i
dXR0ZXJmbHkuZ2V0KCk7CkBAIC0xMDcxLDcgKzEwOTQsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZExlbmd0
aDsgaS0tID4gc3RhcnRJbmRleDspIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkodiAhPSB2
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShl
eGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPnZtKCkpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVj
LCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKHZtKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBvbGRMZW5ndGg7IGktLSA+IHN0YXJ0SW5kZXg7
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDkgQEAgU3RydWN0dXJlKiBKU0FycmF5QnVmZmVyQ29u
c3RydWN0b3I6OmNyZQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RBcnJheUJ1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0KICAgICAgICAganNDYXN0PEpT
QXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICAKQEAgLTk2LDE5
ICs5OSwyMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAg
CiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aCwgMSk7CiAg
ICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIFN0cnVjdHVyZSogYXJyYXlC
dWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVy
ZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgY29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLT5h
cnJheUJ1ZmZlclN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBKU0FycmF5QnVm
ZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgYXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0
ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBhcnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92
ZShidWZmZXIpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBcnJheUJ1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJBcnJheUJ1ZmZl
ciIpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJBcnJh
eUJ1ZmZlciIpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3I6
OmdldENvbnN0cnVjdERhdGEoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTgz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDE0ICszNywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNT
bGljZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICAKICAgICBK
U0FycmF5QnVmZmVyKiB0aGlzT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4o
ZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iamVjdCkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBzbGljZSBt
dXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIHNsaWNlIG11c3QgYmUg
YW4gYXJyYXkgYnVmZmVyLiIpKTsKICAgICAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJT
bGljZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTbGljZSByZXF1aXJl
cyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIikpOwogICAgIAogICAgIGludDMyX3QgYmVnaW4gPSBl
eGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTYwLDExICs2MywxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJhCiAgICAgCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdCdWZmZXIgPSB0aGlz
T2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwogICAgIGlmICghbmV3QnVmZmVyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVj
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMsIHNjb3BlKSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUt
Pmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZSgpOwogICAgIAotICAgIEpTQXJy
YXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1
Y3R1cmUsIG5ld0J1ZmZlcik7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1
ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIG5ld0J1ZmZlcik7CiAgICAgCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0lubGluZXMuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw3IEBACiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKyNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCiAjaW5jbHVkZSAiV2Vha0dDTWFwSW5saW5lcy5oIgogCiAjZW5kaWYgLy8gSlNDSW5s
aW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVl
LmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA3LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAwOCwgMjAxMiwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOTQs
NiArOTQsOCBAQCBPcHRpb25hbDxkb3VibGU+IEpTVmFsdWU6OnRvTnVtYmVyRnJvbVByCiAKIEpT
T2JqZWN0KiBKU1ZhbHVlOjp0b09iamVjdFNsb3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBBU1NFUlQo
IWlzQ2VsbCgpKTsKIAogICAgIGlmIChpc0ludDMyKCkgfHwgaXNEb3VibGUoKSkKQEAgLTEwMiw4
ICsxMDQsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6dG9PYmplY3RTbG93Q2FzZShFeGVjCiAgICAg
ICAgIHJldHVybiBjb25zdHJ1Y3RCb29sZWFuRnJvbUltbWVkaWF0ZUJvb2xlYW4oZXhlYywgZ2xv
YmFsT2JqZWN0LCBhc1ZhbHVlKCkpOwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkp
OwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAqdGhpcykpOworICAgIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTEyNCw2ICsxMjUsOSBAQCBKU1ZhbHVlIEpTVmFsdWU6
OnRvVGhpc1Nsb3dDYXNlKEV4ZWNTdGF0CiAKIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXpl
UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChpc0NlbGwoKSkgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgICAgIHJldHVy
biBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpOwpAQCAtMTM3
LDggKzE0MSw3IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAg
ICAgICAgcmV0dXJuIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Ym9vbGVhblByb3RvdHlw
ZSgpOwogCiAgICAgQVNTRVJUKGlzVW5kZWZpbmVkT3JOdWxsKCkpOwotICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7Ci0gICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90QW5PYmplY3RF
cnJvcihleGVjLCAqdGhpcykpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVOb3RBbk9iamVjdEVycm9yKGV4ZWMsICp0aGlzKSk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTE0Niw2ICsxNDksNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3Rv
dHlwZShFCiBib29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9
IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIHB1dFRvUHJpbWl0aXZl
QnlJbmRleChleGVjLCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgc2xvdC5pc1N0cmljdE1vZGUoKSk7
CkBAIC0xNjAsNyArMTY0LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3Rh
dGUqIAogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5nZXRQcm90b3R5cGVEaXJlY3QoKTsK
ICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNzIsNyArMTc2LDcgQEAgYm9vbCBKU1ZhbHVlOjpw
dXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIAogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC0xOTYsMTIgKzIwMCwxNSBAQCBib29sIEpTVmFs
dWU6OnB1dFRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogCiAgICAgfQogICAgIAogICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2Rl
UmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmVCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNo
b3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9B
UlJBWV9JTkRFWCkgewogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCgqdGhpcywgc2hvdWxk
VGhyb3cpOwogICAgICAgICByZXR1cm4gcHV0VG9QcmltaXRpdmUoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpLCB2YWx1ZSwgc2xvdCk7CkBAIC0yMTcsNyArMjI0LDcg
QEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoRXhlYwogICAgICAgICByZXR1
cm4gcHV0UmVzdWx0OwogICAgIAogICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0zMzgsMTMgKzM0NSwx
NSBAQCBib29sIEpTVmFsdWU6OmlzVmFsaWRDYWxsZWUoKQogCiBKU1N0cmluZyogSlNWYWx1ZTo6
dG9TdHJpbmdTbG93Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgcmV0dXJuRW1wdHlTdHJpbmdP
bkVycm9yKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgYXV0byBlcnJvclZhbHVlID0gWyZd
ICgpIC0+IEpTU3RyaW5nKiB7CiAgICAgICAgIGlmIChyZXR1cm5FbXB0eVN0cmluZ09uRXJyb3Ip
CiAgICAgICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfTsKICAgICAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEFT
U0VSVCghaXNTdHJpbmcoKSk7CiAgICAgaWYgKGlzSW50MzIoKSkgewogICAgICAgICBhdXRvIGlu
dGVnZXIgPSBhc0ludDMyKCk7CkBAIC0zNjMsNyArMzcyLDcgQEAgSlNTdHJpbmcqIEpTVmFsdWU6
OnRvU3RyaW5nU2xvd0Nhc2UoRXhlYwogICAgIGlmIChpc1VuZGVmaW5lZCgpKQogICAgICAgICBy
ZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogICAgIGlmIChpc1N5bWJv
bCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBzdHJpbmciKSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEg
c3RyaW5nIikpOwogICAgICAgICByZXR1cm4gZXJyb3JWYWx1ZSgpOwogICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5o
CShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzMyw4ICs2MzMsMTEg
QEAgaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9QcmltaXRpdmUoRXhlYwogCiBpbmxpbmUgUHJl
ZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc1N0
cmluZygpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJp
bWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5nLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJpbWl0aXZlIGhpbnQgaXMgbm90IGEgc3RyaW5n
LiIpKTsKICAgICAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKICAgICB9CiAKQEAgLTY0OSw3ICs2
NTIsNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSB0b1ByZWZlcnJlCiAgICAgaWYg
KFdURjo6ZXF1YWwoaGludFN0cmluZywgInN0cmluZyIpKQogICAgICAgICByZXR1cm4gUHJlZmVy
U3RyaW5nOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVyJywgJ3N0
cmluZycuIikpOworICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1i
ZXInLCAnc3RyaW5nJy4iKSk7CiAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKIH0KIApAQCAtMTAz
MSw5ICsxMDM0LDEyIEBAIGlubGluZSBUcmlTdGF0ZSBKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuKCkK
IAogQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OnJlcXVpcmVPYmplY3RDb2VyY2libGUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFpc1VuZGVmaW5l
ZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFuT2JqZWN0RXJyb3IoZXhlYywgKnRoaXMpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihleGVjLCAq
dGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDcsMTYgKzQ3LDE4IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKICAgICBF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBwYXNzZWRCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gcGFzc2VkQnVmZmVyOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVvZih1aW50OF90KSkp
IHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKSk7CisgICAgICAgIHRo
cm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zmc2V0
QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSkpOworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkJ5
dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBj
b250ZXh0KAogICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgQ29uc3RydWN0aW9uQ29udGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VSVChjb250ZXh0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZp
ZXdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIyLDEy
ICsxMjIsMTUgQEAgU3RydWN0dXJlKiBKU0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGVTdAogdGVt
cGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcgPSBqc0R5
bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkYXRh
VmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3IikpOwogICAgIAog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0
aGUgYnl0ZU9mZnNldCkiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIk5lZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50ICh0aGUgYnl0
ZU9mZnNldCkiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTE0Myw3ICsxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0
aCgpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5
dGVMZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nl
c3MiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiKSkpOwog
CiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CiAgICAgdW5pb24gewpAQCAtMTY3LDEyICsxNzAsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
Z2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogRW5j
b2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4ZWMt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhv
ZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBt
dXN0IGJlIGEgRGF0YVZpZXciKSk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiTmVlZCBhdCBsZWFzdCB0d28gYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0IGFuZCB2YWx1ZSki
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQgdmFs
dWUpIikpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CkBAIC0xOTgsNyArMjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsK
ICAgICBpZiAoZWxlbWVudFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVu
Z3RoIC0gZWxlbWVudFNpemUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk91dCBvZiBib3VuZHMgYWNjZXNzIikpKTsKIAogICAg
IHVpbnQ4X3QqIGRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YVZpZXctPnZlY3Rv
cigpKSArIGJ5dGVPZmZzZXQ7CiAKQEAgLTIyMCwyNyArMjI2LDM2IEBAIEVuY29kZWRKU1ZhbHVl
IHNldERhdGEoRXhlY1N0YXRlKiBleGVjKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGFWaWV3UHJvdG9HZXR0ZXJCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMgfHRoaXN8
IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3RzIHx0aGlz
fCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh2aWV3LT5qc0J1ZmZlcihleGVjKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNEYXRhVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmll
dyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICJEYXRhVmlldy5wcm90b3R5cGUuYnVmZmVyIGV4cGVjdHMg
fHRoaXN8IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZlciBleHBlY3Rz
IHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRGF0YVZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0
PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF2aWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcucHJvdG90eXBlLmJ1ZmZl
ciBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5idWZm
ZXIgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZXhlYy0+Y2FsbGVlKCkpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihleGVjLCBleGVjLT5jYWxsZWUoKSkpOwogfQogCiBjb25zdCBDbGFzc0luZm8gSlNG
dW5jdGlvbjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTRnVuY3Rpb24pIH07CkBAIC0zMjEsNiArMzIzLDkgQEAgc3RhdGljIEpT
VmFsdWUgcmV0cmlldmVDYWxsZXJGdW5jdGlvbihFeAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0
aW9uOjpjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTRnVuY3Rpb24qIHRoaXNP
YmogPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIEpTVmFsdWUgY2FsbGVy
ID0gcmV0cmlldmVDYWxsZXJGdW5jdGlvbihleGVjLCB0aGlzT2JqKTsKQEAgLTMzNSw3ICszNDAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsZXJHZXR0ZXIoCiAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlcik7CiAgICAgaWYgKGZ1
bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIHx8ICFmdW5jdGlvbi0+anNFeGVjdXRh
YmxlKCktPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxlcik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIkZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxs
ZXIiKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0cmlldmUgc3Ry
aWN0IGNhbGxlciIpKSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtNDIzLDYgKzQyOCw5IEBAIHZvaWQgSlNGdW5j
dGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU4KIAogYm9vbCBKU0Z1bmN0aW9uOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNlbGwpOwogCiAg
ICAgaWYgKFVOTElLRUxZKGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBA
IC00MzcsMjUgKzQ0NSwyOCBAQCBib29sIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3Vj
aCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0
aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cisg
ICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX3JhcmVEYXRhKQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xl
YXIoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAg
IC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5jZSBhIFtbUHV0XV0gbXVzdCBj
bGVhciBtX3JhcmVEYXRhLgogICAgICAgICBQdXRQcm9wZXJ0eVNsb3QgZG9udENhY2hlKHRoaXNP
YmplY3QpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpw
dXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgZG9udENhY2hlKTsKICAg
ICB9CiAgICAgaWYgKHRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSAm
JiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMgfHwgcHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpKSB7CiAgICAgICAgIC8v
IFRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSB0byBiZSByZWlmaWVkLCBpZiB0aGlzIGlz
IG5vdCBhbHJlYWR5IHRoZSBjYXNlIQogICAgICAgICBib29sIG9rYXkgPSB0aGlzT2JqZWN0LT5o
YXNQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9r
YXksIG9rYXkpOworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBCYXNl
OjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAg
fQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50
cyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcikgewogICAg
ICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB0aGlzT2JqZWN0
LT5yZWlmeUxhenlQcm9wZXJ0eUlmTmVlZGVkKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgc2Nv
cGUucmVsZWFzZSgpOwogICAgIHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKQEAgLTQ4MCw2ICs0OTEsOSBAQCBib29sIEpT
RnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogCiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVm
aW5lT3duUHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Is
IGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU0Z1bmN0aW9uKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rpb24qPihvYmplY3QpOwogICAgIGlmICh0aGlzT2Jq
ZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPnJl
aWZ5Qm91bmROYW1lSWZOZWVkZWQoZXhlYywgcHJvcGVydHlOYW1lKTsKQEAgLTQ5MCw3ICs1MDQs
NyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAgICAgICAgIC8v
IE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBv
bmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91
dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRh
KQogICAgICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+Y2xlYXIoIlN0b3JlIHRvIHBy
b3RvdHlwZSBwcm9wZXJ0eSBvZiBhIGZ1bmN0aW9uIik7CiAgICAgICAgIHJldHVybiBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
dGhyb3dFeGNlcHRpb24pOwpAQCAtNTIwLDI3ICs1MzQsMjcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpk
ZWZpbmVPd25Qcm9wZXJ0eShKU09iagogICAgICAKICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1
cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBp
ZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2Yg
dW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJh
YmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQo
KSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlm
ICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3Ip
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
VW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVz
ZW50KCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgaWYgKCF2YWx1ZUNoZWNrKSB7CiAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHByb3BlcnR5LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkocmV2aXNpb24g
MjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0dlbmVy
aWNUeXBlZEFycmF5Vmlld19oCiAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgorI2lu
Y2x1ZGUgIlRocm93U2NvcGUuaCIKICNpbmNsdWRlICJUb05hdGl2ZUZyb21WYWx1ZS5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTE2OCwxMiArMTY5LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIHNldEluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSBqc1ZhbHVl
KQogICAgIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgICAgIHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUgdmFsdWUgPSB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihleGVjLCBqc1ZhbHVlKTsK
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1
Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtODAsOCArODAsMTEgQEAgU3RydWN0dXJlKiBKU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cgogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdGcm9tSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBpdGVyYXRvcikKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmICghaXRlcmF0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUg
Zmlyc3QgYXJndW1lbnQgZGlkIG5vdCByZXR1cm4gYW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC5JdGVy
YXRvciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50IGRpZCBub3QgcmV0dXJuIGFuIG9iamVjdC4iKSk7
CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBzdG9yYWdlOwogICAgIHdoaWxlICh0cnVlKSB7
CkBAIC0xMTgsOCArMTIxLDEwIEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5
cGVkQXIKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KIGlubGluZSBKU09iamVjdCogY29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBFbmNvZGVkSlNWYWx1ZSBmaXJzdEFyZ3VtZW50LCB1bnNp
Z25lZCBvZmZzZXQsIE9wdGlvbmFsPHVuc2lnbmVkPiBsZW5ndGhPcHQpCiB7Ci0gICAgSlNWYWx1
ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZpcnN0QXJndW1lbnQpOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNWYWx1ZSBmaXJzdFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGZpcnN0QXJndW1l
bnQpOwogCiAgICAgaWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxK
U0FycmF5QnVmZmVyKj4oZmlyc3RWYWx1ZSkpIHsKICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPSBqc0J1ZmZlci0+aW1wbCgpOwpAQCAtMTI5LDcgKzEzNCw3IEBAIGlubGluZSBK
U09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICAgICAgICAgIGxlbmd0aCA9IGxl
bmd0aE9wdC52YWx1ZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICgoYnVmZmVy
LT5ieXRlTGVuZ3RoKCkgLSBvZmZzZXQpICUgVmlld0NsYXNzOjplbGVtZW50U2l6ZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsICJBcnJheUJ1ZmZlciBsZW5n
dGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQg
c2l6ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2Nv
cGUsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVs
dGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSIpOwogICAgICAgICAgICAgbGVuZ3RoID0gKGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAvIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAKICAg
ICAgICAgfQpAQCAtMTM5LDcgKzE0NCw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXIKICAgICBBU1NFUlQoIW9mZnNldCAmJiAhbGVuZ3RoT3B0KTsKICAgICAKICAg
ICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3Rl
ZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIEFycmF5
QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQuIikpOwogICAgIAogICAgIC8vIEZvciBldmVy
eXRoaW5nIGJ1dCBEYXRhVmlldywgd2UgYWxsb3cgY29uc3RydWN0aW9uIHdpdGggYW55IG9mOgog
ICAgIC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEgY29weSBvZiB0aGUgb2YgdGhh
dCBhcnJheS4KQEAgLTE3NCw3ICsxNzksNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFyCiAgICAgICAgICAgICAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
ICAgICAgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGl0ZXJhdG9y
RnVuYywgY2FsbERhdGEpOwogICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1
bWVudCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0
b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBjYW5ub3QgYmUgY2FsbGVkLiIpKTsKIAogICAgICAg
ICAgICAgICAgICAgICBBcmdMaXN0IGFyZ3VtZW50czsKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZSBpdGVyYXRvciA9IGNhbGwoZXhlYywgaXRlcmF0b3JGdW5jLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG9iamVjdCwgYXJndW1lbnRzKTsKQEAgLTIwNiwxNSArMjExLDE1IEBAIGlubGluZSBKU09i
amVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXIKICAgICBpZiAoZmlyc3RWYWx1ZS5pc0ludDMy
KCkpCiAgICAgICAgIGxlbmd0aCA9IGZpcnN0VmFsdWUuYXNJbnQzMigpOwogICAgIGVsc2UgaWYg
KCFmaXJzdFZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52
YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQiKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGxlbmd0
aCA9IHN0YXRpY19jYXN0PGludD4oZmlyc3RWYWx1ZS5hc051bWJlcigpKTsKICAgICAgICAgaWYg
KGxlbmd0aCAhPSBmaXJzdFZhbHVlLmFzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxlbmd0aCBhcmd1
bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFy
cmF5IGxlbmd0aCBhcmd1bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsK
ICAgICB9CiAKICAgICBpZiAobGVuZ3RoIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VF
cnJvcihleGVjLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdhdGl2ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiUmVxdWVzdGVkIGxlbmd0aCBpcyBuZWdh
dGl2ZSIpOwogICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGxl
bmd0aCk7CiB9CiAKQEAgLTIyNCw2ICsyMjksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEdlCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlv
biA9IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CiAgICAgU3RydWN0dXJlKiBw
YXJlbnRTdHJ1Y3R1cmUgPSBmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnR5cGVkQXJyYXlTdHJ1
Y3R1cmUoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUpOwogICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgZXhlYy0+bmV3VGFyZ2V0KCksIHBhcmVudFN0cnVjdHVyZSk7CkBAIC0yMzQsNyArMjQyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZQogCiAgICAgaWYgKCFh
cmdDb3VudCkgewogICAgICAgICBpZiAoVmlld0NsYXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUg
PT0gVHlwZURhdGFWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJEYXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBv
bmUgYXJndW1lbnQuIikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMgYXQg
bGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKIAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkpOwogICAgIH0KQEAgLTI2OCw3
ICsyNzYsOSBAQCBDb25zdHJ1Y3RUeXBlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsR2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVu
Y3Rpb25UeXBlRXJyb3IoZXhlYywgVmlld0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSkpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgVmlld0NsYXNzOjppbmZv
KCktPmNsYXNzTmFtZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1ICs0OCwxNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIENvbnN0cnVjdGlvbkNvbnRleHQg
Y29udGV4dChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFk
YXB0b3I6OlR5cGUpKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRl
eHQodm0sIHN0cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkp
OwogICAgIGlmICghY29udGV4dCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVz
dWx0ID0KLSAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc+KGV4ZWMtPnZtKCkuaGVhcCkpCi0gICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KGV4ZWMtPnZtKCksIGNvbnRleHQpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24oZXhl
Yy0+dm0oKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKKyAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXco
dm0sIGNvbnRleHQpOworICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTY0LDE3ICs2NiwxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dG9yPgogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKAogICAgIEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQoCi0gICAgICAgIGV4ZWMtPnZtKCksIHN0
cnVjdHVyZSwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSksCisgICAgICAg
IHZtLCBzdHJ1Y3R1cmUsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpLAog
ICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0OjpEb250SW5pdGlhbGl6ZSk7CiAgICAgaWYgKCFj
b250ZXh0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAg
ICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4oZXhl
Yy0+dm0oKS5oZWFwKSkKLSAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcoZXhlYy0+dm0o
KSwgY29udGV4dCk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAg
ICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+
KHZtLmhlYXApKQorICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7
CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtODMsMjIgKzg3LDI0IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBK
U0dlbmUKICAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOwogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5n
ZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKLSAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5n
dGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2Yg
YnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKCFBcnJh
eUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZSkp
IHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCIpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkJ5dGUgb2Zmc2V0
IGlzIG5vdCBhbGlnbmVkIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAg
Q29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgpOworICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2
bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgQVNTRVJUKGNv
bnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiByZXN1bHQgPQotICAgICAgICBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4oZXhlYy0+
dm0oKS5oZWFwKSkKLSAgICAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcoZXhlYy0+dm0oKSwg
Y29udGV4dCk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbihleGVjLT52bSgpKTsKKyAgICAg
ICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZt
LmhlYXApKQorICAgICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyh2bSwgY29udGV4dCk7Cisg
ICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTI4LDEwICsxMzQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnZhbGlkYXRlUmFuZ2UoCiAgICAgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoY2FuQWNjZXNzUmFuZ2VRdWlja2x5KG9mZnNldCwgbGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBjb25zaXN0aW5nIG9mIG9mZnNldCBhbmQg
bGVuZ3RoIGFyZSBvdXQgb2YgYm91bmRzIikpOworICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBjb25zaXN0aW5nIG9mIG9mZnNldCBh
bmQgbGVuZ3RoIGFyZSBvdXQgb2YgYm91bmRzIikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMjkwLDggKzI5OCwxMCBAQCBBcnJheUJ1ZmZlciogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogRW5jb2RlZEpTVmFsdWUgSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnRocm93TmV1dGVyZWRUeXBlZEFycmF5VHlwZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgb2JqZWN0LCBQcm9wZXJ0eU5hbWUpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgQVNTRVJUX1VOVVNFRChvYmplY3QsIGpzQ2FzdDxKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldyo+KEpTVmFsdWU6OmRlY29kZShvYmplY3QpKS0+aXNOZXV0ZXJlZCgpKTsK
LSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogaW5saW5lIEpTQXJyYXlCdWZmZXJWaWV3
KiBzcGVjaWVzQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGV4ZW1wbGFyLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgY29uc3QgRnVuY3RvciYgZGVmYXVsdENvbnN0cnVj
dG9yKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9IGV4ZW1wbGFy
LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTQsNyAr
NTcsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1CiAgICAgaWYg
KGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Q29uc3Ry
dWN0b3IoKTsKICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91
bGQgbm90IGJlIG51bGwiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBub3QgYmUgbnVsbCIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC03MywxMSArNzYsMTEgQEAgaW5s
aW5lIEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVzQ29uc3RydQogICAgICAgICBpZiAoIXZpZXct
PmlzTmV1dGVyZWQoKSkKICAgICAgICAgICAgIHJldHVybiB2aWV3OwogCi0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgic3BlY2llcyBj
b25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpKTsKKyAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJzcGVjaWVzIGNvbnN0cnVjdG9y
IGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3IikpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC05Niw0MyArOTksNDUgQEAgaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBl
ZEluZGV4RnJvbQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChFeGVj
U3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY1NldChWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMuMjIKICAg
ICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOwogCi0gICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qg
b25lIGFyZ3VtZW50IikpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+YXJndW1lbnRDb3VudCgp
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAgICAgdW5zaWduZWQg
b2Zmc2V0OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewogICAgICAgICBk
b3VibGUgb2Zmc2V0TnVtYmVyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnRlZ2Vy
KGV4ZWMpOwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBpZiAob2Zmc2V0TnVtYmVyIDwgMCkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihleGVjLCAiT2Zmc2V0IHNob3VsZCBu
b3QgYmUgbmVnYXRpdmUiKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG9mZnNldE51bWJlciA8IDAp
KQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiT2Zm
c2V0IHNob3VsZCBub3QgYmUgbmVnYXRpdmUiKTsKICAgICAgICAgb2Zmc2V0ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHN0ZDo6bWluKG9mZnNldE51bWJlciwgc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIG9mZnNldCA9IDA7CiAKLSAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICBpZiAoVU5MSUtFTFkodGhpc09iamVjdC0+aXNO
ZXV0ZXJlZCgpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgSlNP
YmplY3QqIHNvdXJjZUFycmF5ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApKTsKLSAgICBpZiAoIXNvdXJjZUFycmF5KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHNob3Vs
ZCBiZSBhbiBvYmplY3QiKSk7CisgICAgaWYgKFVOTElLRUxZKCFzb3VyY2VBcnJheSkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkZp
cnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhbiBvYmplY3QiKSk7CiAKICAgICB1bnNpZ25lZCBsZW5n
dGg7CiAgICAgaWYgKGlzVHlwZWRWaWV3KHNvdXJjZUFycmF5LT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlKSkgewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlVmll
dyA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHNvdXJjZUFycmF5KTsKLSAgICAgICAgaWYg
KHNvdXJjZVZpZXctPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICBpZiAoVU5MSUtFTFkoc291cmNlVmlldy0+aXNOZXV0ZXJlZCgpKSkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVm
ZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgICAgICBsZW5ndGggPSBqc0Nh
c3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihzb3VyY2VBcnJheSktPmxlbmd0aCgpOwogICAgIH0gZWxz
ZQotICAgICAgICBsZW5ndGggPSBzb3VyY2VBcnJheS0+Z2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgbGVuZ3RoID0gc291
cmNlQXJyYXktPmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4
ZWMpOwogCi0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAKICAgICB0aGlzT2JqZWN0LT5zZXQoZXhlYywgb2Zmc2V0LCBzb3VyY2VBcnJh
eSwgMCwgbGVuZ3RoLCBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKQEAgLTE0MCwxMyArMTQ1LDE1
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgLy8gMjIuMi4zLjUKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyog
dGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5
QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGxvbmcgbGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CiAgICAgbG9uZyB0byA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoZXhlYywgMCwgbGVuZ3RoKTsKQEAgLTE2NSw3ICsxNzIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgbG9uZyBjb3VudCA9IHN0
ZDo6bWluKGxlbmd0aCAtIHN0ZDo6bWF4KHRvLCBmcm9tKSwgZmluYWwgLSBmcm9tKTsKIAogICAg
IGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJh
eUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3
Q2xhc3M6OkVsZW1lbnRUeXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAg
ICAgbWVtbW92ZShhcnJheSArIHRvLCBhcnJheSArIGZyb20sIGNvdW50ICogdGhpc09iamVjdC0+
ZWxlbWVudFNpemUpOwpAQCAtMTc0LDEyICsxODEsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luY2x1ZGVzKEV4ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5jbHVkZXMoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKy8vICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
Vmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTE5Myw3ICsyMDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+
aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBl
ZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0
YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlw
ZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIGF1dG8gdGFyZ2V0T3B0
aW9uID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWVXaXRob3V0Q29lcmNpb24o
dmFsdWVUb0ZpbmQpOwpAQCAtMjE5LDE2ICsyMjgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKFZNJiB2bSwgRXhlY1N0YXRlKiBl
eGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMuMTMKLSAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3Mq
PihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTIzOCw3ICsy
NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiAgICAgICAg
IHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5
ID0gdGhpc09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICBhdXRvIHRhcmdldE9wdGlvbiA9IFZp
ZXdDbGFzczo6dG9BZGFwdG9yTmF0aXZlRnJvbVZhbHVlV2l0aG91dENvZXJjaW9uKHZhbHVlVG9G
aW5kKTsKQEAgLTI1NiwxMSArMjY3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSm9pbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+
KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3Nh
Z2UpOwogCiAgICAgLy8gMjIuMi4zLjE0CiAgICAgYXV0byBqb2luV2l0aFNlcGFyYXRvciA9IFsm
XSAoU3RyaW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29kZWRKU1ZhbHVlIHsKQEAgLTI4OSwyMSAr
MzAzLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIGlmICh0aGlz
T2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhh
c0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAgICAgcmV0dXJuIGpvaW5XaXRoU2VwYXJhdG9y
KHNlcGFyYXRvclN0cmluZy0+dmlldyhleGVjKS5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8g
MjIuMi4zLjE2Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0
aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxl
YXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3Qt
Pmxlbmd0aCgpOwogCkBAIC0zMjYsNyArMzQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgYXV0
byB0YXJnZXRPcHRpb24gPSBWaWV3Q2xhc3M6OnRvQWRhcHRvck5hdGl2ZUZyb21WYWx1ZVdpdGhv
dXRDb2VyY2lvbih2YWx1ZVRvRmluZCk7CiAgICAgaWYgKCF0YXJnZXRPcHRpb24pCkBAIC0zNDUs
NyArMzYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihFeGVjU3RhdGUq
IGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAy
Mi4yLjMuMwogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihl
eGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zNTQsNyArMzcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aChWTSYsIEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAyMi4yLjMuMTcKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMzYzLDcg
KzM3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChWTSYsIEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICAvLyAyMi4yLjMuMgogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xh
c3MqPihleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0zNzIsNyArMzg4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRl
T2Zmc2V0KFZNJiwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIDIyLjIuMy4zCiAgICAgVmll
d0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgp
KTsKQEAgLTM4MSwxMiArMzk3LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKEV4
ZWNTdGF0ZSogZXhlYykKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKKy8v
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIxCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVt
ZW50VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHN0ZDo6cmV2
ZXJzZShhcnJheSwgYXJyYXkgKyB0aGlzT2JqZWN0LT5sZW5ndGgoKSk7CkBAIC0zOTUsMTIgKzQx
NCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTb3J0KFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyAyMi4yLjMuMjUKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNz
Kj4oZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJI
YXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKICAgICB0aGlzT2JqZWN0LT5zb3J0KCk7CiAKQEAgLTQwOCwxNSArNDMwLDE3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGUKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlld0NsYXNzPgotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjKQogeworLy8gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyAyMi4yLjMu
MjYKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgVmlld0NsYXNzKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
dGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdW5zaWduZWQgdGhpc0xlbmd0
aCA9IHRoaXNPYmplY3QtPmxlbmd0aCgpOwogCkBAIC00MjgsNyArNDUyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgICAgICByZXR1cm4gZW5jb2RlZEpT
VmFsdWUoKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAg
ICAvLyBDbGFtcCBlbmQgdG8gYmVnaW4uCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7
CkBAIC00NDgsNyArNDcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmlj
VHlwZQogCiAgICAgQVNTRVJUKCFyZXN1bHQtPmlzTmV1dGVyZWQoKSk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIC8vIFdlIHJldHVybiBlYXJseSBoZXJl
IHNpbmNlIHdlIGRvbid0IGFsbG9jYXRlIGEgYmFja2luZyBzdG9yZSBpZiBsZW5ndGggaXMgMCBh
bmQgbWVtbW92ZSBkb2VzIG5vdCBsaWtlIG51bGxwdHJzCiAgICAgaWYgKCFsZW5ndGgpCkBAIC00
OTIsMTUgKzUxNiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpZXdDbGFzcz4KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mdm0sIEV4ZWNTdGF0ZSogZXhl
YykKIHsKKy8vICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gMjIuMi4zLjIzCi0gICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4
ZWMtPmNhbGxlZSgpKTsKIAogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3
Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJy
b3JNZXNzYWdlKTsKIAogICAgIC8vIEdldCB0aGUgbGVuZ3RoIGhlcmU7IGxhdGVyIGFzc2VydCB0
aGF0IHRoZSBsZW5ndGggZGlkbid0IGNoYW5nZS4KICAgICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0g
dGhpc09iamVjdC0+bGVuZ3RoKCk7CkBAIC01NTIsNyArNTc4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZQogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTQXJyYXlC
dWZmZXJWaWV3Kj4ocmVzdWx0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgInNwZWNpZXMgY29uc3RydWN0b3IgZGlk
IG5vdCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciKTsKKyAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4gYSBUeXBlZEFycmF5
IFZpZXciKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwMiwxOSArMTIwMiwyMiBAQCBV
bmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIEpTR2xvYmFsT2JqZWN0CiAKIFVubGlua2VkRXZhbENv
ZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZUV2YWxDb2RlQmxvY2soQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEV2YWxFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWikKIHsKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFBhcnNlckVy
cm9yIGVycm9yOwogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlID0gZXhlY3V0YWJs
ZS0+aXNTdHJpY3RNb2RlKCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpTUGFyc2Vy
U3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUgPSBo
YXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgPyBEZWJ1Z2dlck9uIDogRGVidWdnZXJPZmY7CiAgICAg
RXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUtPmV4ZWN1dGFibGVJ
bmZvKCkuZXZhbENvbnRleHRUeXBlKCk7CiAgICAgCi0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHZtKCkuY29kZUNhY2hlKCktPmdldEV2YWxDb2RlQmxvY2so
Ci0gICAgICAgIHZtKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9y
LCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKKyAgICBVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0uY29kZUNhY2hlKCktPmdldEV2YWxDb2Rl
QmxvY2soCisgICAgICAgIHZtLCBleGVjdXRhYmxlLCBleGVjdXRhYmxlLT5zb3VyY2UoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgZGVidWdnZXJNb2RlLCBl
cnJvciwgZXZhbENvbnRleHRUeXBlLCB2YXJpYWJsZXNVbmRlclREWik7CiAKICAgICBpZiAoaGFz
RGVidWdnZXIoKSkKICAgICAgICAgZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKGNhbGxGcmFtZSwg
ZXhlY3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNz
YWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkgewotICAgICAgICB0aHJvd1ZNRXJy
b3IoY2FsbEZyYW1lLCBlcnJvci50b0Vycm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBlcnJvci50b0Vy
cm9yT2JqZWN0KHRoaXMsIGV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTIyMywxNiArMTIyNiwxOSBAQCBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2sqIEpTR2xvYmFsT2JqZWN0OjpjCiAKIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxvY2soQ2FsbEZyYW1l
KiBjYWxsRnJhbWUsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlKQogeworICAg
IFZNJiB2bSA9IHRoaXMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVn
Z2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dl
ck9mZjsKLSAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKLSAgICAg
ICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRp
bk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgZXJyb3IpOworICAgIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSB2bS5jb2RlQ2FjaGUoKS0+
Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKKyAgICAgICAgdm0sIGV4ZWN1dGFibGUsIGV4ZWN1
dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dl
ck1vZGUsIGVycm9yKTsKIAogICAgIGlmIChoYXNEZWJ1Z2dlcigpKQogICAgICAgICBkZWJ1Z2dl
cigpLT5zb3VyY2VQYXJzZWQoY2FsbEZyYW1lLCBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRl
cigpLCBlcnJvci5saW5lKCksIGVycm9yLm1lc3NhZ2UoKSk7CiAKICAgICBpZiAoZXJyb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGVycm9yLnRvRXJyb3JP
YmplY3QodGhpcywgZXhlY3V0YWJsZS0+c291cmNlKCkpKTsKKyAgICAgICAgdGhyb3dWTUVycm9y
KGNhbGxGcmFtZSwgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmplY3QodGhpcywgZXhlY3V0YWJsZS0+
c291cmNlKCkpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOSwgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAo
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBPcmxv
dmljaAogICoKQEAgLTc2LDExICs3NiwxNCBAQCBzdGF0aWMgQml0bWFwPDI1Nj4gbWFrZUNoYXJh
Y3RlckJpdG1hcChjCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogc3RhdGljIEpT
VmFsdWUgZW5jb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQml0bWFwPDI1Nj4mIGRvTm90RXNj
YXBlLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICAvLyAxOC4yLjYuMS4xIFJ1bnRpbWUgU2VtYW50aWNzOiBFbmNv
ZGUgKCBzdHJpbmcsIHVuZXNjYXBlZFNldCApCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5p
by9lY21hMjYyLyNzZWMtZW5jb2RlCiAKLSAgICBhdXRvIHRocm93RXhjZXB0aW9uID0gW2V4ZWNd
IHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTdHJpbmcgY29udGFpbmVkIGFuIGlsbGVnYWwg
VVRGLTE2IHNlcXVlbmNlLiIpKSk7CisgICAgYXV0byB0aHJvd0V4Y2VwdGlvbiA9IFsmc2NvcGUs
IGV4ZWNdIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3RyaW5nIGNvbnRhaW5lZCBhbiBp
bGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iKSkpOwogICAgIH07CiAKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CkBAIC0xNjMsNiArMTY2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBl
PgogQUxXQVlTX0lOTElORQogc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IEJpdG1hcDwyNTY+
JiBkb05vdFVuZXNjYXBlLCBib29sIHN0cmljdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU3Ry
aW5nQnVpbGRlciBidWlsZGVyOwogICAgIGludCBrID0gMDsKICAgICBVQ2hhciB1ID0gMDsKQEAg
LTIwMyw3ICsyMDksNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBj
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hhckxlbiA9PSAwKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHN0cmljdCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVVJJRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJVUkkgZXJyb3IiKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVVJJIGVy
cm9yIikpKTsKICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjYXNlIHdoZXJlIHdlIGRvbid0
IHVzZSAic3RyaWN0IiBtb2RlIGlzIHRoZSAidW5lc2NhcGUiIGZ1bmN0aW9uLgogICAgICAgICAg
ICAgICAgIC8vIEZvciB0aGF0LCBpdCdzIGdvb2QgdG8gc3VwcG9ydCB0aGUgd29ua3kgIiV1IiBz
eW50YXggZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgICAgICAgICBpZiAo
ayA8PSBsZW5ndGggLSA2ICYmIHBbMV0gPT0gJ3UnCkBAIC02NDAsMTMgKzY0NiwxNiBAQCBzdGF0
aWMgZG91YmxlIHBhcnNlRmxvYXQoU3RyaW5nVmlldyBzKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgeCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICgheC5pc1N0cmlu
ZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHgpOwogCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkgewotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMs
IHNjb3BlLCBjcmVhdGVFdmFsRXJyb3IoZXhlYywgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIH0KIApAQCAtODQ1LDEyICs4NTQsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnbG9iYWxGdW5jVQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNUaHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUpOwogfQogICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXIoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsICInYXJndW1l
bnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNjZXNzZWQgaW4gc3RyaWN0
IG1vZGUuIik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsICInYXJndW1lbnRzJywgJ2NhbGxlZScsIGFuZCAnY2FsbGVyJyBjYW5ub3QgYmUgYWNj
ZXNzZWQgaW4gc3RyaWN0IG1vZGUuIik7CiB9CiAKIGNsYXNzIEdsb2JhbEZ1bmNQcm90b0dldHRl
ckZ1bmN0b3IgewpAQCAtODg3LDggKzkwMCwxMSBAQCBwcml2YXRlOgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgaWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZl
cnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYg
KGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbid0IGNvbnZlcnQg
dW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0IikpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4
ZWMsIE5vdFN0cmljdE1vZGUpKTsKIApAQCAtOTQ0LDggKzk2MCwxMSBAQCBib29sIGNoZWNrUHJv
dG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2xvYmFsRnVuY1Byb3RvU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBpZiAoZXhl
Yy0+dGhpc1ZhbHVlKCkuaXNVbmRlZmluZWRPck51bGwoKSkgCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQg
b3IgbnVsbCB0byBvYmplY3QiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoZXhlYy0+dGhpc1Zh
bHVlKCkuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3Ig
bnVsbCB0byBvYmplY3QiKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAKQEAgLTk2Miw3ICs5ODEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGds
b2JhbEZ1bmNQCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7
CiAgICAgdGhpc09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1ZSwgc2hvdWxkVGhy
b3dJZkNhbnRTZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUVudmlyb25tZW50LmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTEwLDEx
ICsxMTAsMTQgQEAgdm9pZCBKU01vZHVsZUVudmlyb25tZW50OjpnZXRPd25Ob25JbmRleAogCiBi
b29sIEpTTW9kdWxlRW52aXJvbm1lbnQ6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZUVudmlyb25tZW50Kj4oY2VsbCk7CiAgICAgLy8gQWxs
IGltcG9ydGVkIGJpbmRpbmdzIGFyZSBpbW11dGFibGUuCiAgICAgSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb24gcmVzb2x1dGlvbiA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpLT5yZXNvbHZl
SW1wb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgp
KSk7CiAgICAgaWYgKHJlc29sdXRpb24udHlwZSA9PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlv
bjo6VHlwZTo6UmVzb2x2ZWQpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IHJldHVybiBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOSBAQCB2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0Ojp2aXNpdENoaWxkCiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9k
dWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0eS1wCiAKICAgICBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCo+KGNlbGwpOwpAQCAtMTI5LDcgKzEzMiw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmdldE93blByb3AKICAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0
RW52aXJvbm1lbnQgPSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CiAKICAgICAg
ICAgUHJvcGVydHlTbG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICAgICAgYm9vbCBmb3VuZCA9IHRh
cmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlT
bG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBv
bGluZVNsb3QpOworICAgICAgICBib29sIGZvdW5kID0gdGFyZ2V0RW52aXJvbm1lbnQtPm1ldGhv
ZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCBy
ZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKGZvdW5kLCBmb3VuZCk7CiAKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVT
bG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC0xMzcsNyArMTQwLDcgQEAgYm9v
bCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcAogCiAgICAgICAgIC8vIElmIHRo
ZSB2YWx1ZSBpcyBmaWxsZWQgd2l0aCBURFogdmFsdWUsIHRocm93IGEgcmVmZXJlbmNlIGVycm9y
LgogICAgICAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIHNj
b3BlLCBjcmVhdGVURFpFcnJvcihleGVjKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIApAQCAtMTYyLDE2ICsxNjUsMjIgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Z2V0T3duUHJvcAogCiBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlND
ZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1v
YmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0
QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkLCBKU1ZhbHVlLCBib29s
IHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHNob3VsZFRocm93KQotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5
UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xOTMsMTcgKzIwMiwyMyBAQCB2b2lkIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wCiAKIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Cisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWZpbmVvd25w
cm9wZXJ0eS1wLWRlc2MKICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24g
b2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGRlZmluZSBwcm9wZXJ0
eSBvbiBvYmplY3QgdGhhdCBpcyBub3QgZXh0ZW5zaWJsZS4iKSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVj
dFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Kj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghb2JqZWN0KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInx0aGlzfCBz
aG91bGQgYmUgYSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgifHRoaXN8IHNob3VsZCBi
ZSBhIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgb2JqZWN0KSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgxLDYgKzY4MSw5IEBA
IHN0YXRpYyB2b2lkIGdldEV4cG9ydGVkTmFtZXMoRXhlY1N0YXRlKiAKIAogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdldG1vZHVsZW5hbWVzcGFjZQogICAgIGlmICht
X21vZHVsZU5hbWVzcGFjZU9iamVjdCkKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmdldCgpOwpAQCAtNjk0LDExICs2OTcsMTEgQEAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIEpTTW9kdWxlUmVjb3JkOgogICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6UmVzb2x1
dGlvbiByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIG5hbWUuZ2V0KCkpKTsKICAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUpIHsK
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgIHRo
cm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICci
LCBTdHJpbmcobmFtZS5nZXQoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJFeHBvcnRlZCBiaW5kaW5n
IG5hbWUgJyIsIFN0cmluZyhuYW1lLmdldCgpKSwgIicgaXMgbm90IGZvdW5kLiIpKTsKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6
RXJyb3I6Ci0gICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4
cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0YXIg
ZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBz
Y29wZSwgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3Qg
YmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQgZW50cmllcy4iKSk7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoK
QEAgLTcxMCwyOSArNzEzLDMzIEBAIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJl
Y29yZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LnNl
dChleGVjLT52bSgpLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlKGV4ZWMs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1
cmUoKSwgdGhpcywgdW5hbWJpZ3VvdXNOYW1lcykpOworICAgIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KCksIHRoaXMsIHVuYW1iaWd1b3VzTmFtZXMpKTsKICAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuZ2V0KCk7CiB9CiAKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZUNv
ZGUoKSk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYyk7CisgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KGV4ZWMtPnZt
KCksIHRoaXMsIGV4ZWN1dGFibGUpOworICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0
KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKICAgICBpbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhleGVj
LCBleGVjdXRhYmxlKTsKIH0KIAogdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNs
YXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGUpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRpb25p
bnN0YW50aWF0aW9uCiAKICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS0+bW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpOwotICAgIEpTTW9k
dWxlRW52aXJvbm1lbnQqIG1vZHVsZUVudmlyb25tZW50ID0gSlNNb2R1bGVFbnZpcm9ubWVudDo6
Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJsZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKLQot
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxl
RW52aXJvbm1lbnQgPSBKU01vZHVsZUVudmlyb25tZW50OjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzeW1ib2xUYWJs
ZSwganNURFpWYWx1ZSgpLCB0aGlzKTsKIAogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJhdGlvbmluc3RhbnRpYXRp
b24KICAgICAvLyBzZWN0aW9uIDE1LjIuMS4xNi40IHN0ZXAgOS4KQEAgLTc0NSwxNSArNzUyLDE1
IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXQKICAgICAgICAgICAg
IFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgZXhwb3J0RW50cnku
ZXhwb3J0TmFtZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKLSAgICAgICAgICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQg
YmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAi
JyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhl
Yywgc2NvcGUsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhwb3J0ZWQgYmluZGluZyBuYW1lICci
LCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQu
IikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgY2FzZSBSZXNvbHV0
aW9uOjpUeXBlOjpBbWJpZ3VvdXM6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihl
eGVjLCBtYWtlU3RyaW5nKCJJbmRpcmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnIiwgU3Ry
aW5nKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUuaW1wbCgpKSwgIicgY2Fubm90IGJlIHJlc29sdmVk
IGR1ZSB0byBhbWJpZ3VvdXMgbXVsdGlwbGUgYmluZGluZ3MuIikpOworICAgICAgICAgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkluZGlyZWN0bHkgZXhw
b3J0ZWQgYmluZGluZyBuYW1lICciLCBTdHJpbmcoZXhwb3J0RW50cnkuZXhwb3J0TmFtZS5pbXBs
KCkpLCAiJyBjYW5ub3QgYmUgcmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5k
aW5ncy4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJl
c29sdXRpb246OlR5cGU6OkVycm9yOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nIG5hbWUgJ2RlZmF1
bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbmRp
cmVjdGx5IGV4cG9ydGVkIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVk
IGJ5IHN0YXIgZXhwb3J0IGVudHJpZXMuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKQEAgLTc3OSwxNSAr
Nzg2LDE1IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXQKICAgICAg
ICAgICAgIFJlc29sdXRpb24gcmVzb2x1dGlvbiA9IGltcG9ydGVkTW9kdWxlLT5yZXNvbHZlRXhw
b3J0KGV4ZWMsIGltcG9ydEVudHJ5LmltcG9ydE5hbWUpOwogICAgICAgICAgICAgc3dpdGNoIChy
ZXNvbHV0aW9uLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90
Rm91bmQ6Ci0gICAgICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJJbXBvcnRpbmcgYmluZGluZyBuYW1lICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFt
ZS5pbXBsKCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAgICAgIHRocm93U3lu
dGF4RXJyb3IoZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUg
JyIsIFN0cmluZyhpbXBvcnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGlzIG5vdCBmb3Vu
ZC4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29s
dXRpb246OlR5cGU6OkFtYmlndW91czoKLSAgICAgICAgICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGV4ZWMsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJyIsIFN0cmluZyhpbXBv
cnRFbnRyeS5pbXBvcnROYW1lLmltcGwoKSksICInIGNhbm5vdCBiZSByZXNvbHZlZCBkdWUgdG8g
YW1iaWd1b3VzIG11bHRpcGxlIGJpbmRpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1N5
bnRheEVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJJbXBvcnRpbmcgYmluZGluZyBuYW1l
ICciLCBTdHJpbmcoaW1wb3J0RW50cnkuaW1wb3J0TmFtZS5pbXBsKCkpLCAiJyBjYW5ub3QgYmUg
cmVzb2x2ZWQgZHVlIHRvIGFtYmlndW91cyBtdWx0aXBsZSBiaW5kaW5ncy4iKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVy
cm9yOgotICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygi
SW1wb3J0aW5nIGJpbmRpbmcgbmFtZSAnZGVmYXVsdCcgY2Fubm90IGJlIHJlc29sdmVkIGJ5IHN0
YXIgZXhwb3J0IGVudHJpZXMuIikpOworICAgICAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3Io
ZXhlYywgc2NvcGUsIG1ha2VTdHJpbmcoIkltcG9ydGluZyBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQn
IGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9ydCBlbnRyaWVzLiIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVz
b2x2ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPTk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsOCBAQCBKU1ZhbHVl
IFN0cmluZ2lmaWVyOjp0b0pTT05JbXBsKEpTVmFsdWUgCiBTdHJpbmdpZmllcjo6U3RyaW5naWZ5
UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQogewogICAgIFZNJiB2bSA9IG1fZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICAvLyBDYWxsIHRoZSB0b0pTT04gZnVuY3Rpb24uCiAgICAgdmFsdWUgPSB0b0pTT04odmFsdWUs
IHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpAQCAtMzY4LDcgKzM3MCw3
IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXIKICAgICAvLyBIYW5k
bGUgY3ljbGUgZGV0ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhlIHN0YWNrLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgIGlmIChtX2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpTT04uc3RyaW5naWZ5
IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKU09OLnN0cmluZ2lmeSBj
YW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsKICAgICAgICAgICAgIHJldHVy
biBTdHJpbmdpZnlGYWlsZWQ7CiAgICAgICAgIH0KICAgICB9CkBAIC01ODksMTAgKzU5MSwxMyBA
QCBlbnVtIFdhbGtlclN0YXRlIHsgU3RhdGVVbmtub3duLCBBcnJheVN0CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPYmplY3RTdGFydFN0YXRlLCBPYmplY3RTdGFydFZpc2l0TWVt
YmVyLCBPYmplY3RFbmRWaXNpdE1lbWJlciB9OwogTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgVmVjdG9y
PFByb3BlcnR5TmFtZUFycmF5LCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHByb3BlcnR5U3Rh
Y2s7CiAgICAgVmVjdG9yPHVpbnQzMl90LCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGluZGV4
U3RhY2s7Ci0gICAgTG9jYWxTdGFjazxKU09iamVjdCwgMTY+IG9iamVjdFN0YWNrKG1fZXhlYy0+
dm0oKSk7Ci0gICAgTG9jYWxTdGFjazxKU0FycmF5LCAxNj4gYXJyYXlTdGFjayhtX2V4ZWMtPnZt
KCkpOworICAgIExvY2FsU3RhY2s8SlNPYmplY3QsIDE2PiBvYmplY3RTdGFjayh2bSk7CisgICAg
TG9jYWxTdGFjazxKU0FycmF5LCAxNj4gYXJyYXlTdGFjayh2bSk7CiAgICAgVmVjdG9yPHVuc2ln
bmVkLCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IGFycmF5TGVuZ3RoU3RhY2s7CiAgICAgCiAg
ICAgVmVjdG9yPFdhbGtlclN0YXRlLCAxNiwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHN0YXRlU3Rh
Y2s7CkBAIC02MDcsNyArNjEyLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0pTQXJyYXkoYXNPYmplY3QoaW5WYWx1ZSkpIHx8IGFzT2Jq
ZWN0KGluVmFsdWUpLT5pbmhlcml0cyhKU0FycmF5OjppbmZvKCkpKTsKICAgICAgICAgICAgICAg
ICBpZiAob2JqZWN0U3RhY2suc2l6ZSgpICsgYXJyYXlTdGFjay5zaXplKCkgPiBtYXhpbXVtRmls
dGVyUmVjdXJzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dTdGFja092ZXJm
bG93RXJyb3IobV9leGVjKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKG1fZXhlYywgc2NvcGUpOwogCiAgICAgICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOwogICAgICAgICAgICAgICAgIGFycmF5U3RhY2sucHVz
aChhcnJheSk7CkBAIC02NjMsNyArNjY4LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2Vy
Ojp3YWxrKEpTVmFsdQogICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVCghaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUpKSAm
JiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKEpTQXJyYXk6OmluZm8oKSkpOwogICAgICAg
ICAgICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBhcnJheVN0YWNrLnNpemUoKSA+IG1h
eGltdW1GaWx0ZXJSZWN1cnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dTdGFja092ZXJmbG93RXJyb3IobV9leGVjLCBzY29wZSk7CiAKICAgICAgICAgICAgICAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoaW5WYWx1ZSk7CiAgICAgICAgICAgICAgICAgb2Jq
ZWN0U3RhY2sucHVzaChvYmplY3QpOwpAQCAtNzM2LDMxICs3NDEsMzQgQEAgTkVWRVJfSU5MSU5F
IEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdQogICAgIH0KICAgICBKU09iamVjdCogZmluYWxI
b2xkZXIgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMpOwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGZpbmFsSG9sZGVyKTsKLSAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUoKS0+cHV0
KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIG1fZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlk
ZW50aWZpZXIsIG91dFZhbHVlLCBzbG90KTsKKyAgICBmaW5hbEhvbGRlci0+bWV0aG9kVGFibGUo
KS0+cHV0KGZpbmFsSG9sZGVyLCBtX2V4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllciwgb3V0VmFsdWUsIHNsb3QpOwogICAgIHJldHVybiBjYWxsUmV2aXZlcihmaW5hbEhvbGRl
ciwganNFbXB0eVN0cmluZyhtX2V4ZWMpLCBvdXRWYWx1ZSk7CiB9CiAKIC8vIEVDTUEtMjYyIHY1
IDE1LjEyLjIKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhlYy0+YXJndW1l
bnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFy
YW1ldGVyIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBzY29wZSwgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKU09OLnBhcnNlIHJlcXVpcmVzIGF0IGxlYXN0
IG9uZSBwYXJhbWV0ZXIiKSkpOwogICAgIEpTU3RyaW5nOjpTYWZlVmlldyBzb3VyY2UgPSBleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdWxsKCkpOwogCiAgICAgSlNWYWx1ZSB1bmZpbHRlcmVkOwotICAgIExvY2FsU2NvcGUgc2Nv
cGUoZXhlYy0+dm0oKSk7CisgICAgTG9jYWxTY29wZSBsb2NhbFNjb3BlKHZtKTsKICAgICBpZiAo
c291cmNlLmlzOEJpdCgpKSB7CiAgICAgICAgIExpdGVyYWxQYXJzZXI8TENoYXI+IGpzb25QYXJz
ZXIoZXhlYywgc291cmNlLmNoYXJhY3RlcnM4KCksIHNvdXJjZS5sZW5ndGgoKSwgU3RyaWN0SlNP
Tik7CiAgICAgICAgIHVuZmlsdGVyZWQgPSBqc29uUGFyc2VyLnRyeUxpdGVyYWxQYXJzZSgpOwog
ICAgICAgICBpZiAoIXVuZmlsdGVyZWQpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdl
KCkpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIGpzb25QYXJzZXIuZ2V0RXJyb3JNZXNzYWdlKCkpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBMaXRlcmFsUGFyc2VyPFVDaGFyPiBqc29uUGFyc2VyKGV4ZWMsIHNv
dXJjZS5jaGFyYWN0ZXJzMTYoKSwgc291cmNlLmxlbmd0aCgpLCBTdHJpY3RKU09OKTsKICAgICAg
ICAgdW5maWx0ZXJlZCA9IGpzb25QYXJzZXIudHJ5TGl0ZXJhbFBhcnNlKCk7CiAgICAgICAgIGlm
ICghdW5maWx0ZXJlZCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywganNvblBhcnNlci5nZXRFcnJvck1lc3NhZ2UoKSkpOyAgICAg
ICAgCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCBqc29uUGFyc2VyLmdldEVycm9yTWVzc2FnZSgpKSk7CiAgICAgfQog
ICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQpAQCAtNzcxLDE4ICs3Nzks
MjEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdQogICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodW5maWx0ZXJlZCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShXYWxrZXIoZXhlYywg
TG9jYWw8SlNPYmplY3Q+KGV4ZWMtPnZtKCksIGFzT2JqZWN0KGZ1bmN0aW9uKSksIGNhbGxUeXBl
LCBjYWxsRGF0YSkud2Fsayh1bmZpbHRlcmVkKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShXYWxrZXIoZXhlYywgTG9jYWw8SlNPYmplY3Q+KHZtLCBhc09iamVjdChmdW5jdGlvbikpLCBj
YWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOwogfQogCiAvLyBFQ01BLTI2MiB2
NSAxNS4xMi4zCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJp
bmdpZnkoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJObyBpbnB1dCB0byBzdHJpbmdpZnkiKSkpOwotICAg
IExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+dm0oKSk7Ci0gICAgTG9jYWw8VW5rbm93bj4gdmFsdWUo
ZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIExvY2FsPFVua25v
d24+IHJlcGxhY2VyKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKLSAgICBMb2NhbDxV
bmtub3duPiBzcGFjZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgyKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiTm8gaW5wdXQgdG8gc3RyaW5naWZ5IikpKTsKKyAgICBMb2NhbFNjb3BlIGxvY2FsU2Nv
cGUodm0pOworICAgIExvY2FsPFVua25vd24+IHZhbHVlKHZtLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CisgICAgTG9jYWw8VW5rbm93bj4gcmVwbGFjZXIodm0sIGV4ZWMtPmFyZ3VtZW50
KDEpKTsKKyAgICBMb2NhbDxVbmtub3duPiBzcGFjZSh2bSwgZXhlYy0+YXJndW1lbnQoMikpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gU3RyaW5naWZpZXIoZXhlYywgcmVwbGFjZXIsIHNwYWNlKS5z
dHJpbmdpZnkodmFsdWUpLmdldCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAwNiwgMjAwOCwgMjAwOSwgMjAxMi0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwgMjAwOC0yMDA5LCAyMDEyLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xMzU0LDYg
KzEzNTQsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJlY3QoVk0mIHZtCiAKIGJv
b2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKIHsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKG1l
dGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMsIE5vdFN0cmljdE1vZGUpID09IHRoaXMp
OwogCiAgICAgaWYgKHRoaXMtPmdldFByb3RvdHlwZURpcmVjdCgpID09IHByb3RvdHlwZSkKQEAg
LTEzNjUsNyArMTM2Niw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWMKIAogICAgIGlmICghaXNFeHRlbnNpYmxlKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvd0lm
Q2FudFNldCkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFk
b25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTM3NCw3ICsxMzc1LDcgQEAgYm9vbCBKU09iamVj
dDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlYwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYm
IG5leHRQcm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9
PSB0aGlzKSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90
b19fIHZhbHVlIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBBU0NJSUxpdGVyYWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0KG5l
eHRQcm90b3R5cGUpLT5tZXRob2RUYWJsZSh2bSktPmdldFByb3RvdHlwZSAhPSBkZWZhdWx0R2V0
UHJvdG90eXBlKSkKQEAgLTE2MTYsMjggKzE2MTcsMzEgQEAgZW51bSBjbGFzcyBUeXBlSGludE1v
ZGUgeyBUYWtlc0hpbnQsIERvZQogdGVtcGxhdGU8VHlwZUhpbnRNb2RlIG1vZGUgPSBUeXBlSGlu
dE1vZGU6OkRvZXNOb3RUYWtlSGludD4KIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWl0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU09iamVjdCogb2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhp
bnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gb2JqZWN0LT5nZXQo
ZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKTsKICAgICBpZiAoZnVuY3Rpb24uaXNV
bmRlZmluZWQoKSAmJiBtb2RlID09IFR5cGVIaW50TW9kZTo6VGFrZXNIaW50KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiBleGVjLT5leGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuIHNjb3BlLmV4Y2VwdGlvbigpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgY2FsbEFyZ3M7CiAgICAgaWYgKG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpUYWtlc0hpbnQp
IHsKICAgICAgICAgSlNTdHJpbmcqIGhpbnRTdHJpbmcgPSBudWxscHRyOwogICAgICAgICBzd2l0
Y2ggKGhpbnQpIHsKICAgICAgICAgY2FzZSBOb1ByZWZlcmVuY2U6Ci0gICAgICAgICAgICBoaW50
U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MuZGVmYXVsdFN0cmluZygpOworICAgICAg
ICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5kZWZhdWx0U3RyaW5nKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQcmVmZXJOdW1iZXI6Ci0gICAgICAgICAgICBo
aW50U3RyaW5nID0gZXhlYy0+dm0oKS5zbWFsbFN0cmluZ3MubnVtYmVyU3RyaW5nKCk7CisgICAg
ICAgICAgICBoaW50U3RyaW5nID0gdm0uc21hbGxTdHJpbmdzLm51bWJlclN0cmluZygpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUHJlZmVyU3RyaW5nOgotICAgICAgICAgICAg
aGludFN0cmluZyA9IGV4ZWMtPnZtKCkuc21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpOworICAg
ICAgICAgICAgaGludFN0cmluZyA9IHZtLnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhbGxBcmdzLmFwcGVuZChoaW50
U3RyaW5nKTsKQEAgLTE2NDUsNDAgKzE2NDksNDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBjYWxsVG9QcmltaQogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPihvYmplY3QpLCBj
YWxsQXJncyk7CiAgICAgQVNTRVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7Ci0gICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0aW9uKCk7
CisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2NvcGUuZXhjZXB0
aW9uKCk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbW9kZSA9
PSBUeXBlSGludE1vZGU6OkRvZXNOb3RUYWtlSGludCA/IEpTVmFsdWUoKSA6IHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU3ltYm9sLnRvUHJpbWl0aXZlIHJldHVybmVkIGFuIG9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIG1vZGUgPT0gVHlwZUhpbnRNb2RlOjpEb2VzTm90VGFr
ZUhpbnQgPyBKU1ZhbHVlKCkgOiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0IikpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIC8vIEVDTUEgNy4xLjEKIEpTVmFsdWUgSlNPYmplY3Q6Om9yZGluYXJ5
VG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQp
IGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3aGF0ZXZlciBk
ZWZhdWx0IHZhbHVlIG1ldGhvZHMgdGhlcmUgYXJlIG9uIG9iamVjdCdzIHByb3RvdHlwZSBjaGFp
biBhcmUKICAgICAvLyBiZWluZyB3YXRjaGVkLgotICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zdGFy
dFdhdGNoaW5nSW50ZXJuYWxQcm9wZXJ0aWVzSWZOZWNlc3NhcnlGb3JFbnRpcmVDaGFpbihleGVj
LT52bSgpKTsKKyAgICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3RhcnRXYXRjaGluZ0ludGVybmFsUHJv
cGVydGllc0lmTmVjZXNzYXJ5Rm9yRW50aXJlQ2hhaW4odm0pOwogCiAgICAgSlNWYWx1ZSB2YWx1
ZTsKICAgICBpZiAoaGludCA9PSBQcmVmZXJTdHJpbmcpIHsKICAgICAgICAgdmFsdWUgPSBjYWxs
VG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9T
dHJpbmcsIGhpbnQpOworICAgICAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHNjb3Bl
LmV4Y2VwdGlvbigpID09IHZhbHVlLmFzQ2VsbCgpKTsKICAgICAgICAgaWYgKHZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsK
KyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9
PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICB9IGVsc2UgewogICAgICAgICB2YWx1ZSA9IGNhbGxUb1ByaW1pdGl2ZUZ1
bmN0aW9uKGV4ZWMsIHRoaXMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBoaW50KTsK
KyAgICAgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBzY29wZS5leGNlcHRpb24oKSA9
PSB2YWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICAgICAgdmFsdWUgPSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihleGVjLCB0
aGlzLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGhpbnQpOworICAgICAgICBBU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IHNjb3BlLmV4Y2VwdGlvbigpID09IHZhbHVlLmFzQ2Vs
bCgpKTsKICAgICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAg
IH0KIAogICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwogCi0gICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVmYXVsdCB2YWx1ZSIpKTsKKyAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiTm8gZGVm
YXVsdCB2YWx1ZSIpKTsKIH0KIAogSlNWYWx1ZSBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKGNvbnN0
IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSBoaW50KQpAQCAtMTcyNywxMiArMTczOCwxNCBAQCBjb25zdCBIYXNoVGFibGVWYWx1ZSogSlNP
YmplY3Q6OmZpbmRQcm9wCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgaGFzSW5zdGFuY2VWYWx1ZSkKIHsKICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICAKIAogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgp
ICYmIGhhc0luc3RhbmNlVmFsdWUgIT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbigpKSB7CiAgICAgICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEo
aGFzSW5zdGFuY2VWYWx1ZSwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rp
b24oZXhlYywgdGhpcykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUs
IGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JoYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb24oZXhlYywgdGhpcykpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTE3NDcsNyArMTc2MCw3IEBAIGJvb2wgSlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXgKICAgICAgICAgcmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1
ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpKTsKICAgICBpZiAo
aW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxl
KHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOwotICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RG
dW5jdGlvbihleGVjLCB0aGlzKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNy
ZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JOb3RGdW5jdGlvbihleGVjLCB0aGlz
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNzYwLDE1ICsxNzczLDE3IEBAIGJvb2wg
SlNPYmplY3Q6Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBKU09iamVjdDo6ZGVm
YXVsdEhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBw
cm90bykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24g
YW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnN0YW5jZW9mIGNh
bGxlZCBvbiBhbiBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgSlNWYWx1ZSBvYmplY3RWYWx1ZSA9IG9iamVjdC0+Z2V0UHJvdG90eXBl
KHZtLCBleGVjKTsKQEAgLTIyMzgsNiArMjI1Myw5IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgog
Ym9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykg
PT0gaW5kZXhpbmdTaGFwZSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkp
OwogCkBAIC0yMjQ3LDggKzIyNjUsNiBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25k
VmVjdG9yTGVuCiAgICAgLy8gb3IgZXF1YWwgdG8gdGhlIHZlY3RvciBsZW5ndGguCiAgICAgQVNT
RVJUKGkgPj0gYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCi0gICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICAKICAgICBpZiAoaSA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9JTkRFWAog
ICAgICAgICB8fCAoaSA+PSBNSU5fU1BBUlNFX0FSUkFZX0lOREVYICYmICFpc0RlbnNlRW5vdWdo
Rm9yVmVjdG9yKGksIGNvdW50RWxlbWVudHM8aW5kZXhpbmdTaGFwZT4oYnV0dGVyZmx5KSkpCiAg
ICAgICAgIHx8IGluZGV4SXNTdWZmaWNpZW50bHlCZXlvbmRMZW5ndGhGb3JTcGFyc2VNYXAoaSwg
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSkpIHsKQEAgLTIyNjIsNyArMjI3OCw3IEBAIGJvb2wg
SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICB9CiAKICAgICBpZiAoIWVu
c3VyZUxlbmd0aCh2bSwgaSArIDEpKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBidXR0ZXJmbHkgPSBtX2J1dHRlcmZseS5nZXQo
KTsKQEAgLTIzMDAsNiArMjMxNiw3IEBAIHRlbXBsYXRlIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmQKIGJvb2wgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSwg
Ym9vbCBzaG91bGRUaHJvdywgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUg
b2YgdGhlIGN1cnJlbnQgdmVjdG9yLgogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7
CkBAIC0yMzI3LDcgKzIzNDQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVj
dG9yTGVuCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvLCBvciBjYW4ndCB1c2UgYSB2ZWN0b3IgdG8gaG9sZCB0aGlzIHByb3Bl
cnR5IC0gYWxsb2NhdGUgYSBzcGFyc2UgbWFwICYgYWRkIHRoZSB2YWx1ZS4KLSAgICAgICAgbWFw
ID0gYWxsb2NhdGVTcGFyc2VJbmRleE1hcChleGVjLT52bSgpKTsKKyAgICAgICAgbWFwID0gYWxs
b2NhdGVTcGFyc2VJbmRleE1hcCh2bSk7CiAgICAgICAgIHJldHVybiBtYXAtPnB1dEVudHJ5KGV4
ZWMsIHRoaXMsIGksIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgfQogCkBAIC0yMzM3LDcgKzIz
NTQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgICAg
IC8vIFByb2hpYml0IGdyb3dpbmcgdGhlIGFycmF5IGlmIGxlbmd0aCBpcyBub3Qgd3JpdGFibGUu
CiAgICAgICAgIGlmIChtYXAtPmxlbmd0aElzUmVhZE9ubHkoKSB8fCAhaXNTdHJ1Y3R1cmVFeHRl
bnNpYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJy
b3IpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAgICAgICAgIGxlbmd0aCA9IGkgKyAxOwpAQCAtMjM0Nyw3ICsyMzY0LDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIFdlIGFy
ZSBjdXJyZW50bHkgdXNpbmcgYSBtYXAgLSBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIHdhbnQgdG8g
YmUgZG9pbmcgc28uCiAgICAgLy8gV2Ugd2lsbCBjb250aW51ZSAgdG8gdXNlIGEgc3BhcnNlIG1h
cCBpZiBTcGFyc2VNb2RlIGlzIHNldCwgYSB2ZWN0b3Igd291bGQgYmUgdG9vIHNwYXJzZSwgb3Ig
aWYgYWxsb2NhdGlvbiBmYWlscy4KICAgICB1bnNpZ25lZCBudW1WYWx1ZXNJbkFycmF5ID0gc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciArIG1hcC0+c2l6ZSgpOwotICAgIGlmIChtYXAtPnNw
YXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgsIG51bVZhbHVlc0lu
QXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBsZW5ndGgpKQorICAg
IGlmIChtYXAtPnNwYXJzZU1vZGUoKSB8fCAhaXNEZW5zZUVub3VnaEZvclZlY3RvcihsZW5ndGgs
IG51bVZhbHVlc0luQXJyYXkpIHx8ICFpbmNyZWFzZVZlY3Rvckxlbmd0aCh2bSwgbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIG1hcC0+cHV0RW50cnkoZXhlYywgdGhpcywgaSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIAogICAgIC8vIFJlcmVhZCBtX3N0b3JhZ2UgYWZ0ZXIgaW5jcmVhc2VWZWN0b3JM
ZW5ndGgsIHVwZGF0ZSBtX251bVZhbHVlc0luVmVjdG9yLgpAQCAtMjk0NCw2ICsyOTYxLDkgQEAg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0TWF5QmVJbmRleChFeGVjUwogYm9vbCB2YWxpZGF0ZUFu
ZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgYm9vbCBpc0V4dGVuc2libGUsCiAgICAgY29u
c3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIGlzQ3VycmVudERlZmluZWQs
IGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgY3VycmVudCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIElmIHdlIGhhdmUgYSBuZXcgcHJvcGVydHkgd2UgY2Fu
IGp1c3QgcHV0IGl0IG9uIG5vcm1hbGx5CiAgICAgLy8gU3RlcCAyLgogICAgIGlmICghaXNDdXJy
ZW50RGVmaW5lZCkgewpAQCAtMjk1MSw3ICsyOTcxLDcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKAogICAgICAgICAvLyBTdGVwIDIuYQogICAgICAgICBpZiAoIWlz
RXh0ZW5zaWJsZSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBk
ZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNp
YmxlLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBp
ZiAoIW9iamVjdCkKQEAgLTI5NzQsMTIgKzI5OTQsMTIgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5
UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewog
ICAgICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29uZmlndXJhYmxlIGF0dHJpYnV0ZSBv
ZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgY29u
ZmlndXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZVByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUoKSAhPSBjdXJyZW50
LmVudW1lcmFibGUoKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgZW51bWVyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29u
ZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI5ODgsNyArMzAwOCw3IEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVBy
b3BlcnR5RGVzY3JpcHRvcigKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBpcyBzaW1wbHkg
Y2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkKICAgICBpZiAo
ZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYgKCFjdXJyZW50
LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiBvYmplY3QpIHsKLSAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJl
bnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk5OSwxNCArMzAxOSwx
NCBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoCiAgICAgaWYgKGRl
c2NyaXB0b3IuaXNEYXRhRGVzY3JpcHRvcigpICE9IGN1cnJlbnQuaXNEYXRhRGVzY3JpcHRvcigp
KSB7CiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAgICAg
aWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNt
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWxldGVQcm9wZXJ0
eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlw
dG9yKGV4ZWMsIG9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0
dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBA
IC0zMDE2LDEzICszMDM2LDEzIEBAIGJvb2wgdmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3Jp
cHRvcigKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSAmJiBkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2Ugd3Jp
dGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQXR0
ZW1wdGluZyB0byBjaGFuZ2Ugd3JpdGFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnQud3JpdGFibGUoKSkgewogICAgICAgICAgICAgICAg
IGlmIChkZXNjcmlwdG9yLnZhbHVlKCkgJiYgIXNhbWVWYWx1ZShleGVjLCBjdXJyZW50LnZhbHVl
KCksIGRlc2NyaXB0b3IudmFsdWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRocm93
RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRvbmx5IHBy
b3BlcnR5LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVh
ZG9ubHkgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzAzMSw3ICszMDUxLDcgQEAgYm9v
bCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2
bSktPmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
cmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJy
ZW50KTsKICAgICB9CiAKQEAgLTMwNDEsMTcgKzMwNjEsMTcgQEAgYm9vbCB2YWxpZGF0ZUFuZEFw
cGx5UHJvcGVydHlEZXNjcmlwdG9yKAogICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkg
ewogICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LnNl
dHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBjdXJyZW50LnNldHRl
cigpLCBkZXNjcmlwdG9yLnNldHRlcigpKSkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2Vw
dGlvbikKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJv
cGVydHkuIikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmdldHRlclByZXNlbnQoKSAmJiAhKGN1cnJlbnQu
Z2V0dGVyUHJlc2VudCgpICYmIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIGN1cnJlbnQuZ2V0
dGVyKCksIGRlc2NyaXB0b3IuZ2V0dGVyKCkpKSkgewogICAgICAgICAgICAgaWYgKHRocm93RXhj
ZXB0aW9uKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlcygpICYgQ3VzdG9tQWNjZXNzb3Ip
IHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5n
ZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNj
ZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTMwNTksMzMgKzMwNzksMzMgQEAgYm9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJv
cGVydHlEZXNjcmlwdG9yKAogICAgIC8vIFN0ZXAgMTAvMTEuCiAgICAgaWYgKCFvYmplY3QpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBvYmplY3QtPmdldERp
cmVjdChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBv
YmplY3QtPmdldERpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWFjY2Vzc29yKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXI7CiAg
ICAgYm9vbCBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGFjY2Vzc29yLmlz
Q3VzdG9tR2V0dGVyU2V0dGVyKCkpIHsKLSAgICAgICAgZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0
dGVyOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAg
ICAgICAgZ2V0dGVyU2V0dGVyID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IGpz
Q2FzdDxDdXN0b21HZXR0ZXJTZXR0ZXIqPihhY2Nlc3Nvcik7CiAgICAgICAgIGlmIChjdXN0b21H
ZXR0ZXJTZXR0ZXItPnNldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0
ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3Rv
bUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVy
KSk7CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRlcih2bSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNl
dHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6U2V0dGVyKSk7CiAgICAgICAgIGlmIChjdXN0b21HZXR0
ZXJTZXR0ZXItPmdldHRlcigpKQotICAgICAgICAgICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdl
dHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7
CisgICAgICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcih2bSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBnZXRDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbkZvckdldHRlclNldHRl
cihleGVjLCBwcm9wZXJ0eU5hbWUsIGN1c3RvbUdldHRlclNldHRlciwgSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbjo6VHlwZTo6R2V0dGVyKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNT
RVJUKGFjY2Vzc29yLmlzR2V0dGVyU2V0dGVyKCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBh
c0dldHRlclNldHRlcihhY2Nlc3Nvcik7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSkgewotICAgICAgICBnZXR0ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhT
ZXR0ZXIoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBkZXNjcmlwdG9y
LnNldHRlck9iamVjdCgpKTsKKyAgICAgICAgZ2V0dGVyU2V0dGVyID0gZ2V0dGVyU2V0dGVyLT53
aXRoU2V0dGVyKHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3Iuc2V0
dGVyT2JqZWN0KCkpOwogICAgICAgICBnZXR0ZXJTZXR0ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9
CiAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVyUHJlc2VudCgpKSB7Ci0gICAgICAgIGdldHRlclNl
dHRlciA9IGdldHRlclNldHRlci0+d2l0aEdldHRlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOworICAgICAgICBnZXR0
ZXJTZXR0ZXIgPSBnZXR0ZXJTZXR0ZXItPndpdGhHZXR0ZXIodm0sIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CiAgICAgICAgIGdldHRlclNl
dHRlckNoYW5nZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzRXF1
YWwoZGVzY3JpcHRvcikgJiYgIWdldHRlclNldHRlckNoYW5nZWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+ZGVsZXRlUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2ln
bmVkIGF0dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCk7CiAgICAgb2JqZWN0LT5wdXREaXJlY3RBY2Nlc3NvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGdl
dHRlclNldHRlciwgYXR0cnMgfCBBY2Nlc3Nvcik7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjMz
LDYgKzMyNTMsOSBAQCB2b2lkIEpTT2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1lcyhKCiAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2luZGV4Lmh0
bWwjc2VjLWdldG1ldGhvZAogSlNWYWx1ZSBKU09iamVjdDo6Z2V0TWV0aG9kKEV4ZWNTdGF0ZSog
ZXhlYywgQ2FsbERhdGEmIGNhbGxEYXRhLCBDYWxsVHlwZSYgY2FsbFR5cGUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgbWV0aG9kID0gZ2V0KGV4ZWMsIGlkZW50KTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMzI0MSwx
MyArMzI2NCwxMyBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpnZXRNZXRob2QoRXhlY1N0YXRlKiBlCiAg
ICAgICAgIGlmIChtZXRob2QuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgY2FsbFR5
cGUgPSBtZXRob2QuYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG1ldGhvZC5h
c0NlbGwoKSwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSk7CisgICAgICAg
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBA
CiAjaW5jbHVkZSAiUHV0RGlyZWN0SW5kZXhNb2RlLmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlT
bG90LmgiCiAjaW5jbHVkZSAiUnVudGltZVR5cGUuaCIKLQogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTY2LDEwICs2NSwx
MSBAQCBjbGFzcyBNYXJrZWRCbG9jazsKIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwogY2xhc3MgU3RydWN0dXJlOworY2xhc3MgVGhyb3dTY29wZTsK
IHN0cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9Q
UklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJik7CiBleHRlcm4gSlNfRVhQT1JUREFUQSBjb25z
dCBjaGFyKiBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3I7CiBleHRlcm4gSlNf
RVhQT1JUREFUQSBjb25zdCBjaGFyKiBVbmNvbmZpZ3VyYWJsZVByb3BlcnR5Q2hhbmdlQWNjZXNz
TWVjaGFuaXNtRXJyb3I7CiAKQEAgLTE2NjUsMzcgKzE2NjUsNiBAQCBBTFdBWVNfSU5MSU5FIElk
ZW50aWZpZXIgbWFrZUlkZW50aWZpZXIoCiAgICAgcmV0dXJuIG5hbWU7CiB9CiAKLS8vIFNlY3Rp
b24gNy4zLjE3IG9mIHRoZSBzcGVjLiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBBZGRGdW5jdGlvbj4g
Ly8gQWRkIGZ1bmN0aW9uIHNob3VsZCBoYXZlIGEgdHlwZSBsaWtlOiAoSlNWYWx1ZSwgUnVudGlt
ZVR5cGUpIC0+IGJvb2wKLXZvaWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50aW1lVHlwZU1hc2sgbGVnYWxUeXBlc0Zp
bHRlciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIEFkZEZ1bmN0aW9uIGFkZEZ1bmN0aW9u
KQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgVmVjdG9yPEpTVmFsdWU+IHJlc3Vs
dDsKLSAgICBKU1ZhbHVlIGxlbmd0aFByb3BlcnR5ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMs
IGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKLSAgICBpZiAodm0uZXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBkb3VibGUgbGVuZ3RoQXNEb3VibGUgPSBsZW5ndGhQ
cm9wZXJ0eS50b0xlbmd0aChleGVjKTsKLSAgICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVChsZW5ndGhBc0RvdWJsZSA+PSAwLjAgJiYgbGVu
Z3RoQXNEb3VibGUgPT0gc3RkOjp0cnVuYyhsZW5ndGhBc0RvdWJsZSkpOwotICAgIHVpbnQ2NF90
IGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGhBc0RvdWJsZSk7Ci0gICAgZm9y
ICh1aW50NjRfdCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAg
IEpTVmFsdWUgIG5leHQgPSBhcnJheUxpa2VWYWx1ZS5nZXQoZXhlYywgaW5kZXgpOwotICAgICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUnVu
dGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUobmV4dCk7Ci0gICAgICAgIGlmICgh
KHR5cGUgJiBsZWdhbFR5cGVzRmlsdGVyKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgZXhpdEVhcmx5ID0gYWRkRnVuY3Rpb24obmV4dCwgdHlwZSk7Ci0gICAgICAg
IGlmIChleGl0RWFybHkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCiBib29sIHZh
bGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBQ
cm9wZXJ0eU5hbWUsIGJvb2wgaXNFeHRlbnNpYmxlLAogICAgIGNvbnN0IFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgYm9vbCBpc0N1cnJlbnREZWZpbmVkLCBjb25zdCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGN1cnJlbnQsIGJvb2wgdGhyb3dFeGNlcHRpb24pOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkocmV2aXNpb24g
MjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDM5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisvLyBTZWN0aW9uIDcuMy4xNyBvZiB0aGUgc3BlYy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBZGRG
dW5jdGlvbj4gLy8gQWRkIGZ1bmN0aW9uIHNob3VsZCBoYXZlIGEgdHlwZSBsaWtlOiAoSlNWYWx1
ZSwgUnVudGltZVR5cGUpIC0+IGJvb2wKK3ZvaWQgY3JlYXRlTGlzdEZyb21BcnJheUxpa2UoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGFycmF5TGlrZVZhbHVlLCBSdW50aW1lVHlwZU1hc2sgbGVn
YWxUeXBlc0ZpbHRlciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIEFkZEZ1bmN0aW9uIGFk
ZEZ1bmN0aW9uKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIFZlY3RvcjxKU1ZhbHVlPiByZXN1
bHQ7CisgICAgSlNWYWx1ZSBsZW5ndGhQcm9wZXJ0eSA9IGFycmF5TGlrZVZhbHVlLmdldChleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBsZW5ndGhBc0RvdWJsZSA9IGxlbmd0aFByb3BlcnR5
LnRvTGVuZ3RoKGV4ZWMpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aEFzRG91YmxlID49IDAuMCAmJiBsZW5ndGhBc0Rv
dWJsZSA9PSBzdGQ6OnRydW5jKGxlbmd0aEFzRG91YmxlKSk7CisgICAgdWludDY0X3QgbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxlbmd0aEFzRG91YmxlKTsKKyAgICBmb3IgKHVpbnQ2
NF90IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHsKKyAgICAgICAgSlNWYWx1
ZSBuZXh0ID0gYXJyYXlMaWtlVmFsdWUuZ2V0KGV4ZWMsIGluZGV4KTsKKyAgICAgICAgaWYgKHZt
LmV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgUnVu
dGltZVR5cGUgdHlwZSA9IHJ1bnRpbWVUeXBlRm9yVmFsdWUobmV4dCk7CisgICAgICAgIGlmICgh
KHR5cGUgJiBsZWdhbFR5cGVzRmlsdGVyKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZXhpdEVhcmx5ID0gYWRkRnVuY3Rpb24obmV4dCwg
dHlwZSk7CisgICAgICAgIGlmIChleGl0RWFybHkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmNhblBlcmZvcm1GYXN0UHV0SW5s
aW5lKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIGlmIChVTkxJS0VMWShwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnVuZGVyc2NvcmVQcm90bykpCkBAIC01NSwxMCArODgsMTIgQEAgQUxXQVlTX0lOTElORSBib29s
IEpTT2JqZWN0OjpjYW5QZXJmb3JtRgogLy8gRUNNQSA4LjYuMi4yCiBBTFdBWVNfSU5MSU5FIGJv
b2wgSlNPYmplY3Q6OnB1dElubGluZShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBz
bG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlQodmFsdWUpOwogICAgIEFTU0VSVCghSGVhcDo6
aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzT2JqZWN0
KSk7Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAogICAgIGlmIChVTkxJS0VMWShpc1RoaXNW
YWx1ZUFsdGVyZWQoc2xvdCwgdGhpc09iamVjdCkpKQogICAgICAgICByZXR1cm4gb3JkaW5hcnlT
ZXRTbG93KGV4ZWMsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QudGhpc1Zh
bHVlKCksIHNsb3QuaXNTdHJpY3RNb2RlKCkpOwpAQCAtNjksMTAgKzEwNCwxMCBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNPYmplY3Q6OnB1dElubGluZShKCiAgICAgICAgIHJldHVybiBwdXRCeUlu
ZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGluZGV4LnZhbHVlKCksIHZhbHVlLCBzbG90LmlzU3RyaWN0
TW9kZSgpKTsKIAogICAgIGlmICh0aGlzT2JqZWN0LT5jYW5QZXJmb3JtRmFzdFB1dElubGluZShl
eGVjLCB2bSwgcHJvcGVydHlOYW1lKSkgewotICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0
cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8odm0sIHByb3BlcnR5TmFtZSkp
OwogICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90KSkgewogICAgICAgICAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDEyICs5NiwxMyBAQCB2b2lk
IEpTUHJvbWlzZUNvbnN0cnVjdG9yOjphZGRPd25JbnRlcm5hCiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIEpTVmFsdWUgbmV3VGFyZ2V0
ID0gZXhlYy0+bmV3VGFyZ2V0KCk7CiAgICAgaWYgKG5ld1RhcmdldC5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RydWN0dXJlKiBwcm9taXNlU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
ZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMTQsNyArMTE1LDkgQEAgc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsUHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGV4ZWMsICJQcm9taXNlIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVF
cnJvcihleGVjLCBzY29wZSwgIlByb21pc2UiKSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNQcm9t
aXNlQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYg
Y29uc3RydWN0RGF0YSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyMDUxODMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDkgKzE0MywxMiBAQCBib29sIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om5leHQoRXhlY1N0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJv
cGVydHlOYW1lSXRlcmF0b3JGdW5jTmV4dChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWl0
ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNhbGwgUHJvcGVydHlOYW1lSXRlcmF0b3IubmV4dCgp
IG9uIGEgbm9uLVByb3BlcnR5TmFtZUl0ZXJhdG9yIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGNhbGwgUHJvcGVydHlOYW1lSXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLVByb3Bl
cnR5TmFtZUl0ZXJhdG9yIG9iamVjdCIpKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKICAgICBp
ZiAoaXRlcmF0b3ItPm5leHQoZXhlYywgcmVzdWx0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIgSGFycmkgUG9ydGVuIChw
b3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bw
b3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0y
MDA4LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM4MCwxMSArMzgwLDE0IEBAIHZvaWQgSlNSb3BlU3RyaW5nOjpyZXNv
bHZlUm9wZVNsb3dDYXNlKFUKIAogdm9pZCBKU1JvcGVTdHJpbmc6Om91dE9mTWVtb3J5KEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGNsZWFyRmliZXJzKCk7CiAg
ICAgQVNTRVJUKGlzUm9wZSgpKTsKICAgICBBU1NFUlQobV92YWx1ZS5pc051bGwoKSk7CiAgICAg
aWYgKGV4ZWMpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogSlNWYWx1ZSBKU1N0cmlu
Zzo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRl
ci5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsMTcgKzcxLDE5IEBAIHB1YmxpYzoK
IAogICAgIEpTVmFsdWUgYnVpbGQoRXhlY1N0YXRlKiBleGVjKQogICAgIHsKKyAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgICAgICBpZiAoIW1fb2theSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgaWYgKG1faXM4Qml0KSB7CiAgICAgICAgICAg
ICBidWZmZXI4LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcjguZGF0YSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7
CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3RyaW5nOjphZG9wdChidWZmZXI4
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyMTYuc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
aWYgKCFidWZmZXIxNi5kYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmFkb3B0
KGJ1ZmZlcjE2KSk7CiAgICAgfQogCkBAIC0xMjcsOSArMTI5LDExIEBAIGlubGluZSBKU1ZhbHVl
IGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoRXgKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUs
IHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPgogaW5saW5lIEpTVmFsdWUganNNYWtlTm9udHJpdmlh
bFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZ1R5cGUmIHN0cmluZywgY29uc3Qg
U3RyaW5nVHlwZXMmLi4uIHN0cmluZ3MpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgU3RyaW5nIHJlc3Vs
dCA9IFdURjo6dHJ5TWFrZVN0cmluZyhzdHJpbmcsIHN0cmluZ3MuLi4pOwogICAgIGlmICghcmVz
dWx0KQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5jcHAJKHJl
dmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
Sm9pbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgxLDYgKzgxLDkgQEAgc3RhdGljIGlubGlu
ZSBTdHJpbmcgam9pblN0cmluZ3MoY29uc3QgVgogCiBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdK
b2luZXI6OmpvaW5lZExlbmd0aChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZTdHJpbmdzID0gbV9zdHJpbmdzLnNpemUoKTsKICAg
ICBpZiAoIW51bWJlck9mU3RyaW5ncykKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSw3ICs5NCw3
IEBAIGlubGluZSB1bnNpZ25lZCBKU1N0cmluZ0pvaW5lcjo6am9pbmVkTGUKIAogICAgIHVuc2ln
bmVkIHJlc3VsdDsKICAgICBpZiAodG90YWxMZW5ndGguc2FmZUdldChyZXN1bHQpID09IENoZWNr
ZWRTdGF0ZTo6RGlkT3ZlcmZsb3cpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZz
dGF0ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC05OSw2ICsxMDIs
OSBAQCBpbmxpbmUgdW5zaWduZWQgSlNTdHJpbmdKb2luZXI6OmpvaW5lZExlCiAKIEpTVmFsdWUg
SlNTdHJpbmdKb2luZXI6OmpvaW4oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEFTU0VSVChtX3N0cmluZ3Muc2l6ZSgpIDw9IG1fc3RyaW5ncy5jYXBhY2l0eSgpKTsKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IGpvaW5lZExlbmd0aChzdGF0ZSk7CkBAIC0xMTUsNyArMTIx
LDcgQEAgSlNWYWx1ZSBKU1N0cmluZ0pvaW5lcjo6am9pbihFeGVjU3RhdGUmIAogICAgICAgICBy
ZXN1bHQgPSBqb2luU3RyaW5nczxVQ2hhcj4obV9zdHJpbmdzLCBtX3NlcGFyYXRvciwgbGVuZ3Ro
KTsKIAogICAgIGlmIChyZXN1bHQuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cigmc3RhdGUsIHNjb3BlKTsKIAogICAgIHJldHVybiBqc1N0cmluZygmc3RhdGUsIFdURk1vdmUo
cmVzdWx0KSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0pvaW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSm9pbmVyLmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCwxNiArNjAs
MjAgQEAgaW5saW5lIEpTU3RyaW5nSm9pbmVyOjpKU1N0cmluZ0pvaW5lcihFeAogICAgIDogbV9z
ZXBhcmF0b3Ioc2VwYXJhdG9yKQogICAgICwgbV9pc0FsbDhCaXQobV9zZXBhcmF0b3IuaXM4Qml0
KCkpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCFtX3N0cmluZ3MudHJ5UmVzZXJ2
ZUNhcGFjaXR5KHN0cmluZ0NvdW50KSkpCi0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoJnN0YXRlLCBzY29wZSk7CiB9
CiAKIGlubGluZSBKU1N0cmluZ0pvaW5lcjo6SlNTdHJpbmdKb2luZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgTENoYXIgc2VwYXJhdG9yLCB1bnNpZ25lZCBzdHJpbmdDb3VudCkKICAgICA6IG1fc2luZ2xl
Q2hhcmFjdGVyU2VwYXJhdG9yKHNlcGFyYXRvcikKICAgICAsIG1fc2VwYXJhdG9yIHsgJm1fc2lu
Z2xlQ2hhcmFjdGVyU2VwYXJhdG9yLCAxIH0KIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtF
TFkoIW1fc3RyaW5ncy50cnlSZXNlcnZlQ2FwYWNpdHkoc3RyaW5nQ291bnQpKSkKLSAgICAgICAg
dGhyb3dPdXRPZk1lbW9yeUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmc3RhdGUsIHNjb3BlKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpTU3RyaW5nSm9p
bmVyOjphcHBlbmQoU3RyaW5nVmlld1dpdGhVbmRlcmx5aW5nU3RyaW5nJiYgc3RyaW5nKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3ltYm9sVGFibGVP
YmplY3QuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTeW1ib2xUYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlE
ZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRlICJUaHJvd1Nj
b3BlLmgiCiAjaW5jbHVkZSAiVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xNjYsNiArMTY3LDcgQEAgdGVtcGxhdGU8U3ltYm9sVGFibGVQdXRNb2RlIHN5
bWJvbFRhYmxlUAogaW5saW5lIGJvb2wgc3ltYm9sVGFibGVQdXQoU3ltYm9sVGFibGVPYmplY3RU
eXBlKiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IsIGJvb2wgaWdub3Jl
UmVhZE9ubHlFcnJvcnMsIGJvb2wmIHB1dFJlc3VsdCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIFdh
dGNocG9pbnRTZXQqIHNldCA9IG51bGxwdHI7CiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogcmVnOwpAQCAtMTgyLDcgKzE4NCw3IEBAIGlubGluZSBib29sIHN5bWJvbFRhYmxlUHV0KFN5
bWJvbFRhYmxlT2IKICAgICAgICAgQVNTRVJUKCFmYXN0RW50cnkuaXNOdWxsKCkpOwogICAgICAg
ICBpZiAoZmFzdEVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaWdub3JlUmVhZE9ubHlFcnJvcnMpIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IpCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHB1dFJlc3VsdCA9
IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIwMCw5ICsy
MDIsOSBAQCBpbmxpbmUgYm9vbCBzeW1ib2xUYWJsZVB1dChTeW1ib2xUYWJsZU9iCiAgICAgLy8g
dGhlIHJpZ2h0IGZvciBiYXJyaWVycyB0byBiZSBhYmxlIHRvIHRyaWdnZXIgR0MuIEFuZCBJIGRv
bid0IHdhbnQgdG8gaG9sZCBWTQogICAgIC8vIGxvY2tzIHdoaWxlIEdDJ2luZy4KICAgICBpZiAo
c3ltYm9sVGFibGVQdXRNb2RlID09IFN5bWJvbFRhYmxlUHV0TW9kZTo6SW52YWxpZGF0ZSkKLSAg
ICAgICAgc3ltYm9sVGFibGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldChleGVjLT52bSgpLCBv
YmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywgc2V0KTsKKyAgICAgICAgc3ltYm9sVGFi
bGVQdXRJbnZhbGlkYXRlV2F0Y2hwb2ludFNldCh2bSwgb2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCByZWcsIHNldCk7CiAgICAgZWxzZQotICAgICAgICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0
Y2hwb2ludFNldChleGVjLT52bSgpLCBvYmplY3QsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHJlZywg
c2V0KTsKKyAgICAgICAgc3ltYm9sVGFibGVQdXRUb3VjaFdhdGNocG9pbnRTZXQodm0sIG9iamVj
dCwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcmVnLCBzZXQpOwogICAgIHB1dFJlc3VsdCA9IHRydWU7
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRB
cnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjYsNyArNjYsOSBAQCBTdHJ1
Y3R1cmUqIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6CiAKIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFR5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIiVU
eXBlZEFycmF5JSBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCIl
VHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiKSk7CiB9CiAKIENvbnN0
cnVjdFR5cGUgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpT
Q2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDI2
ICszOSwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgQ0FMTF9HRU5FUklDX1RZUEVEQVJS
QVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGZ1bmN0aW9uTmFtZSkgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBzd2l0Y2ggKHRoaXNWYWx1ZS5nZXRPYmplY3QoKS0+Y2xhc3NJbmZv
KCktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICBjYXNlIFR5cGVVaW50OENsYW1wZWQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU1VpbnQ4Q2xhbXBlZEFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1Vp
bnQ4Q2xhbXBlZEFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQzMjogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDMyQXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uTmFtZTxKU0ludDMyQXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MzI6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5PihleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQzMkFycmF5Pih2bSwgZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVGbG9hdDY0OiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRB
cnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0NjRBcnJheT4odm0sIGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5
cGVGbG9hdDMyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFt
ZTxKU0Zsb2F0MzJBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0Zsb2F0MzJBcnJh
eT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICBjYXNlIFR5cGVJbnQ4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uTmFtZTxKU0ludDhBcnJheT4oZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxK
U0ludDhBcnJheT4odm0sIGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50ODogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uTmFtZTxKU1VpbnQ4QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVJbnQxNjogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU0ludDE2QXJyYXk+KHZtLCBleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVVaW50MTY6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQx
NkFycmF5PihleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZTxKU1VpbnQxNkFycmF5Pih2bSwgZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNl
IE5vdFR5cGVkQXJyYXk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIFR5cGVEYXRhVmlldzog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAg
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyIpKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTcyLDE0ICs3MiwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRl
RnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBh
cmd1bWVudCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxsKCkg
fHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8oKS0+dHlwZWRBcnJh
eVN0b3JhZ2VUeXBlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IikpOwogCiAgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihhcmd1bWVu
dCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5kZXJseWluZyBBcnJh
eUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3IikpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5sZW5ndGgoKSkpOwogfQpAQCAt
OTQsMTExICs5NiwxMzkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5
VgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1
bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1NvcnQpOwog
fQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1By
b3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2Jq
ZWN0IikpOworICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJl
IGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwog
ICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50
aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hv
dWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9O
KGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luY2x1ZGVzKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFu
IG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJ
T04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YpOwogfQogCiBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0lu
ZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwogfQogCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4o
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNo
b3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJS
ZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVj
dCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNM
ZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNU
SU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0xlbmd0aCk7CiB9CiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZUxlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3Qg
YW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxl
bmd0aCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJy
YXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBl
ZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNf
VFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9H
ZXR0ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUg
YSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dF
TkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jUmV2ZXJzZSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlw
ZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJy
YXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VO
RVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDExICs1MCwxNiBAQCB2b2lkIE1hcENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxNYXAoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1
Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCAiTWFwIikpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5v
dEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIk1hcCIpKTsKIH0KIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0TWFwKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBTdHJ1Y3R1cmUqIG1hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPm1h
cFN0cnVjdHVyZSgpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC03MSwxMSAr
NzYsMTEgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29ucwogICAgIENh
bGxEYXRhIGFkZGVyRnVuY3Rpb25DYWxsRGF0YTsKICAgICBDYWxsVHlwZSBhZGRlckZ1bmN0aW9u
Q2FsbFR5cGUgPSBnZXRDYWxsRGF0YShhZGRlckZ1bmN0aW9uLCBhZGRlckZ1bmN0aW9uQ2FsbERh
dGEpOwogICAgIGlmIChhZGRlckZ1bmN0aW9uQ2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKSk7
CiAKICAgICBmb3JFYWNoSW5JdGVyYWJsZShleGVjLCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwgRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIG5leHRJdGVtKSB7CiAgICAgICAgIGlmICghbmV4dEl0ZW0u
aXNPYmplY3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YUlu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBE
YXRhSW5saW5lcy5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBEYXRhSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDkg
QEAgaW5saW5lIHZvaWQgTWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0bwogdGVtcGxhdGU8dHlw
ZW5hbWUgRW50cnksIHR5cGVuYW1lIEpTSXRlcmF0b3I+CiBpbmxpbmUgQ2hlY2tlZEJvb2xlYW4g
TWFwRGF0YUltcGw8RW50cnksIEpTSXRlcmF0b3I+OjplbnN1cmVTcGFjZUZvckFwcGVuZChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogb3duZXIpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAobV9j
YXBhY2l0eSA+IG1fc2l6ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTIxMSw3ICsyMTQs
NyBAQCBpbmxpbmUgQ2hlY2tlZEJvb2xlYW4gTWFwRGF0YUltcGw8RW50cnksCiAgICAgdm9pZCog
bmV3U3RvcmFnZSA9IG51bGxwdHI7CiAgICAgRGVmZXJHQyBkZWZlcigqZXhlYy0+aGVhcCgpKTsK
ICAgICBpZiAoIWV4ZWMtPmhlYXAoKS0+dHJ5QWxsb2NhdGVTdG9yYWdlKG93bmVyLCByZXF1aXJl
ZFNpemUgKiBzaXplb2YoRW50cnkpLCAmbmV3U3RvcmFnZSkpIHsKLSAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEVudHJ5KiBuZXdFbnRy
aWVzID0gc3RhdGljX2Nhc3Q8RW50cnkqPihuZXdTdG9yYWdlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcEl0ZXJhdG9yUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBJdGVyYXRvclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcEl0
ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MCw5ICs1MCwxMiBAQCB2b2lk
IE1hcEl0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgTWFwSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXBJdGVyYXRvciogaXRlcmF0b3Ig
PSBqc0R5bmFtaWNDYXN0PEpTTWFwSXRlcmF0b3IqPihjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWl0ZXJhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBNYXBJdGVyYXRv
ci5uZXh0KCkgb24gYSBub24tTWFwSXRlcmF0b3Igb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBjYWxsIE1hcEl0ZXJhdG9yLm5leHQoKSBvbiBhIG5vbi1NYXBJdGVyYXRv
ciBvYmplY3QiKSkpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgaWYgKGl0ZXJhdG9yLT5u
ZXh0KGNhbGxGcmFtZSwgcmVzdWx0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTAsMTMgKzkwLDE2IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0K
IAogQUxXQVlTX0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3Jl
YXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJhbWUsIHRoaXNWYWx1ZSkpOworICAgICAgICB0aHJv
d1ZNRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgY3JlYXRlTm90QW5PYmplY3RFcnJvcihjYWxsRnJh
bWUsIHRoaXNWYWx1ZSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNN
YXAqIG1hcCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih0aGlzVmFsdWUpOwogICAgIGlmICghbWFw
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJNYXAg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJNYXAgb3BlcmF0aW9uIGNhbGxl
ZCBvbiBub24tTWFwIG9iamVjdCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
ICAgIHJldHVybiBtYXA7CkBAIC0xNTUsMjYgKzE1OCwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFw
UHJvdG9GdW5jVmFsdWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU01hcCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBNYXAgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3QuIikpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUt
PnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5tYXBJdGVyYXRvclN0
cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBNYXAgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLU1hcCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTTWFwSXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1hcFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTTWFwKiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU01h
cCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBlbnRyeSBpdGVyYXRvciBmb3IgYSBub24tTWFwIG9i
amVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJdGVyYXRvcjo6Y3Jl
YXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
Pm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIE1hcCBlbnRyeSBpdGVyYXRvciBmb3Ig
YSBub24tTWFwIG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNNYXBJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
bWFwSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWFwUHJvdG9GdW5jS2V5cyhDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNNYXAqIHRoaXNPYmogPSBq
c0R5bmFtaWNDYXN0PEpTTWFwKj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0
aGlzT2JqKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNh
bGxGcmFtZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY3JlYXRlIGEgTWFwIGtleSBpdGVyYXRvciBm
b3IgYSBub24tTWFwIG9iamVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNN
YXBJdGVyYXRvcjo6Y3JlYXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+
Z2xvYmFsT2JqZWN0KCktPm1hcEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVL
ZXkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxs
RnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjcmVhdGUgYSBNYXAga2V5IGl0ZXJh
dG9yIGZvciBhIG5vbi1NYXAgb2JqZWN0LiIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU01hcEl0ZXJhdG9yOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9i
amVjdCgpLT5tYXBJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlS2V5KSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc01hcChFeGVjU3Rh
dGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTA5LDYgKzEwOSw4IEBAIE1vZHVsZUxvYWRlclByb3RvdHlwZTo6TW9kdWxlTG9h
ZGVyUHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90
eXBlUGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgY29u
c3QgSWRlbnRpZmllciBtb2R1bGVLZXkgPSBleGVjLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyNyw3ICsxMjksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6U3RyaWN0LCBKU1BhcnNlckNvbW1lbnRNb2RlOjpNb2R1bGUsIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlQW5hbHl6ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvcik7CiAK
ICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBl
cnJvci50b0Vycm9yT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgc291cmNlQ29k
ZSkpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGVycm9yLnRvRXJyb3JPYmpl
Y3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzb3VyY2VDb2RlKSk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIEFTU0VSVCht
b2R1bGVQcm9ncmFtTm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dWxsU2V0dGVyRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDggKzcyLDExIEBAIHN0YXRpYyBib29sIGNhbGxlcklzU3RyaWN0KEV4
ZWNTdGF0ZSogZXgKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJl
dHVyblVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
Y2FsbGVySXNTdHJpY3QoZXhlYykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTZXR0aW5nIGEgcHJvcGVydHkgdGhhdCBo
YXMgb25seSBhIGdldHRlciIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2V0dGluZyBhIHByb3BlcnR5
IHRoYXQgaGFzIG9ubHkgYSBnZXR0ZXIiKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY0LDE1ICszNjQsMTggQEAgc3RhdGljIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChp
bnQzMl90IAogLy8gdG8gYXJndW1lbnQtcGx1cy1vbmUgc2lnbmlmaWNhbnQgZmlndXJlcykuCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvRXhwb25lbnRpYWwo
RXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91YmxlIHg7CiAgICAgaWYg
KCF0b1RoaXNOdW1iZXIoZXhlYy0+dGhpc1ZhbHVlKCksIHgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogCiAgICAgLy8gR2V0IHRoZSBhcmd1bWVudC4gCiAgICAgaW50IGRlY2ltYWxQ
bGFjZXNJbkV4cG9uZW50OwogICAgIGJvb2wgaXNVbmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRl
Z2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAsIDIwLCBkZWNpbWFsUGxhY2VzSW5FeHBvbmVudCwg
aXNVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDAgYW5kIDIwIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRXhwb25l
bnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOwogCiAgICAgLy8g
SGFuZGxlIE5hTiBhbmQgSW5maW5pdHkuCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHgpKQpAQCAt
Mzk1LDE1ICszOTgsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90
bwogLy8gbWV0aG9kIHdpbGwgaW5zdGVhZCBmYWxsYmFjayB0byBjYWxsaW5nIFRvU3RyaW5nLiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZChFeGVj
U3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRv
VGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICAvLyBHZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgZGVjaW1hbFBsYWNl
czsKICAgICBib29sIGlzVW5kZWZpbmVkOyAvLyBUaGlzIGlzIGlnbm9yZWQ7IHVuZGVmaW5lZCB0
cmVhdGVkIGFzIDAuCiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMsIDAs
IDIwLCBkZWNpbWFsUGxhY2VzLCBpc1VuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvRml4ZWQo
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgidG9GaXhlZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpKSk7CiAK
ICAgICAvLyAxNS43LjQuNS43IHN0YXRlcyAiSWYgeCA+PSAxMF4yMSwgdGhlbiBsZXQgbSA9IFRv
U3RyaW5nKHgpIgogICAgIC8vIFRoaXMgYWxzbyBjb3ZlcnMgSW5pbml0eSwgYW5kIHN0cnVjdHVy
ZSB0aGUgY2hlY2sgc28gdGhhdCBOYU4KQEAgLTQyOCwxNSArNDM0LDE4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIC8vIHdpdGggc21hbGxlciB2YWx1ZXMgY29u
dmVydGVkIHRvIGV4cG9uZW50aWFsIHJlcHJlc2VudGF0aW9uLgogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbihFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJlcihleGVj
LT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAv
LyBHZXQgdGhlIGFyZ3VtZW50LiAKICAgICBpbnQgc2lnbmlmaWNhbnRGaWd1cmVzOwogICAgIGJv
b2wgaXNVbmRlZmluZWQ7CiAgICAgaWYgKCFnZXRJbnRlZ2VyQXJndW1lbnRJblJhbmdlKGV4ZWMs
IDEsIDIxLCBzaWduaWZpY2FudEZpZ3VyZXMsIGlzVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
dG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjEiKSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgidG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MSBhbmQgMjEiKSkpOwogCiAgICAgLy8gVG8gcHJlY2lzaW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3Vt
ZW50IGlzIHRyZWF0ZWQgYXMgVG9TdHJpbmcuCiAgICAgaWYgKGlzVW5kZWZpbmVkKQpAQCAtNDg1
LDIyICs0OTQsMjMgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBpbnRlZ2VyVmFsdQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsK
ICAgICBpZiAoIXRvVGhpc051bWJlcihleGVjLT50aGlzVmFsdWUoKSwgZG91YmxlVmFsdWUpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJh
Y3RSYWRpeEZyb21BcmdzKGV4ZWMpOwogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgidG9TdHJpbmcoKSByYWRpeCBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiKSkpOwogCiAgICAgaW50MzJfdCBpbnRlZ2Vy
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7CiAgICAgaWYgKGludGVn
ZXJWYWx1ZSA9PSBkb3VibGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGludGVnZXJWYWx1ZVRvU3Ry
aW5nKGV4ZWMsIHJhZGl4LCBpbnRlZ2VyVmFsdWUpOwogCi0gICAgaWYgKHJhZGl4ID09IDEwKSB7
Ci0gICAgICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCB2bS0+bnVtZXJpY1N0cmluZ3MuYWRkKGRvdWJsZVZhbHVlKSkp
OwotICAgIH0KKyAgICBpZiAocmFkaXggPT0gMTApCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoJnZtLCB2bS5udW1lcmljU3RyaW5ncy5hZGQoZG91YmxlVmFsdWUpKSk7
CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBTdHJpbmc6Om51bWJlclRv
U3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpKTsKQEAgLTUxMSwxOSArNTIxLDI1IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBkb3VibGUgeDsKICAgICBpZiAoIXRvVGhpc051bWJl
cihleGVjLT50aGlzVmFsdWUoKSwgeCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHgpLnRvU3RyaW5nKGV4ZWMpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9m
KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGRvdWJsZSB4OwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0b1RoaXNOdW1i
ZXIodGhpc1ZhbHVlLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
V1RGOjptYWtlU3RyaW5nKCJ0aGlzTnVtYmVyVmFsdWUgY2FsbGVkIG9uIGluY29tcGF0aWJsZSAi
LCBqc0Nhc3Q8SlNTdHJpbmcqPihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCB0aGlzVmFsdWUp
KS0+dmFsdWUoZXhlYykpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBh
dGlibGUgIiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhp
c1ZhbHVlKSktPnZhbHVlKGV4ZWMpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcih4KSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjE3LDEzICsyMTcsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9y
U2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSBvYmplY3RWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmIChvYmplY3RWYWx1
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAg
ICAgSlNWYWx1ZSBwcm90b1ZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm90
b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9P
YmplY3QoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMjMyLDcgKzIz
NSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBpZiAo
IWNoZWNrUHJvdG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogCi0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBib29sIHNob3VsZFRocm93SWZDYW50U2V0ID0gdHJ1ZTsKICAgICBib29sIGRp
ZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90b1ZhbHVl
LCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgQVNTRVJUX1VOVVNFRChkaWRTZXRQcm90b3R5
cGUsIHZtLmV4Y2VwdGlvbigpIHx8IGRpZFNldFByb3RvdHlwZSk7CkBAIC0zNDQsOCArMzQ2LDEw
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb3duRW51bWVyYWIKIGJvb2wgdG9Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2MpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWluLmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0eSBkZXNj
cmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4g
b2JqZWN0LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCog
ZGVzY3JpcHRpb24gPSBhc09iamVjdChpbik7CkBAIC0zOTAsNyArMzk0LDcgQEAgYm9vbCB0b1By
b3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQogICAgICAgICBpZiAoIWdldC5pc1VuZGVm
aW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlm
IChnZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3Qg
YmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiR2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00
MDUsNyArNDA5LDcgQEAgYm9vbCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZQog
ICAgICAgICBpZiAoIXNldC5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICAgICAgICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9PSBD
YWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3Qg
YmUgYSBmdW5jdGlvbi4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00MTcsMTIgKzQyMSwxMiBAQCBib29sIHRvUHJvcGVydHlE
ZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYg
KGRlc2MudmFsdWUoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9w
ZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxl
JyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVy
dHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVy
LiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTQzMCwxOSArNDM0LDI1IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBl
eGUKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghZXhl
Yy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24g
T2JqZWN0cy4iKSk7Ci0gICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKKyAg
ICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGF1dG8g
cHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwotICAgIGlm
ICghdG9Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIGRlc2NyaXB0
b3IpKQorICAgIGF1dG8gc3VjY2VzcyA9IHRvUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDIpLCBkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigp
ID09IHN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAm
IEFjY2Vzc29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwogICAg
IEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgIE8tPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShPLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHRydWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTyk7CisgICAgb2JqLT5tZXRo
b2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShvYmopOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCkBA
IC00ODUsOCArNDk1LDExIEBAIHN0YXRpYyBKU1ZhbHVlIGRlZmluZVByb3BlcnRpZXMoRXhlY1N0
YXQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmlu
ZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBv
biBPYmplY3RzLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGllcyBjYW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVj
dHMuIikpOwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmogPSBhc09iamVjdChleGVjLT5hcmd1bWVu
dCgwKSk7CiAgICAgSlNPYmplY3QqIHByb3BzID0gZXhlYy0+YXJndW1lbnQoMSkudG9PYmplY3Qo
ZXhlYyk7CiAgICAgaWYgKCFwcm9wcykKQEAgLTQ5NiwxNiArNTA5LDE5IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFw
cm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5
IGJlIGFuIE9iamVjdCBvciBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBi
ZSBhbiBPYmplY3Qgb3IgbnVsbC4iKSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3Rv
LmlzT2JqZWN0KCkKICAgICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVj
dChwcm90bykpCiAgICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAg
IGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09iamVjdCwgYXNPYmpl
Y3QoZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjA1MTgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0xMjcsNiArMTI3LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvRnVuY0RlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBT
dHJpY3RNb2RlKS50b09iamVjdChleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzQs
NyArMTM3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAg
IEpTVmFsdWUgZ2V0ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgaWYgKGdldENhbGxEYXRhKGdldCwgY2FsbERhdGEpID09IENhbGxUeXBlOjpOb25lKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoImludmFs
aWQgZ2V0dGVyIHVzYWdlIikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKTsKIAogICAgIGF1
dG8gcHJvcGVydHlOYW1lID0gZXhlYy0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShleGVjKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xNDYsMTMgKzE0OSwxNiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRD
b25maWd1cmFibGUodHJ1ZSk7CiAKICAgICBib29sIHNob3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cisg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gZXhlYy0+
dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2JqZWN0KGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE2MCw3ICsxNjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgSlNWYWx1ZSBzZXQgPSBleGVjLT5hcmd1bWVudCgx
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoZ2V0Q2FsbERhdGEoc2V0LCBjYWxs
RGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoImludmFsaWQg
c2V0dGVyIHVzYWdlIikpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVu
dCgwKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE3Miw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFBy
b3RvCiAgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7CiAKICAgICBib29sIHNo
b3VsZFRocm93ID0gdHJ1ZTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5k
ZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IsIHNob3VsZFRocm93KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC0yNjksNiArMjc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90b0Z1
bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2RlKTsK
ICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2bS5zbWFsbFN0cmluZ3Mu
dW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3MubnVsbE9iamVjdFN0cmlu
ZygpKTsKQEAgLTMwMyw3ICszMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICBTdHJpbmcg
bmV3U3RyaW5nID0gV1RGOjp0cnlNYWtlU3RyaW5nKCJbb2JqZWN0ICIsIFdURk1vdmUodGFnKSwg
Il0iKTsKICAgICAgICAgaWYgKCFuZXdTdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAgICAgYXV0byByZXN1bHQgPSBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBuZXdTdHJpbmcpOwogICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMsIHZtLCByZXN1bHQsIHRvU3RyaW5nVGFn
U2xvdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAyLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIw
MDUtMjAwOSwgMjAxMy0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MCw2ICs0MCw3IEBAIHNpemVfdCBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihDYWxsRnJhbWUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogewogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgaW50MzJfdCBsZW5ndGgxID0gczEtPmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3Ro
MSkKQEAgLTQ4LDcgKzQ5LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNT
dGF0ZQogICAgIGlmICghbGVuZ3RoMikKICAgICAgICAgcmV0dXJuIHMxOwogICAgIGlmIChzdW1P
dmVyZmxvd3M8aW50MzJfdD4obGVuZ3RoMSwgbGVuZ3RoMikpCi0gICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlKHZt
LCBzMSwgczIpOwogfQpAQCAtNTYsMTMgKzU3LDE0IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c1N0cmluZyhFeGVjU3RhdGUKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgdTIsIGNvbnN0IFN0cmlu
ZyYgdTMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAogICAgIGludDMyX3QgbGVuZ3RoMSA9IHUxLmxlbmd0
aCgpOwogICAgIGludDMyX3QgbGVuZ3RoMiA9IHUyLmxlbmd0aCgpOwogICAgIGludDMyX3QgbGVu
Z3RoMyA9IHUzLmxlbmd0aCgpOwogICAgIAogICAgIGlmIChsZW5ndGgxIDwgMCB8fCBsZW5ndGgy
IDwgMCB8fCBsZW5ndGgzIDwgMCkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgCiAgICAgaWYgKCFsZW5ndGgxKQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhl
YywganNTdHJpbmcodm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7CkBAIC03Miw3ICs3NCw3IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUKICAgICAgICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIGpzU3RyaW5nKHZtLCB1MSksIGpzU3RyaW5nKHZtLCB1MikpOwogCiAg
ICAgaWYgKHN1bU92ZXJmbG93czxpbnQzMl90PihsZW5ndGgxLCBsZW5ndGgyLCBsZW5ndGgzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICByZXR1cm4gSlNS
b3BlU3RyaW5nOjpjcmVhdGUoZXhlYy0+dm0oKSwganNTdHJpbmcodm0sIHUxKSwganNTdHJpbmco
dm0sIHUyKSwganNTdHJpbmcodm0sIHUzKSk7CiB9CkBAIC04MCwxMiArODIsMTMgQEAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZQogQUxXQVlTX0lOTElORSBKU1ZhbHVl
IGpzU3RyaW5nRnJvbVJlZ2lzdGVyQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3Rlciogc3Ry
aW5ncywgdW5zaWduZWQgY291bnQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKICAgICBKU1JvcGVTdHJpbmc6
OlJvcGVCdWlsZGVyIHJvcGVCdWlsZGVyKCp2bSk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBKU1ZhbHVlIHYgPSBzdHJpbmdzWy1zdGF0aWNf
Y2FzdDxpbnQ+KGkpXS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmICghcm9wZUJ1aWxkZXIuYXBwZW5k
KHYudG9TdHJpbmcoZXhlYykpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgIH0KIAogICAgIHJldHVybiByb3BlQnVpbGRlci5yZWxlYXNlKCk7CkBA
IC05NCwxMyArOTcsMTQgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbVJlZ2lz
dAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3RyaW5nRnJvbUFyZ3VtZW50cyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CiAgICAgSlNSb3BlU3Ry
aW5nOjpSb3BlQnVpbGRlciByb3BlQnVpbGRlcigqdm0pOwogICAgIHJvcGVCdWlsZGVyLmFwcGVu
ZCh0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIEpTVmFsdWUgdiA9IGV4
ZWMtPmFyZ3VtZW50KGkpOwogICAgICAgICBpZiAoIXJvcGVCdWlsZGVyLmFwcGVuZCh2LnRvU3Ry
aW5nKGV4ZWMpKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKICAgICB9CiAKICAgICByZXR1cm4gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw4ICs1Niw5IEBAIFByb3h5Q29u
c3RydWN0b3I6OlByb3h5Q29uc3RydWN0b3IoVk0mIHYKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgbWFrZVJldm9jYWJsZVByb3h5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVk
IHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIiKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUg
dGFyZ2V0IGFuZCB0aGUgaGFuZGxlciIpKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwpAQCAtODEsNyArODIsOCBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtYWtlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHByb3h5UmV2b2NhYmxlQ29uc3RydWN0b3JUaHJvd0Vycm9yKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5LnJldm9jYWJsZSBjYW5ub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxl
ZCIpKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShleGVjLT52bSgpKTsK
KyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQ
cm94eS5yZXZvY2FibGUgY2Fubm90IGJlIGNvbnN0cnVjdGVkLiBJdCBjYW4gb25seSBiZSBjYWxs
ZWQiKSk7CiB9CiAKIHZvaWQgUHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBjb25zdCBjaGFyKiBuYW1lLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtOTQs
OCArOTYsOSBAQCB2b2lkIFByb3h5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNCiAKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb3h5T2JqZWN0KEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShl
eGVjLT52bSgpKTsKICAgICBpZiAoZXhlYy0+bmV3VGFyZ2V0KCkuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJuZXcudGFy
Z2V0IG9mIFByb3h5IGNvbnN0cnVjdCBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgibmV3
LnRhcmdldCBvZiBQcm94eSBjb25zdHJ1Y3Qgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKSk7CiAK
ICAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBhcmdzLmF0KDAp
OwpAQCAtMTExLDcgKzExNCw4IEBAIENvbnN0cnVjdFR5cGUgUHJveHlDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3QKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFByb3h5KEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlByb3h5IikpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGV4ZWMtPnZtKCkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihleGVjLCBzY29wZSwgIlByb3h5IikpOwogfQogCiBDYWxsVHlwZSBQcm94
eUNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJZGVu
dGlmaWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgpAQCAtNzksMTkgKzgwLDIwIEBAIFN0cnVj
dHVyZSogUHJveHlPYmplY3Q6OnN0cnVjdHVyZUZvclRhcmcKIAogdm9pZCBQcm94eU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGFyZ2V0LCBK
U1ZhbHVlIGhhbmRsZXIpCiB7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQSBQ
cm94eSdzICd0YXJnZXQnIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkEgUHJveHkncyAndGFyZ2V0JyBzaG91
bGQgYmUgYW4gT2JqZWN0IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChQcm94
eU9iamVjdCogdGFyZ2V0QXNQcm94eSA9IGpzRHluYW1pY0Nhc3Q8UHJveHlPYmplY3QqPih0YXJn
ZXQpKSB7CiAgICAgICAgIGlmICh0YXJnZXRBc1Byb3h5LT5oYW5kbGVyKCkuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94
eSdzIGhhbmRsZXIgaXMgYW5vdGhlciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91
bGQgbm90IGhhdmUgYmVlbiByZXZva2VkIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSWYgYSBQcm94eSdzIGhhbmRsZXIgaXMgYW5vdGhl
ciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBzaG91bGQgbm90IGhhdmUgYmVlbiByZXZv
a2VkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgh
aGFuZGxlci5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4gT2JqZWN0IikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBIFByb3h5J3Mg
J2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTExNiw4ICsxMTgsOSBAQCBzdGF0aWMgY29uc3QgY2hhciogc19wcm94eUFscmVhZHlS
ZXZva2VkCiBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlKiBleGVjLCBQ
cm94eU9iamVjdCogcHJveHlPYmplY3QsIEpTVmFsdWUgcmVjZWl2ZXIsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVU
b1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogCkBAIC0xMzUsNyArMTM4LDcgQEAgc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSBwcm94eU9iamVjdC0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVy
cm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtMTU5LDEwICsxNjIs
MTAgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZQogICAgIGlmICh0
YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2Ny
aXB0b3IpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAh
ZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIXNhbWVWYWx1ZShleGVjLCBkZXNjcmlwdG9yLnZhbHVlKCksIHRyYXBS
ZXN1bHQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJh
YmxlIGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFz
IHRoZSB0YXJnZXQncyBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdnZXQn
IHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBz
aG91bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3BlcnR5IikpOwogICAg
ICAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiAhZGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSAmJiBkZXNjcmlwdG9yLmdldHRlcigpLmlzVW5kZWZpbmVk
KCkpIHsKICAgICAgICAgICAgIGlmICghdHJhcFJlc3VsdC5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5
IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFjY2Vzc29yIHBy
b3BlcnR5IHdpdGhvdXQgYSBnZXR0ZXIgc2hvdWxkIGJlIHVuZGVmaW5lZCIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgaGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNz
b3IgcHJvcGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIikpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xODUsOCArMTg4LDkgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUdldChFeGVjU3RhdGUqIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0
aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZ
KCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNPYmplY3QqIHRhcmdldCA9
IHRoaXMtPnRhcmdldCgpOwpAQCAtMjAwLDcgKzIwNCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1JbnRlcm5hbE1ldGhvZEcKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+
aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjIxLDcgKzIyNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYg
KCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgicmVzdWx0IG9mICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBhbiBPYmplY3Qg
b3IgdW5kZWZpbmVkIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBB
U0NJSUxpdGVyYWwoInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBjYWxsIHNo
b3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCIpKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMjM0LDcgKzIzOCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBl
cmZvcm1JbnRlcm5hbE1ldGhvZEcKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5RGVzY3Jp
cHRvckRlZmluZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghdGFy
Z2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29u
ZmlndXJhYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJXaGVuIHRoZSByZXN1bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgaXMgdW5kZWZpbmVkIHRoZSB0YXJnZXQgbXVzdCBiZSBjb25maWd1cmFibGUiKSk7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IHRoaXMg
ZG9lc24ndCB3b3JrIGlmICd0YXJnZXQnIGlzIGFub3RoZXIgUHJveHkuIFdlIGRvbid0IGhhdmUg
aXNFeHRlbnNpYmxlIGltcGxlbWVudGVkIGluIGEgd2F5IHRoYXQgZml0cyB3LyBQcm94eXMuCkBA
IC0yNDYsNyArMjUwLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9k
RwogICAgICAgICAgICAgLy8gRklYTUU6IENvbWUgdXAgd2l0aCBhIHRlc3QgZm9yIHRoaXMgZXJy
b3IuIEknbSBub3Qgc3VyZSBob3cgdG8gYmVjYXVzZQogICAgICAgICAgICAgLy8gT2JqZWN0LnNl
YWwobykgd2lsbCBtYWtlIGFsbCBmaWVsZHMgW1tDb25maWd1cmFibGVdXSBmYWxzZS4KICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzNzYK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJXaGVuICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgJ3RhcmdldCcg
b2YgYSBQcm94eSBzaG91bGQgYmUgZXh0ZW5zaWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2hlbiAnZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkgc2hv
dWxkIGJlIGV4dGVuc2libGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtMjY0LDEzICsyNjgsMTMgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kRwogICAgIGJvb2wgdmFsaWQgPSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNj
cmlwdG9yKGV4ZWMsIG51bGxwdHIsIHByb3BlcnR5TmFtZSwgaXNFeHRlbnNpYmxlLAogICAgICAg
ICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmlu
ZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlmICgh
dmFsaWQpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJl
c3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGli
bGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Rl
c2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5
RGVzY3JpcHRvckRlZmluZWQgfHwgdGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJs
ZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZp
Z3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3duIHByb3Bl
cnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFyZ2V0JyIp
KTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNv
bmZpZ3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhhdmUgaXQgYXMgYW4gb3duIHBy
b3BlcnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBwcm9wZXJ0eSBvbiAndGFyZ2V0
JyIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI5
MSw4ICsyOTUsOSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHCiBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7Ci0gICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
SlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwpAQCAtMzA3LDcgKzMxMiw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShFeGUKIAogICAgIEpTVmFsdWUgaGFu
ZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94
eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzM4LDE0ICszNDMsMTQg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaXNQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKSB7
CiAgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhcycg
bXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiKSk7Cisg
ICAgICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydGllcyIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAg
ICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdo
YXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmpl
Y3Qgd2l0aCBhIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYXMnIG11c3Qg
cmV0dXJuICd0cnVlJyBmb3IgYSBub24tZXh0ZW5zaWJsZSAndGFyZ2V0JyBvYmplY3Qgd2l0aCBh
IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM1Niw4ICszNjEsMTAgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiBib29sIFByb3h5T2JqZWN0OjpnZXRP
d25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKCFleGVjLT52
bSgpLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBzbG90LmRpc2FibGVDYWNo
aW5nKCk7CkBAIC0zOTQsOCArNDAxLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZh
dWx0UHV0RnVuYwogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcHV0VmFsdWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQZXJmb3JtRGVmYXVsdFB1dEZ1bmN0aW9uIHBlcmZvcm1EZWZhdWx0UHV0KQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC00MDQsNyArNDEyLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChF
eGVjU3RhdGUqIAogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7
CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2Up
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNf
cHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC00MzYsMTEgKzQ0NCwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3Jt
UHV0KEV4ZWNTdGF0ZSogCiAgICAgaWYgKHRhcmdldC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcikpIHsKICAgICAgICAgaWYgKGRlc2NyaXB0
b3IuaXNEYXRhRGVzY3JpcHRvcigpICYmICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmICFk
ZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICghc2FtZVZhbHVlKGV4ZWMs
IGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBh
IG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBz
aG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9u
IHRoZSAndGFyZ2V0JyIpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBhIG5vbi1jb25m
aWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBzaG91bGQgZWl0
aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9uIHRoZSAndGFy
Z2V0JyIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFjY2Vz
c29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgaGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3Ig
cHJvcGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIikpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDg2LDE0ICs0OTQsMTUg
QEAgYm9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcGVyZm9ybVByb3h5Q2FsbChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0
KCkpKSB7Ci0gICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICB9CiAgICAgUHJveHlPYmplY3QqIHByb3h5ID0g
anNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTVmFsdWUgaGFuZGxl
clZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2Vk
RXJyb3JNZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVj
dCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC01MzUsMTQgKzU0
NCwxNSBAQCBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsCiBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDb25zdHJ1Y3QoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgfQogICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1
ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJl
YWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nh
c3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpAQCAt
NTY5LDcgKzU3OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXN1bHQgZnJv
bSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3Qi
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlJlc3VsdCBmcm9tIFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hv
dWxkIGJlIGFuIG9iamVjdCIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKQEAgLTU5MCw4ICs2MDAsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVmYXVsdERlbGV0
ZUZ1bmN0aW9uCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVmYXVsdERlbGV0ZUZ1bmN0aW9uIHBlcmZv
cm1EZWZhdWx0RGVsZXRlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNT
YWZlVG9SZWN1cnNlU29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MDAsNyArNjExLDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFk
eVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MzEsNyArNjQyLDcgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogICAgIFByb3BlcnR5RGVzY3JpcHRv
ciBkZXNjcmlwdG9yOwogICAgIGlmICh0YXJnZXQtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpKSB7CiAgICAgICAgIGlmICghZGVzY3JpcHRv
ci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91
bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1
cmFibGUiKSk7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBzaG91bGQg
cmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFi
bGUiKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC02
NjYsMTQgKzY3NywxNSBAQCBib29sIFByb3h5T2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNl
U29mdCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAg
ICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVy
KCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC03MDIsNyArNzE0LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bVByZXZlbnRFeHRlbnNpbwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpIHsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdz
ICdwcmV2ZW50RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0
YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7Cisg
ICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlBy
b3h5J3MgJ3ByZXZlbnRFeHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2gg
aXRzIHRhcmdldCBpcyBleHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTcxOCwx
NCArNzMwLDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2IKIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkg
ewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAg
aWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKHNfcHJveHlB
bHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC03NTcsMTEgKzc3MCwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRl
bnNpYmxlKEV4CiAgICAgaWYgKHRyYXBSZXN1bHRBc0Jvb2wgIT0gaXNUYXJnZXRFeHRlbnNpYmxl
KSB7CiAgICAgICAgIGlmIChpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgICAgIEFTU0VS
VCghdHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5l
ZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0
dXJuZWQgdHJ1ZSIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5l
ZCBmYWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0
dXJuZWQgdHJ1ZSIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNU
YXJnZXRFeHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNCb29sKTsK
LSAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBv
YmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSIpKTsKKyAg
ICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJv
eHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRh
cmdldCBpcyBub24tZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC03NzYsOCArNzg5LDkgQEAgYm9vbCBQcm94eU9i
amVjdDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KgogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURl
ZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC03OTEsNyArODA1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5k
bGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC04MzYsMTEgKzg1MCwxMSBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtRGVmaW5lT3duUHJvcGVyCiAKICAgICBpZiAoIWlzVGFyZ2V0RGVzY3JpcHRvckRlZmlu
ZWQpIHsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0
eScgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlIikpOworICAgICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1
cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJv
eHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0IGlzIG5vbi1leHRl
bnNpYmxlIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAg
IGlmIChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSkgewotICAgICAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFw
IHJldHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVuIHRob3VnaCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVu
ZGVmaW5lZCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBm
b3IgYSBub24tY29uZmlndXJhYmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIikpOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTg1MywxMSArODY3LDExIEBA
IGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXIKICAgICBib29sIHRocm93
RXhjZXB0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBpc0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBudWxscHRyLCBwcm9wZXJ0eU5h
bWUsIHRhcmdldElzRXh0ZW5zaWJsZSwgZGVzY3JpcHRvciwgaXNDdXJyZW50RGVmaW5lZCwgY3Vy
cmVudCwgdGhyb3dFeGNlcHRpb24pOwogICAgIGlmICghaXNDb21wYXRpYmxlRGVzY3JpcHRvcikg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAn
ZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFy
Z2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciIp
KTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJQ
cm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHRyYXAncyBpbnB1dCBkZXNj
cmlwdG9yIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChzZXR0aW5n
Q29uZmlndXJhYmxlVG9GYWxzZSAmJiB0YXJnZXREZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSdzICdk
ZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIG5vbi1jb25maWd1cmFibGUgcHJv
cGVydHkgb24gaXRzIHRhcmdldCBldmVuIHRob3VnaCB0aGUgaW5wdXQgZGVzY3JpcHRvciB0byB0
aGUgdHJhcCBzYWlkIGl0IG11c3QgZG8gc28iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAg
ZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9uIGl0cyB0YXJnZXQg
ZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAgc2FpZCBpdCBtdXN0
IGRvIHNvIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtODczLDEz
ICs4ODcsMTQgQEAgYm9vbCBQcm94eU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYgogdm9p
ZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgdHJhcFJlc3VsdCwgRW51bWVyYXRpb25Nb2RlIGVudW1lcmF0
aW9uTW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVj
dXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsK
ICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTk2OSw3ICs5ODQsNyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJv
cGVydHlOCiAKICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Tm9uQ29u
ZmlndXJhYmxlS2V5cykgewogICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tl
ZFJlc3VsdEtleXMoaW1wbCkgPT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyAndGFyZ2V0JyBo
YXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0cmluZyhpbXBsKSwgIicgdGhh
dCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktleXMnIHRyYXAiKSk7CisgICAg
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBtYWtlU3RyaW5nKCJQcm94eSBv
YmplY3QncyAndGFyZ2V0JyBoYXMgdGhlIG5vbi1jb25maWd1cmFibGUgcHJvcGVydHkgJyIsIFN0
cmluZyhpbXBsKSwgIicgdGhhdCB3YXMgbm90IGluIHRoZSByZXN1bHQgZnJvbSB0aGUgJ293bktl
eXMnIHRyYXAiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC05
NzksMTMgKzk5NCwxMyBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlO
CiAKICAgICBmb3IgKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsIDogdGFyZ2V0Q29uZmlndXJhYmxl
S2V5cykgewogICAgICAgICBpZiAocmVtb3ZlSWZDb250YWluZWRJblVuY2hlY2tlZFJlc3VsdEtl
eXMoaW1wbCkgPT0gSXNOb3RDb250YWluZWRJbikgewotICAgICAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBtYWtlU3RyaW5nKCJQcm94eSBvYmplY3QncyBub24tZXh0ZW5zaWJsZSAndGFy
Z2V0JyBoYXMgY29uZmlndXJhYmxlIHByb3BlcnR5ICciLCBTdHJpbmcoaW1wbCksICInIHRoYXQg
d2FzIG5vdCBpbiB0aGUgcmVzdWx0IGZyb20gdGhlICdvd25LZXlzJyB0cmFwIikpOworICAgICAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiUHJveHkgb2Jq
ZWN0J3Mgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgaGFzIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSAn
IiwgU3RyaW5nKGltcGwpLCAiJyB0aGF0IHdhcyBub3QgaW4gdGhlIHJlc3VsdCBmcm9tIHRoZSAn
b3duS2V5cycgdHJhcCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBt
ZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRzIG5vbi1leHRl
bnNpYmxlIHRhcmdldCIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwg
QVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCByZXR1cm5lZCBh
IGtleSB0aGF0IHdhcyBub3QgcHJlc2VudCBpbiBpdHMgbm9uLWV4dGVuc2libGUgdGFyZ2V0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTAyMiwxNCArMTAzNywxNSBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4CiAgICAgQVNTRVJUKHByb3RvdHlw
ZS5pc09iamVjdCgpIHx8IHByb3RvdHlwZS5pc051bGwoKSk7CiAKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKLSAgICAgICAgdGhyb3dT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEpTVmFs
dWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUu
aXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
c19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA1Nyw3ICsx
MDczLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZShFeAogICAgIAog
ICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNh
bnRTZXQpCi0gICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxk
IG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQg
dG8gc3VjY2VlZCIpKTsKKyAgICAgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRp
Y2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlv
biB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtMTA3MSw3ICsxMDg3LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFBy
b3RvdHlwZShFeAogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ3Nl
dFByb3RvdHlwZU9mJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1l
eHRlbnNpYmxlIGFuZCB0aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMg
dGhlIGN1cnJlbnQgcHJvdG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxz
ZSIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFs
KCJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIGl0cyB0YXJn
ZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDg2
LDE0ICsxMTAyLDE1IEBAIGJvb2wgUHJveHlPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCoK
IEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29m
dCgpKSkgewotICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
dGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxl
cigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICB9CiAKQEAgLTExMTUsNyArMTEzMiw3IEBAIEpTVmFsdWUgUHJveHlPYmpl
Y3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKIAogICAg
IGlmICghdHJhcFJlc3VsdC5pc09iamVjdCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7Ci0g
ICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSBoYW5kbGVy
J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBv
ciBudWxsIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhl
ciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgfQogCkBAIC0xMTI5LDcgKzExNDYsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0UHJvdG90eXBlCiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogICAgIGlmICghc2FtZVZhbHVlKGV4ZWMsIHRhcmdldFByb3RvdHlwZSwgdHJh
cFJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5vbi1leHRlbnNpYmxlIHRhcmdl
dCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQncyBwcm90b3R5cGUi
KSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVuc2libGUgdGFyZ2V0
IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3RvdHlwZSIp
KTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUsMjYgKzk1LDI5IEBAIHZvaWQgUmVmbGVjdE9iamVjdDo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHYKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2Vj
LXJlZmxlY3QuY29uc3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RP
YmplY3RDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGEgY29uc3RydWN0b3IiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3Ry
dWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKIAog
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGU7CiAgICAgaWYgKCF0YXJnZXQuaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RUeXBlLCBj
b25zdHJ1Y3REYXRhKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3Rv
ciIpKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpID49IDMpIHsKICAgICAgICAgbmV3VGFyZ2V0ID0gZXhlYy0+YXJndW1l
bnQoMik7CiAgICAgICAgIGlmICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgdGhpcmQgYXJndW1lbnQgYmUgYSBj
b25zdHJ1Y3RvciBpZiBwcmVzZW50IikpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5j
b25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYg
cHJlc2VudCIpKSk7CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwogICAgIEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0
Kj4oZXhlYy0+YXJndW1lbnQoMSkpOwogICAgIGlmICghYXJndW1lbnRzT2JqZWN0KQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRo
ZSBzZWNvbmQgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKIAogICAgIGNyZWF0ZUxpc3RGcm9t
QXJyYXlMaWtlKGV4ZWMsIGFyZ3VtZW50c09iamVjdCwgUnVudGltZVR5cGVNYXNrQWxsVHlwZXMs
IEFTQ0lJTGl0ZXJhbCgiVGhpcyBlcnJvciBtdXN0IG5vdCBiZSByYWlzZWQiKSwgWyZdIChKU1Zh
bHVlIHZhbHVlLCBSdW50aW1lVHlwZSkgLT4gYm9vbCB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBl
bmQodmFsdWUpOwpAQCAtMTI5LDkgKzEzMiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1y
ZWZsZWN0LmRlZmluZXByb3BlcnR5CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxl
Y3RPYmplY3REZWZpbmVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRhcmdldCA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxl
Y3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCIpKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3Bl
cnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NSwyNSArMTUxLDMxIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamUKICAgICAvLyBSZWZsZWN0
LmRlZmluZVByb3BlcnR5IHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3Igd2hlbiB0aGUgZGVmaW5l
T3duUHJvcGVydHkgb3BlcmF0aW9uIGZhaWxzLgogICAgIGJvb2wgc2hvdWxkVGhyb3cgPSBmYWxz
ZTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXRPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93
blByb3BlcnR5KHRhcmdldE9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBz
aG91bGRUaHJvdykpKTsKIH0KIAogLy8gRklYTUU6IFJlZmxlY3QuZW51bWVyYXRlIGlzIHJlbW92
ZWQgaW4gRUNNQSAyMDE2IGRyYWZ0LgogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLXJlZmxlY3QuZW51bWVyYXRlCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RFbnVtZXJhdGUoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5lbnVtZXJhdGUgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiUmVmbGVjdC5lbnVtZXJhdGUgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5h
bWVJdGVyYXRvclN0cnVjdHVyZSgpLCBhc09iamVjdCh0YXJnZXQpKSk7CiB9CiAKIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0CiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVj
dC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CiAKICAg
ICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvUHJv
cGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTgwLDkg
KzE5MiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAvLyBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LmdldG93bnByb3BlcnR5
ZGVzY3JpcHRvcgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOwogCiAgICAgYXV0byBrZXkgPSBleGVjLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
QEAgLTE5NCwxOCArMjA5LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVj
dE9iamUKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3QuZ2V0
cHJvdG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEdl
dFByb3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFs
dWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFy
Z3VtZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5nZXRQcm90
b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdENvbnN0cnVjdG9yR2V0UHJvdG90eXBlT2Yo
ZXhlYywgYXNPYmplY3QodGFyZ2V0KSkpOwogfQogCiAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlv
L2VjbWEyNjIvI3NlYy1yZWZsZWN0LmlzZXh0ZW5zaWJsZQogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAg
aWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJl
cXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBh
biBvYmplY3QiKSkpOwogCiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSBhc09iamVjdCh0YXJnZXQp
LT5pc0V4dGVuc2libGUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAt
MjE2LDIwICsyMzcsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2Jq
ZQogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5vd25rZXlz
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplY3RPd25LZXlzKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxl
Y3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29w
ZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvd25Qcm9w
ZXJ0eUtleXMoZXhlYywganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1lTW9k
ZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVmbGVjdC5wcmV2
ZW50ZXh0ZW5zaW9ucwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0
UHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWZsZWN0
LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmpl
Y3QiKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwotICAgIGJv
b2wgcmVzdWx0ID0gb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHJldmVudEV4dGVu
c2lvbnMob2JqZWN0LCBleGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG9iamVjdC0+bWV0aG9kVGFi
bGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwogICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwpAQCAtMjM4
LDkgKzI2NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWZsZWN0LnNldAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0U2V0KEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0IHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IlJlZmxlY3Quc2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiKSkp
OwogICAgIEpTT2JqZWN0KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGV4ZWMp
OwpAQCAtMjU0LDI1ICsyODQsMjcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZs
ZWN0T2JqZQogICAgIC8vIERvIG5vdCByYWlzZSBhbnkgcmVhZG9ubHkgZXJyb3JzIHRoYXQgaGFw
cGVuIGluIHN0cmljdCBtb2RlLgogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxz
ZTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChyZWNlaXZlciwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldE9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0YXJnZXRPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odGFyZ2V0T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dCh0YXJnZXRP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQoMiksIHNsb3QpKSk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZmxlY3Quc2V0cHJv
dG90eXBlb2YKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdFNldFBy
b3RvdHlwZU9mKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUg
dGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVmbGVjdC5zZXRQcm90b3R5
cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0IikpKTsKICAgICBK
U1ZhbHVlIHByb3RvID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFwcm90by5pc09iamVj
dCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2Yg
cmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwi
KSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBBU0NJSUxpdGVyYWwoIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhl
IHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiKSkpOwogCiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHRhcmdldCk7CiAKICAgICBpZiAoIWNoZWNrUHJv
dG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4ZWMsIG9iamVjdCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZTsKICAgICBib29sIGRpZFNl
dFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90bywgc2hvdWxk
VGhyb3dJZkNhbnRTZXQpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHJl
dmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw5IEBAIGlubGluZSBT
dHJ1Y3R1cmUqIGdldFJlZ0V4cFN0cnVjdHVyZShFeGUKIAogaW5saW5lIFJlZ0V4cEZsYWdzIHRv
RmxhZ3MoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZsYWdzKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKGZsYWdzLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBOb0ZsYWdzOwogICAg
IEpTU3RyaW5nKiBmbGFnc1N0cmluZyA9IGZsYWdzLnRvU3RyaW5nKGV4ZWMpOwpAQCAtMjIyLDEz
ICsyMjUsMTUgQEAgaW5saW5lIFJlZ0V4cEZsYWdzIHRvRmxhZ3MoRXhlY1N0YXRlKiBleAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEludmFsaWRGbGFnczsK
ICAgICBpZiAocmVzdWx0ID09IEludmFsaWRGbGFncykKLSAgICAgICAgdGhyb3dTeW50YXhFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNv
bnN0cnVjdG9yLiIpKTsKKyAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIEpTT2JqZWN0KiByZWdFeHBDcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG5ld1RhcmdldCwgSlNWYWx1ZSBwYXR0ZXJuQXJnLCBKU1ZhbHVlIGZsYWdzQXJnKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgU3RyaW5nIHBhdHRlcm4gPSBwYXR0ZXJuQXJnLmlzVW5kZWZpbmVkKCkg
PyBlbXB0eVN0cmluZygpIDogcGF0dGVybkFyZy50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTIzOSw3ICsyNDQsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHJlZ0V4cENyZWF0ZShFeGVjU3Rh
dGUqCiAKICAgICBSZWdFeHAqIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBm
bGFncyk7CiAgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsIHJlZ0V4cC0+ZXJyb3JN
ZXNzYWdlKCkpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVTeW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAKICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldFJlZ0V4cFN0cnVjdHVyZShleGVjLCBnbG9iYWxPYmpl
Y3QsIG5ld1RhcmdldCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDggQEAgTWF0Y2hSZXN1bHQgUmVnRXhwT2JqZWN0
OjptYXRjaChFeGVjU3RhdAogdGVtcGxhdGU8dHlwZW5hbWUgRml4RW5kRnVuYz4KIEpTVmFsdWUg
Y29sbGVjdE1hdGNoZXMoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBzdHJpbmcs
IGNvbnN0IFN0cmluZyYgcywgUmVnRXhwQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yLCBSZWdFeHAq
IHJlZ0V4cCwgY29uc3QgRml4RW5kRnVuYyYgZml4RW5kKQogeworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE1hdGNoUmVzdWx0IHJlc3VsdCA9IGNvbnN0
cnVjdG9yLT5wZXJmb3JtTWF0Y2godm0sIHJlZ0V4cCwgc3RyaW5nLCBzLCAwKTsKICAgICBpZiAo
IXJlc3VsdCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtMTk3LDcgKzE5OSw3IEBAIEpT
VmFsdWUgY29sbGVjdE1hdGNoZXMoVk0mIHZtLCBFeGVjU3RhdGUKICAgICAgICAgICAgIE1hdGNo
UmVzdWx0IHNhdmVkUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICAgICAgZG8gewogICAgICAgICAg
ICAgICAgIGlmIChhcnJheS0+bGVuZ3RoKCkgKyBtYXRjaENvdW50ID49IE1BWF9TVE9SQUdFX1ZF
Q1RPUl9MRU5HVEgpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGV4ZWMpOworICAgICAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywg
c2NvcGUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVnRXhw
LmgiCisjaW5jbHVkZSAiVGhyb3dTY29wZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKICAgICAKQEAg
LTQzLDIyICs0NCwyOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNldExhc3RJbmRleChFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCBsYXN0SW5kZXgpCiAgICAgeworICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICAgICAgaWYgKExJS0VMWShtX2xhc3RJbmRleElzV3JpdGFibGUpKSB7CiAgICAgICAgICAg
ICBtX2xhc3RJbmRleC5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKGpzTnVtYmVyKGxhc3RJbmRleCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5
V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgYm9vbCBzZXRM
YXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGxhc3RJbmRleCwgYm9vbCBzaG91bGRU
aHJvdykKICAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgICAgICBpZiAoTElLRUxZKG1f
bGFzdEluZGV4SXNXcml0YWJsZSkpIHsKICAgICAgICAgICAgIG1fbGFzdEluZGV4LnNldChleGVj
LT52bSgpLCB0aGlzLCBsYXN0SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgSlNWYWx1
ZSBnZXRMYXN0SW5kZXgoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw5ICs5OCwxMiBAQCB2b2lkIFJlZ0V4cFByb3RvdHlwZTo6dmlzaXRDaGlsZHJl
bihKU0NlCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9GdW5jVGVz
dEZhc3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhS
ZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nT3JOdWxsKGV4ZWMp
OwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwpAQCAtMTA5LDkgKzExMiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jRXhlYyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCIpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29w
ZSwgIkJ1aWx0aW4gUmVnRXhwIGV4ZWMgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpOwogICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmlu
Z09yTnVsbChleGVjKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEyMCw5ICsxMjYsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZ0V4cFByb3RvRnVuY01hdGNoRmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBKU1N0cmluZyogc3RyaW5nID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmdPck51bGwoZXhlYyk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xMzMsOSArMTQyLDEyIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgUmVnRXhwKiByZWdFeHA7CiAgICAgSlNW
YWx1ZSBhcmcwID0gZXhlYy0+YXJndW1lbnQoMCk7CkBAIC0xNDMsNyArMTU1LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgIAogICAgIGlmIChhcmcwLmlu
aGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNVbmRl
ZmluZWQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVnRXhw
IGZyb20gYW5vdGhlci4iKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3Ry
dWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiIpKTsKICAgICAgICAgcmVnRXhwID0gYXNS
ZWdFeHBPYmplY3QoYXJnMCktPnJlZ0V4cCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmlu
ZyBwYXR0ZXJuID0gIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGVtcHR5U3RyaW5nKCkgOiBhcmcw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKQEAgLTE1NiwxNSArMTY4LDE1IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICAgICAgaWYgKGZsYWdzID09IEludmFsaWRGbGFncykK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBmbGFncyBzdXBwbGllZCB0byBSZWdFeHAg
Y29uc3RydWN0b3IuIikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoZXhlYy0+dm0oKSwgcGF0dGVybiwgZmxhZ3Mp
OworICAgICAgICByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MpOwog
ICAgIH0KIAogICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgcmVnRXhwLT5lcnJvck1lc3Nh
Z2UoKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCByZWdFeHAtPmVycm9yTWVzc2FnZSgpKSk7CiAKLSAgICBhc1JlZ0V4
cE9iamVjdCh0aGlzVmFsdWUpLT5zZXRSZWdFeHAoZXhlYy0+dm0oKSwgcmVnRXhwKTsKKyAgICBh
c1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5zZXRSZWdFeHAodm0sIHJlZ0V4cCk7CiAgICAgYXNS
ZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+c2V0TGFzdEluZGV4KGV4ZWMsIDApOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIH0KQEAgLTIxMiw5ICsyMjQsMTIgQEAgc3Rh
dGljIGlubGluZSBGbGFnc1N0cmluZyBmbGFnc1N0cmluZyhFeAogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNj
b3BlKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsK
IApAQCAtMjIyLDcgKzIzNyw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG8KICAgICBpZiAoSlNWYWx1ZSBlYXJseVJldHVyblZhbHVlID0gY2hlY2tlci5lYXJseVJl
dHVyblZhbHVlKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZWFybHlSZXR1cm5W
YWx1ZSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgc291cmNlVmFs
dWUgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+c291cmNlKTsKICAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0yNDIsMTEgKzI1NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlm
ICh0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlw
ZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+Z2xvYmFs
KCkpKTsKQEAgLTI1NCwxMSArMjcxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
cmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dl
dHRlcklnbm9yZUNhc2UoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRo
aXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpKSB7CiAgICAgICAgIGlmICh0
aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5p
Z25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iikp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRl
cmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBj
YWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5p
Z25vcmVDYXNlKCkpKTsKQEAgLTI2NiwxMSArMjg2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdF
eHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOwogICAgIH0KIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5tdWx0aWxpbmUoKSkpOwpAQCAtMjc4LDExICszMDEsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKFVO
TElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSkgewogICAg
ICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuc3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgQVND
SUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT5zdGlja3koKSkpOwpAQCAtMjkwLDExICszMTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyVW5pY29kZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJ
S0VMWSghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBQcm90b3R5cGU6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJ
SUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4
cCgpLT51bmljb2RlKCkpKTsKQEAgLTMwMiw5ICszMzEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWdFeHBQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvR2V0dGVyRmxhZ3MoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtF
TFkoIXRoaXNWYWx1ZS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiKSk7CiAKICAg
ICBhdXRvIGZsYWdzID0gZmxhZ3NTdHJpbmcoZXhlYywgYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNDIxLDExICs0NTMsMTQgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyUwogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU291cmNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKFVOTElLRUxZKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkp
KSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5m
bygpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
QVNDSUlMaXRlcmFsKCIoPzopIikpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJv
dG90eXBlLnNvdXJjZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVj
dCIpKTsKICAgICB9CiAKICAgICBTdHJpbmcgcGF0dGVybiA9IGFzUmVnRXhwT2JqZWN0KHRoaXNW
YWx1ZSktPnJlZ0V4cCgpLT5wYXR0ZXJuKCk7CkBAIC01MzksNiArNTc0LDcgQEAgdm9pZCBnZW5l
cmljU3BsaXQoCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvRnVuY1Nw
bGl0RmFzdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyAxLiBbaGFu
ZGxlZCBieSBKUyBidWlsdGluXSBMZXQgcnggYmUgdGhlIHRoaXMgdmFsdWUuCiAgICAgLy8gMi4g
W2hhbmRsZWQgYnkgSlMgYnVpbHRpbl0gSWYgVHlwZShyeCkgaXMgbm90IE9iamVjdCwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgpAQCAtNjQ0LDcgKzY4MCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KICAgICAgICAgfSk7CiAgICAgCiAgICAgaWYgKHJl
c3VsdExlbmd0aCArIGRyeVJ1bkNvdW50ID49IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlamVjdC5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOCArMzMsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGlubGluZSBib29sIHJlamVjdChFeGVjU3RhdGUqIGV4ZWMsIGJvb2wgdGhy
b3dFeGNlcHRpb24sIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBtZXNzYWdlKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIG1lc3NhZ2UpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwx
MSArNTEsMTYgQEAgdm9pZCBTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIAogCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RC
ZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgIlNldCIpKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3IoZXhlYywgc2NvcGUsICJTZXQiKSk7CiB9CiAKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFNldChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRl
cm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0
dXJlKiBzZXRTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVj
dHVyZShleGVjLCBleGVjLT5uZXdUYXJnZXQoKSwgZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1cmUo
KSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzIsNyArNzcsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zCiAgICAgQ2FsbERhdGEgYWRkZXJG
dW5jdGlvbkNhbGxEYXRhOwogICAgIENhbGxUeXBlIGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGFkZGVyRnVuY3Rpb24sIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSk7CiAgICAgaWYg
KGFkZGVyRnVuY3Rpb25DYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGZvckVh
Y2hJbkl0ZXJhYmxlKGV4ZWMsIGl0ZXJhYmxlLCBbJl0oVk0mLCBFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbmV4dFZhbHVlKSB7CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRJ
dGVyYXRvclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NldEl0ZXJhdG9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsMTAgKzUwLDEzIEBAIHZvaWQgU2V0SXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBTZXRJdGVyYXRvclByb3RvdHlwZUZ1
bmNOZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHJlc3VsdDsKICAgICBKU1NldEl0ZXJhdG9yKiBpdGVyYXRvciA9IGpzRHluYW1pY0Nh
c3Q8SlNTZXRJdGVyYXRvcio+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaXRl
cmF0b3IpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2Fs
bEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIFNldEl0ZXJhdG9yLm5leHQoKSBvbiBh
IG5vbi1TZXRJdGVyYXRvciBvYmplY3QiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90
IGNhbGwgU2V0SXRlcmF0b3IubmV4dCgpIG9uIGEgbm9uLVNldEl0ZXJhdG9yIG9iamVjdCIpKSk7
CiAKICAgICBpZiAoaXRlcmF0b3ItPm5leHQoY2FsbEZyYW1lLCByZXN1bHQpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KGNhbGxGcmFt
ZSwgcmVzdWx0LCBmYWxzZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2V0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MyArODQsMTYgQEAgdm9pZCBTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bQogCiBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVO
b3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwgdGhpc1ZhbHVlKSk7CisgICAgICAgIHRocm93Vk1F
cnJvcihjYWxsRnJhbWUsIHNjb3BlLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFtZSwg
dGhpc1ZhbHVlKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU1NldCog
c2V0ID0ganNEeW5hbWljQ2FzdDxKU1NldCo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFzZXQpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVy
YXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1TZXQgb2JqZWN0IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
cmV0dXJuIHNldDsKQEAgLTE0MSwxOCArMTQ0LDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc2V0UHJvdG9GdW4KICAgICAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0
UHJvdG9GdW5jVmFsdWVzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICBKU1NldCogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQqPihjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmopCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBj
cmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3QuIikpKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZShjYWxsRnJhbWUt
PnZtKCksIGNhbGxGcmFtZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5zZXRJdGVyYXRvclN0
cnVjdHVyZSgpLCB0aGlzT2JqLCBJdGVyYXRlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjcmVhdGUgYSBTZXQgdmFsdWUgaXRlcmF0b3IgZm9yIGEgbm9uLVNldCBvYmplY3Qu
IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU2V0SXRlcmF0b3I6OmNyZWF0ZSh2
bSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnNldEl0ZXJhdG9yU3RydWN0
dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVWYWx1ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHNldFByb3RvRnVuY0VudHJpZXMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Cisg
ICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU2V0KiB0aGlzT2JqID0ganNEeW5hbWljQ2FzdDxKU1Nl
dCo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghdGhpc09iaikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIFNldCBlbnRyeSBpdGVyYXRvciBmb3IgYSBub24tU2V0IG9i
amVjdC4iKSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXRJdGVyYXRvcjo6Y3Jl
YXRlKGNhbGxGcmFtZS0+dm0oKSwgY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCkt
PnNldEl0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmosIEl0ZXJhdGVLZXlWYWx1ZSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNyZWF0ZSBhIFNldCBlbnRyeSBpdGVyYXRvciBmb3Ig
YSBub24tU2V0IG9iamVjdC4iKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTZXRJ
dGVyYXRvcjo6Y3JlYXRlKHZtLCBjYWxsRnJhbWUtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
c2V0SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgdGhpc09iaiwgSXRlcmF0ZUtleVZhbHVlKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcHJpdmF0ZUZ1bmNJc1NldChFeGVjU3RhdGUq
IGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEy
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtOTAsNiArOTAsOCBAQCBTcGFyc2VBcnJheVZhbHVlTWFwOjpBZGRS
ZXN1bHQgU3BhcnNlQXJyCiAKIGJvb2wgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6cHV0RW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAg
ICAKICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gYWRkKGFycmF5LCBpKTsKQEAgLTEwMSw3ICsxMDMs
NyBAQCBib29sIFNwYXJzZUFycmF5VmFsdWVNYXA6OnB1dEVudHJ5KEV4ZWNTCiAgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5ICYmICFhcnJheS0+aXNTdHJ1Y3R1cmVFeHRlbnNpYmxlKCkpIHsKICAg
ICAgICAgcmVtb3ZlKHJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykK
LSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3Bl
cnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKQEAgLTE0OCwxNCArMTUwLDE3IEBAIHZvaWQgU3BhcnNlQXJyYXlF
bnRyeTo6Z2V0KFByb3BlcnR5RGVzY3IKIAogYm9vbCBTcGFyc2VBcnJheUVudHJ5OjpwdXQoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgU3BhcnNlQXJyYXlWYWx1ZU1hcCogbWFw
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
aWYgKCEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSkgewogICAgICAgICBpZiAoYXR0cmlidXRlcyAm
IFJlYWRPbmx5KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0
TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHNldChleGVjLT52bSgpLCBtYXAsIHZhbHVlKTsKKyAg
ICAgICAgc2V0KHZtLCBtYXAsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC05MCw2ICs5MCw5IEBAIEpTQ2VsbCogSlNDX0hPU1RfQ0FMTCBzdHJpbmdGcm9t
Q2hhckNvZGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nRnJv
bUNvZGVQb2ludChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1bnNpZ25l
ZCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwogICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CkBAIC0xMDIsNyArMTA1
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaQogICAgICAgICB1
aW50MzJfdCBjb2RlUG9pbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29kZVBvaW50QXNEb3Vi
bGUpOwogCiAgICAgICAgIGlmIChjb2RlUG9pbnQgIT0gY29kZVBvaW50QXNEb3VibGUgfHwgY29k
ZVBvaW50ID4gVUNIQVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJndW1lbnRzIGNv
bnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyIpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlz
IG91dCBvZiByYW5nZSBvZiBjb2RlIHBvaW50cyIpKSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1Q
KGNvZGVQb2ludCkpCiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hh
cj4oY29kZVBvaW50KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC02Myw2ICs2Myw5IEBAIGJvb2wgU3RyaW5nT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3RCeUkKIAogYm9vbCBTdHJpbmdPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJv
cGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nT2JqZWN0KiB0aGlz
T2JqZWN0ID0ganNDYXN0PFN0cmluZ09iamVjdCo+KGNlbGwpOwogCiAgICAgaWYgKFVOTElLRUxZ
KGlzVGhpc1ZhbHVlQWx0ZXJlZChzbG90LCB0aGlzT2JqZWN0KSkpCkBAIC03MCw3ICs3Myw3IEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgewogICAgICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoT3B0aW9uYWw8dWludDMy
X3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKQpAQCAtODAsMTAgKzgzLDEzIEBA
IGJvb2wgU3RyaW5nT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGUKIAogYm9vbCBTdHJpbmdP
YmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIFN0cmluZ09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxTdHJpbmdPYmpl
Y3QqPihjZWxsKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpLT5jYW5HZXRJ
bmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVF
cnJvcik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICByZXR1cm4gSlNPYmplY3Q6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODksNiArMjg5LDkgQEAgc3RydWN0IFN0cmluZ1JhbmdlIHsKIAogc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YnN0cmluZ3MoRXhlY1N0YXRlKiBleGVj
LCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5n
UmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBpZiAocmFuZ2VDb3VudCA9PSAxKSB7CiAgICAgICAgIGludCBzb3VyY2VTaXplID0gc291
cmNlLmxlbmd0aCgpOwogICAgICAgICBpbnQgcG9zaXRpb24gPSBzdWJzdHJpbmdSYW5nZXNbMF0u
cG9zaXRpb247CkBAIC0zMTEsNyArMzE0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1NwbGljZVN1YgogICAgICAgICBjb25zdCBMQ2hhciogc291cmNlRGF0YSA9IHNvdXJjZS5j
aGFyYWN0ZXJzOCgpOwogICAgICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOwogICAgICAgICBpZiAoIWltcGwpCi0g
ICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICAgICAg
aW50IGJ1ZmZlclBvcyA9IDA7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3Vu
dDsgaSsrKSB7CkBAIC0zMjksNyArMzMyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc1NwbGljZVN1YgogCiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZCh0b3RhbExlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAg
IHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50IGJ1ZmZlclBvcyA9IDA7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZUNvdW50OyBpKyspIHsKQEAgLTM0NCw2ICsz
NDcsOSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAKIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMo
RXhlY1N0YXRlKiBleGVjLCBKU1N0cmluZyogc291cmNlVmFsLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgU3RyaW5nUmFuZ2UqIHN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNv
bnN0IFN0cmluZyogc2VwYXJhdG9ycywgaW50IHNlcGFyYXRvckNvdW50KQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKHJhbmdlQ291bnQgPT0gMSAmJiBzZXBhcmF0b3JDb3VudCA9PSAwKSB7CiAg
ICAgICAgIGludCBzb3VyY2VTaXplID0gc291cmNlLmxlbmd0aCgpOwogICAgICAgICBpbnQgcG9z
aXRpb24gPSBzdWJzdHJpbmdSYW5nZXNbMF0ucG9zaXRpb247CkBAIC0zNjQsNyArMzcwLDcgQEAg
c3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgICAgICAgICAgYWxs
U2VwYXJhdG9yczhCaXQgPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKHRvdGFsTGVuZ3RoLmhhc092
ZXJmbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CiAKICAg
ICBpZiAoIXRvdGFsTGVuZ3RoKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsK
QEAgLTM3NSw3ICszODEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNl
U3ViCiAKICAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZCh0b3RhbExlbmd0aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICAgICAgaWYgKCFpbXBs
KQotICAgICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAg
ICAgIGludCBtYXhDb3VudCA9IHN0ZDo6bWF4KHJhbmdlQ291bnQsIHNlcGFyYXRvckNvdW50KTsK
ICAgICAgICAgaW50IGJ1ZmZlclBvcyA9IDA7CkBAIC00MDAsNyArNDA2LDcgQEAgc3RhdGljIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc1NwbGljZVN1YgogICAgIFVDaGFyKiBidWZmZXI7CiAgICAg
YXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0b3RhbExlbmd0
aC51bnNhZmVHZXQoKSwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgaW50IG1heENvdW50ID0gc3RkOjptYXgocmFu
Z2VDb3VudCwgc2VwYXJhdG9yQ291bnQpOwogICAgIGludCBidWZmZXJQb3MgPSAwOwpAQCAtNzUy
LDEwICs3NTgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGNoZWNrT2JqZWN0Q29lcmNpYmxlKAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgaW5saW5lIEpTU3RyaW5n
KiByZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlJiBleGVjLCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
ciwgdW5zaWduZWQgcmVwZWF0Q291bnQpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIENoYXJhY3RlclR5
cGUqIGJ1ZmZlciA9IG51bGxwdHI7CiAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3Jl
YXRlVW5pbml0aWFsaXplZChyZXBlYXRDb3VudCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpIHsK
LSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZleGVjKTsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKCZleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtNzk3LDggKzgwNiwxMCBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJl
cGxhY2UoCiBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2UoCiAgICAgVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIHNlYXJjaFZhbHVl
LCBKU1ZhbHVlIHJlcGxhY2VWYWx1ZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC04NDEsNiAr
ODUyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25TdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0
ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7CiAgICAgLy8gQWxzbyB1c2VkIGZvciB2YWx1ZU9mLgogCkBAIC04NTAsMTQg
Kzg2NCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAg
aWYgKHRoaXNWYWx1ZS5pbmhlcml0cyhTdHJpbmdPYmplY3Q6OmluZm8oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmdPYmplY3QodGhpc1ZhbHVlKS0+aW50ZXJuYWxW
YWx1ZSgpKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmc6OlNhZmVWaWV3IHN0cmluZyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1l
bnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKQEAgLTg3NCw5ICs4OTEsMTIgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmc6OlNhZmVWaWV3IHN0cmluZyA9IHRoaXNW
YWx1ZS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKGEwLmlzVUludDMyKCkpIHsKQEAgLTkwMyw5ICs5MjMsMTIg
QEAgc3RhdGljIGlubGluZSBVQ2hhcjMyIGNvZGVQb2ludEF0KGNvbnN0IAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NvZGVQb2ludEF0KEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgU3RyaW5nIHN0cmluZyA9IHRoaXNWYWx1
ZS50b1dURlN0cmluZyhleGVjKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7CkBAIC05MjksMjAgKzk1MiwyNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
Q29uY2F0KEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pc1N0cmluZygp
ICYmIGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHRoaXNWYWx1ZSksIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSk7CiAKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZ0Zyb21Bcmd1bWVudHMoZXhlYywgdGhpc1ZhbHVl
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQo
MSk7CkBAIC05NzcsOSArMTAwNiwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
TGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBK
U1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBhMSA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwpAQCAtMTAxNCw5ICsxMDQ2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTIwMSw5ICsxMjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNTdWJzdHIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2Jq
ZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgdW5zaWduZWQgbGVuOwogICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IDA7CiAgICAgU3RyaW5n
IHVTdHJpbmc7CkBAIC0xMjU3LDkgKzEyOTUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBidWlsdGluU3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1N1YnN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmpl
Y3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAog
ICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xMjk3LDkgKzEzMzgsMTIgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAg
ICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpOwogICAgIGNvbnN0IFN0cmluZyYgcyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmlu
ZyBsb3dlcmNhc2VkU3RyaW5nID0gcy5jb252ZXJ0VG9Mb3dlcmNhc2VXaXRob3V0TG9jYWxlKCk7
CkBAIC0xMzEwLDkgKzEzNTQsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1Rv
VXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJj
aWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3Ry
aW5nKiBzVmFsID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFN0cmluZyYg
cyA9IHNWYWwtPnZhbHVlKGV4ZWMpOwogICAgIFN0cmluZyB1cHBlcmNhc2VkU3RyaW5nID0gcy5j
b252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7CkBAIC0xMzIzLDkgKzEzNzAsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBl
eGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTEzNDAsMTAg
KzEzOTAsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogI2lm
IEVOQUJMRShJTlRMKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShFeGVjU3Rh
dGUqIHN0YXRlLCBpbnQzMl90ICgqY29udmVydENhc2UpKFVDaGFyKiwgaW50MzJfdCwgY29uc3Qg
VUNoYXIqLCBpbnQzMl90LCBjb25zdCBjaGFyKiwgVUVycm9yQ29kZSopKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIC8vIDEuIExldCBPIGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1
ZSkuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCBzY29wZSk7CiAKICAgICAvLyAyLiBMZXQgUyBiZSBUb1N0cmluZyhPKS4KICAgICBKU1N0cmlu
Zyogc1ZhbCA9IHRoaXNWYWx1ZS50b1N0cmluZyhzdGF0ZSk7CkBAIC0xNDExLDEwICsxNDY0LDEw
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoRXhlY1MKICAgICAgICAgVmVj
dG9yPFVDaGFyPiBidWZmZXIocmVzdWx0TGVuZ3RoKTsKICAgICAgICAgY29udmVydENhc2UoYnVm
ZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2
aWV3TGVuZ3RoLCB1dGY4TG9jYWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKICAgICAgICAgaWYg
KFVfRkFJTFVSRShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCBzY29wZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKICAgICAgICAgbG93ZXIg
PSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHVfZXJyb3JOYW1lKGVycm9yKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgdV9lcnJvck5hbWUo
ZXJyb3IpKTsKIAogICAgIC8vIDE4LiBSZXR1cm4gTC4KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHN0YXRlLCBsb3dlcikpOwpAQCAtMTQzOCw5ICsxNDkxLDEyIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNCaWcoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBp
ZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NDksOSArMTUwNSwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU21hbGwoRXhlY1N0YXRlKiBleGVjKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NjAsOSArMTUxOSwxMiBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQmxpbmsoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE0NzEsOSArMTUzMywxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQm9sZChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgp
OwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ4Miw5ICsxNTQ3LDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGaXhlZChFeGVjU3RhdGUqIGV4ZWMp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTQ5Myw5ICsxNTYx
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGFsaWNzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhp
c1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTA0LDkg
KzE1NzUsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0cmlrZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTUx
NSw5ICsxNTg5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWIoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVj
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1
MjYsOSArMTYwMywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3VwKEV4ZWNT
dGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NTM3LDkgKzE2MTcsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xv
cihFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcgcyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtMTU1Myw5ICsxNjM2LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNG
b250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2li
bGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcg
cyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMTYwNSw5ICsxNjkxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgc3RyaW5nUHJvdG8KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgU3Ry
aW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKQEAgLTE2MjEsOSArMTcxMCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RD
b2VyY2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTY2Nyw4ICsxNzU5LDExIEBAIGVudW0gewogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUgdHJpbVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBpbnQgdHJpbUtpbmQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29l
cmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICBTdHJpbmcg
c3RyID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMTcy
MCwyMSArMTgxNSwyMyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wQW5kVHJ1bmNhdGVU
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRzV2l0
aChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUodGhp
c1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIFN0cmluZyBzdHJp
bmdUb1NlYXJjaEluID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7
Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBib29sIGlzUmVndWxhckV4cHJlc3Npb24g
PSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIGlmIChpc1JlZ3VsYXJF
eHByZXNzaW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIGNhbm5vdCBiZSBhIFJlZ0V4cCIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgIkFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAg
IFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTc1NiwyMSArMTg1MywyMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBzY29wZSk7CiAKICAgICBTdHJpbmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAg
ICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEw
KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUu
ZW5kc1dpdGggY2Fubm90IGJlIGEgUmVnRXhwIik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAogICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQpAQCAtMTgwOCwyMSArMTkwNywyMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
SW5jbHVkZXMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNp
YmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAKICAgICBTdHJp
bmcgc3RyaW5nVG9TZWFyY2hJbiA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBpc1JlZ3VsYXJFeHBy
ZXNzaW9uID0gaXNSZWdFeHAodm0sIGV4ZWMsIGEwKTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKICAgICBpZiAoaXNS
ZWd1bGFyRXhwcmVzc2lvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2Fubm90IGJlIGEgUmVnRXhw
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW5ub3QgYmUgYSBSZWdFeHAiKTsKIAog
ICAgIFN0cmluZyBzZWFyY2hTdHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTg1NSw0MiArMTk1Niw1MSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJ1aWx0aW5TdHJpCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUo
KTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBzY29wZSk7CiAgICAgSlNTdHJpbmcqIHN0cmluZyA9IHRoaXNWYWx1ZS50b1N0
cmluZyhleGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTU3RyaW5nSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ0l0ZXJh
dG9yU3RydWN0dXJlKCksIHN0cmluZykpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBub3JtYWxpemUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBVQ2hhciogc291cmNlLCBzaXplX3Qgc291cmNlTGVuZ3Ro
LCBVTm9ybWFsaXphdGlvbk1vZGUgZm9ybSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGludDMyX3Qgbm9ybWFsaXplZFN0cmluZ0xl
bmd0aCA9IHVub3JtX25vcm1hbGl6ZShzb3VyY2UsIHNvdXJjZUxlbmd0aCwgZm9ybSwgMCwgbnVs
bHB0ciwgMCwgJnN0YXR1cyk7CiAKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykgJiYgc3RhdHVz
ICE9IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CiAgICAgICAgIC8vIFRoZSBiZWhhdmlvciBp
cyBub3Qgc3BlY2lmaWVkIHdoZW4gbm9ybWFsaXplIGZhaWxzLgogICAgICAgICAvLyBOb3cgd2Ug
dGhyb3cgYSB0eXBlIGVyb3JyIHNpbmNlIGl0IHNlZW1zIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBzdHJpbmcgYXJlIGludmFsaWQuCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICB9CiAK
ICAgICBVQ2hhciogYnVmZmVyID0gbnVsbHB0cjsKICAgICBhdXRvIGltcGwgPSBTdHJpbmdJbXBs
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKG5vcm1hbGl6ZWRTdHJpbmdMZW5ndGgsIGJ1ZmZlcik7
CiAgICAgaWYgKCFpbXBsKQotICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4
ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKTsK
IAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICB1bm9ybV9ub3JtYWxpemUoc291cmNl
LCBzb3VyY2VMZW5ndGgsIGZvcm0sIDAsIGJ1ZmZlciwgbm9ybWFsaXplZFN0cmluZ0xlbmd0aCwg
JnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSk7CiAKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgV1RGTW92ZShpbXBsKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTm9ybWFsaXplKEV4
ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTU3RyaW5nOjpTYWZlVmll
dyBzb3VyY2UgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtMTkxMSw3ICsyMDIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICBlbHNlIGlmIChmb3JtU3RyaW5nID09ICJORktE
IikKICAgICAgICAgICAgIGZvcm0gPSBVTk9STV9ORktEOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9ybWFsaXphdGlvbiBmb3Jt
IikpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBh
bnkgbm9ybWFsaXphdGlvbiBmb3JtIikpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKG5vcm1hbGl6ZShleGVjLCBzb3VyY2UuZ2V0KCkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCksIHNvdXJjZS5sZW5ndGgoKSwgZm9ybSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAJKHJldmlz
aW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAxMS0yMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDcgKzI4LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIEpTVmFsdWUgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlcjo6dGhyb3dTdGFja092ZXJm
bG93RXJyb3IoKQogewotICAgIHJldHVybiBKU0M6OnRocm93U3RhY2tPdmVyZmxvd0Vycm9yKG1f
ZXhlYyk7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSlNDOjp0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihtX2V4ZWMsIHNjb3BlKTsKIH0KIAogSlNWYWx1ZSBTdHJpbmdSZWN1cnNpb25DaGVja2Vy
OjplbXB0eVN0cmluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bC5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtODcsNyArODcsOSBAQCBKU09iamVjdCogU3ltYm9sOjp0
b09iamVjdChFeGVjU3RhdGUqIGV4CiAKIGRvdWJsZSBTeW1ib2w6OnRvTnVtYmVyKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgbnVtYmVyIikpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjb252ZXJ0
IGEgc3ltYm9sIHRvIGEgbnVtYmVyIikpOwogICAgIHJldHVybiAwLjA7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENvbnN0cnVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTEwLDE2ICsxMTAsMTkgQEAgY29uc3QgY2hhciog
U3ltYm9sS2V5Rm9yVHlwZUVycm9yID0gIlN5bQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN5bWJvbENvbnN0cnVjdG9yS2V5Rm9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIEpTVmFsdWUgc3ltYm9sVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXN5bWJvbFZhbHVlLmlzU3ltYm9sKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgU3ltYm9sS2V5Rm9yVHlwZUVycm9yKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN5bWJv
bEtleUZvclR5cGVFcnJvcikpOwogCiAgICAgU3ltYm9sSW1wbCogdWlkID0gYXNTeW1ib2woc3lt
Ym9sVmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpOwogICAgIGlmICghdWlkLT5zeW1ib2xSZWdp
c3RyeSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
Ci0gICAgQVNTRVJUKHVpZC0+c3ltYm9sUmVnaXN0cnkoKSA9PSAmZXhlYy0+dm0oKS5zeW1ib2xS
ZWdpc3RyeSgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGV4
ZWMtPnZtKCkuc3ltYm9sUmVnaXN0cnkoKS5rZXlGb3JTeW1ib2woKnVpZCkpKTsKKyAgICBBU1NF
UlQodWlkLT5zeW1ib2xSZWdpc3RyeSgpID09ICZ2bS5zeW1ib2xSZWdpc3RyeSgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHZtLnN5bWJvbFJlZ2lzdHJ5KCku
a2V5Rm9yU3ltYm9sKCp1aWQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQ
cm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC03MiwxNiArNzIsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIqIFN5
bWJvbFZhbHVlT2ZUeXBlRXJybwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJv
bFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgU3ltYm9sKiBzeW1i
b2wgPSBudWxscHRyOwogICAgIGlmICh0aGlzVmFsdWUuaXNTeW1ib2woKSkKICAgICAgICAgc3lt
Ym9sID0gYXNTeW1ib2wodGhpc1ZhbHVlKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIFN5bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7CiAgICAgICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKICAgICAgICAgaWYg
KCF0aGlzT2JqZWN0LT5pbmhlcml0cyhTeW1ib2xPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9s
VG9TdHJpbmdUeXBlRXJyb3IpOwogICAgICAgICBzeW1ib2wgPSBhc1N5bWJvbChqc0Nhc3Q8U3lt
Ym9sT2JqZWN0Kj4odGhpc09iamVjdCktPmludGVybmFsVmFsdWUoKSk7CiAgICAgfQogCkBAIC05
MCwxNiArOTMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAodGhpc1ZhbHVlLmlzU3ltYm9sKCkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIFN5bWJv
bFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pbmhlcml0
cyhTeW1ib2xPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIFN5bWJvbFZhbHVlT2ZUeXBlRXJyb3IpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQ2FzdDxTeW1ib2xPYmplY3QqPih0aGlzT2JqZWN0KS0+aW50
ZXJuYWxWYWx1ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Ro
cm93U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Rocm93U2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRocm93U2NvcGUuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCisjaWYg
RU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKworbmFtZXNwYWNlIHsKKworLy8gTG9n
cyBhbGwgVGhyb3dTY29wZSBhY3Rpdml0eSB0byBoZWxwIGRlYnVnIHRoZSBzb3VyY2Ugb2YgYSB2
ZXJpZmljYXRpb24gZmFpbHVyZS4KK2Jvb2wgdHJhY2VPbiA9IGZhbHNlOworCisvLyBBIG1vcmUg
dmVyYm9zZSBsb2dnaW5nIG9wdGlvbiB0byBkdW1wIHRoZSBDKysgc3RhY2sgdHJhY2UgYXQgc3Ry
YXRlZ2ljIHBvaW50cyB0byBhaWQgZGVidWdnaW5nLgorYm9vbCB0cmFjZVdpdGhTdGFja1RyYWNl
cyA9IGZhbHNlOworCisvLyBEaXNhYmxlZCB0ZW1wb3JhcmlseSB1bnRpbCBhbGwga25vd24gdmVy
aWZpY2F0aW9uIGZhaWx1cmVzIGFyZSBmaXhlZC4KK2Jvb2wgdmVyaWZpY2F0aW9uT24gPSBmYWxz
ZTsKKwordW5zaWduZWQgdHJhY2VDb3VudCA9IDA7Cit9OworCisvKgorICAgIFRocm93U2NvcGUg
dmVyaWZpY2F0aW9uIHdvcmtzIHRvIHNpbXVsYXRlIGV4Y2VwdGlvbiB0aHJvd3MgYW5kIGNhdGNo
IGNhc2VzIHdoZXJlCisgICAgZXhjZXB0aW9uIGNoZWNrcyBhcmUgbWlzc2luZy4gVGhpcyBpcyBo
b3cgaXQgd29ya3M6CisKKyAxLiBUaGUgVk0gaGFzIGEgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0
IHRoYXQgaW5kaWNhdGVzIHdoZXJlIGFuIGV4Y2VwdGlvbiBjaGVjayBpcworICAgIG5lZWRlZC4g
WW91IGNhbiB0aGluayBvZiB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0IGJlaW5nIHNldCBh
cyBhIHNpbXVsYXRlZAorICAgIHRocm93LgorCisgMi4gRXZlcnkgdGhyb3cgc2l0ZSBtdXN0IGRl
Y2xhcmUgYSBUaHJvd1Njb3BlIGluc3RhbmNlIHVzaW5nIERFQ0xBUkVfVEhST1dfU0NPUEUgYXQK
KyAgICB0aGUgdG9wIG9mIGl0cyBmdW5jdGlvbiAoYXMgZWFybHkgYXMgcG9zc2libGUpIGUuZy4K
KyAKKyAgICAgICAgdm9pZCBmb28oLi4uKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihleGVjLCBzY29wZSwgLi4uKTsKKyAgICAgICAgfQorCisgICAgTm90ZTogVk06OnRocm93RXhj
ZXB0aW9uKCkgbWV0aG9kcyBhcmUgcHJpdmF0ZSwgYW5kIG9ubHkgY2FsbGVhYmxlYnkgdGhlIFRo
cm93U2NvcGUKKyAgICBmcmllbmQgY2xhc3MuIEFsbCB0aHJvd3MgbXVzdCBnbyB0aHJvdWdoIGEg
VGhyb3dTY29wZS4gSGVuY2UsIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQKKyAgICBhbnkgZnVuY3Rp
b24gdGhhdCBjYW4gdGhyb3cgd2lsbCBoYXZlIGEgVGhyb3dTY29wZS4KKworICAgIE5vdGU6IGJ5
IGNvbnZlbnRpb24sIGV2ZXJ5IHRocm93IGhlbHBlciBmdW5jdGlvbiBtdXN0IHRha2UgYSBUaHJv
d1Njb3BlIGFyZ3VtZW50CisgICAgaW5zdGVhZCBvZiBpbnN0YW50aWF0aW5nIGl0cyBvd24gVGhy
b3dTY29wZS4gIFRoaXMgYWxsb3dzIHRoZSB0aHJvdyB0byBiZSBhdHRyaWJ1dGVkCisgICAgdG8g
dGhlIGNsaWVudCBjb2RlIHJhdGhlciB0aGFuIHRoZSB0aHJvdyBoZWxwZXIgaXRzZWxmLgorCisg
My4gVmVyaWZpY2F0aW9uIG9mIG5lZWRlZCBleGNlcHRpb24gY2hlY2tzCisKKyAgICBhLiBPbiBj
b25zdHJ1Y3Rpb24sIGVhY2ggVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25lZWRF
eGNlcHRpb25DaGVjayBpcworICAgICAgIG5vdCBzZXQuCisgCisgICAgICAgVGhpcyBlbnN1cmVz
IHRoYXQgdGhlIGNhbGxlciBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBoYXMgY2hlY2tlZCBmb3Ig
ZXhjZXB0aW9ucworICAgICAgIHdoZXJlIG5lZWRlZCBiZWZvcmUgZG9pbmcgbW9yZSB3b3JrIHdo
aWNoIGxlZCB0byBjYWxsaW5nIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgorCisgICAgYi4gT24gZGVz
dHJ1Y3Rpb24sIGVhY2ggVGhyb3dTY29wZSB3aWxsIHZlcmlmeSB0aGF0IFZNOjptX25lZWRFeGNl
cHRpb25DaGVjayBpcworICAgICAgIG5vdCBzZXQuIFRoaXMgdmVyaWZpY2F0aW9uIHdpbGwgYmUg
c2tpcHBlZCBpZiB0aGUgVGhyb3dTY29wZSBoYXMgYmVlbiByZWxlYXNlZAorICAgICAgIChzZWUg
KDUpIGJlbG93KS4KKworICAgICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBmdW5jdGlvbiB0aGF0
IG93bnMgdGhpcyBUaHJvd1Njb3BlIGlzIG5vdCBtaXNzaW5nIGFueQorICAgICAgIGV4Y2VwdGlv
biBjaGVja3MgYmVmb3JlIHJldHVybmluZy4KKyAKKyAgICBjLiBXaGVuIHRocm93aW5nIGFuIGV4
Y2VwdGlvbiwgdGhlIFRocm93U2NvcGUgd2lsbCB2ZXJpZnkgdGhhdCBWTTo6bV9uZWVkRXhjZXB0
aW9uQ2hlY2sKKyAgICAgICBpcyBub3Qgc2V0LCB1bmxlc3MgaXQncyBiZWVuIGFzayB0byByZXRo
cm93IHRoZSBzYW1lIEV4Y2VwdGlvbiBvYmplY3QuCisKKyA0LiBTaW11bGF0ZWQgdGhyb3dzCisK
KyAgICBUaHJvd3MgYXJlIHNpbXVsYXRlZCBieSBzZXR0aW5nIHRoZSBtX25lZWRFeGNlcHRpb25D
aGVjayBiaXQuCisKKyAgICBUaGUgYml0IHdpbGwgb25seSBiZSBzZXQgaW4gdGhlIFRocm93U2Nv
cGUgZGVzdHJ1Y3RvciBleGNlcHQgd2hlbiB0aGUgVGhyb3dTY29wZQorICAgIGRldGVjdHMgdGhl
IGNhbGxlciBpcyBhIExMSW50IG9yIEpJVCBmdW5jdGlvbi4gTExJbnQgb3IgSklUIGZ1bmN0aW9u
cyB3aWxsIGFsd2F5cworICAgIGNoZWNrIGZvciBleGNlcHRpb25zIGFmdGVyIGEgaG9zdCBDKysg
ZnVuY3Rpb24gcmV0dXJucyB0byBpdC4gSG93ZXZlciwgdGhleSB3aWxsCisgICAgbm90IGNsZWFy
IHRoZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQuCisKKyAgICBIZW5jZSwgaWYgdGhlIFRocm93
U2NvcGUgZGVzdHJ1Y3RvciBkZXRlY3RzIHRoZSBjYWxsZXIgaXMgYSBMTEludCBvciBKSVQgZnVu
Y3Rpb24sCisgICAgaXQgd2lsbCBqdXN0IHNraXAgdGhlIHNldHRpbmcgb2YgdGhlIGJpdC4KKwor
ICAgIE5vdGU6IHRoZXJlIGlzIG5vIG5lZWQsIGFuZCBpdCBpcyBpbmNvcnJlY3QgdG8gc2V0IHRo
ZSBtX25lZWRFeGNlcHRpb25DaGVjayBiaXQKKyAgICBpbiB0aGUgdGhyb3dFeGNlcHRpb24gbWV0
aG9kcy4gVGhpcyBpcyBiZWNhdXNlLCBpbiBwcmFjdGljZSwgd2UgYWx3YXlzIHJldHVybgorICAg
IGltbWVkaWF0ZWx5IGFmdGVyIHRocm93aW5nIGFuIGV4Y2VwdGlvbi4gSXQgZG9lc24ndCBtYWtl
IHNlbnNlIHRvIHNldCB0aGUgYml0IGluCisgICAgdGhlIHRocm93IGp1c3QgdG8gaGF2ZSB0byBj
bGVhciBpdCBpbW1lZGlhdGVseSBhZnRlciBiZWZvcmUgd2UgZG8gdmVyaWZpY2F0aW9uIGluCisg
ICAgdGhlIFRocm93U2NvcGUgZGVzdHJ1Y3Rvci4KKworIDUuIFVzaW5nIFRocm93U2NvcGU6OnJl
bGVhc2UoKQorCisgICAgVGhyb3dTY29wZTo6cmVsZWFzZSgpIHNob3VsZCBvbmx5IGJlIHVzZWQg
YXQgdGhlIGJvdHRvbSBvZiBhIGZ1bmN0aW9uIGlmOgorIAorICAgIGEuIFRoaXMgZnVuY3Rpb24g
aXMgZ29pbmcgdG8gbGV0IGl0cyBjYWxsZXIgY2hlY2sgYW5kIGhhbmRsZSB0aGUgZXhjZXB0aW9u
LgorIAorICAgICAgICB2b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gZ29vKCk7IC8vIG1heSB0aHJvdy4KKworICAgICAgICAgICAgLi4uIC8vIENsZWFudXAgY29k
ZSB0aGF0IHdpbGwgYXJlIG5vdCBhZmZlY3RlZCBieSBhIHBlbmRpbmcgZXhjZXB0aW9ucy4KKwor
ICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOyAvLyB0ZWxsIHRoZSBUaHJvd1Njb3BlIHRoYXQg
dGhlIGNhbGxlciB3aWxsIGhhbmRsZSB0aGUgZXhjZXB0aW9uLgorICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorIAorICAgIGIuIFRoaXMgZnVuY3Rpb24gaXMgZ29pbmcgdG8g
ZG8gYSB0YWlsIGNhbGwgdGhhdCBtYXkgdGhyb3cuCisKKyAgICAgICAgdm9pZCBmb28oLi4uKQor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsgLy8gdGVs
bCB0aGUgVGhyb3dTY29wZSB0aGF0IHRoZSBjYWxsZXIgd2lsbCBoYW5kbGUgdGhlIGV4Y2VwdGlv
bi4KKyAgICAgICAgICAgIHJldHVybiBnb28oKTsgLy8gbWF5IHRocm93LgorICAgICAgICB9Cisg
CisgICAgVGhyb3dTY29wZTo6cmVsZWFzZSgpIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUgY29k
ZSBwYXRocyB0aGF0IGJyYW5jaC4gRm9yIGV4YW1wbGU6CisgCisgICAgICAgIHZvaWQgZm9vKC4u
LikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGdvbzEoKTsgLy8gbWF5IHRocm93
LgorICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOyAvLyA8PT09PT09PT09PT09PT09PT09PSB0
aGUgV1JPTkcgd2F5ICEhIQorICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgCisgICAgICAgICAgICByZXN1bHQgPSBnb28yKCk7IC8vIG1heSB0aHJvdy4K
KyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQor
IAorICAgIFRoZSBhYm92ZSB3aWxsIHJlc3VsdCBpbiBhIHZlcmlmaWNhdGlvbiBmYWlsdXJlIGlu
IGdvbzIoKSdzIFRocm93U2NvcGUuICBUaGUgcHJvcGVyIHdheQorICAgIHRvIGZpeCB0aGlzIHZl
cmlmaWNhdGlvbiBpcyB0byBkbyB3aXRoZXIgKDYpIG9yICg3KSBiZWxvdy4KKyAKKyAgNi4gQ2hl
Y2tpbmcgZXhjZXB0aW9ucyB3aXRoIFRocm93U2NvcGU6OmV4Y2VwdGlvbigpCisgCisgICAgIFRo
cm93U2NvcGU6OmV4Y2VwdGlvbigpIHJldHVybnMgdGhlIHRocm93biBFeGNlcHRpb24gb2JqZWN0
IGlmIHRoZXJlIGlzIG9uZSBwZW5kaW5nLgorICAgICBFbHNlIGl0IHJldHVybnMgbnVsbHB0ci4K
KyAKKyAgICAgSXQgYWxzbyBjbGVhcnMgdGhlIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGJpdCB0aGVy
ZWJ5IGluZGljYXRpbmcgdGhhdCB3ZSd2ZSBzYXRpc2lmZWQKKyAgICAgdGhlIG5lZWRlZCBleGNl
cHRpb24gY2hlY2suCisgCisgICAgIFRoaXMgaXMgaG93IHdlIGRvIGl0OgorIAorICAgICAgICB2
b2lkIGZvbyguLi4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBnb28xKCk7IC8v
IG1heSB0aHJvdy4KKyAgICAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5IHRo
cm93LgorICAgICAgICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICB9CisgCisgICAgQnV0IHNvbWV0aW1lcywgZm9yIG9wdGltaXphdGlvbiByZWFzb25zLCB3ZSBt
YXkgY2hvb3NlIHRvIHRlc3QgdGhlIHJlc3VsdCBvZiB0aGUgY2FsbGVlCisgICAgZnVuY3Rpb24g
aW5zdGVhZCBkb2luZyBhIGxvYWQgb2YgdGhlIFZNIGV4Y2VwdGlvbiB2YWx1ZS4gU2VlICg3KSBi
ZWxvdy4KKyAKKyA3LiBDaGVja2luZyBleGNlcHRpb24gYnkgY2hlY2tpbmcgY2FsbGVlIHJlc3Vs
dAorIAorICAgIFRoaXMgYXBwcm9hY2ggc2hvdWxkIG9ubHkgYmUgYXBwbGllZCB3aGVuIGl0IG1h
a2VzIGEgZGlmZmVyZW5jZSB0byBwZXJmb3JtYW5jZS4KKyAgICBJZiB3ZSBuZWVkIHRvIGRvIHRo
aXMsIHdlIHNob3VsZCBhZGQgYW4gQVNTRVJUKCkgdGhhdCBpbnZva2VzIFRocm93U2NvcGU6OmV4
Y2VwdGlvbigpCisgICAgYW5kIHZlcmlmeSB0aGUgcmVzdWx0LiBTaW5jZSBUaHJvd1Njb3BlIHZl
cmlmaWNhdGlvbiBpcyBvbmx5IGRvbmUgb24gREVCVUcgYnVpbGRzLAorICAgIHRoaXMgQVNTRVJU
IHdpbGwgc2F0aXNmeSB0aGUgdmVyaWZpY2F0aW9uIHJlcXVpcmVtZW50cyB3aGlsZSBub3QgaW1w
YWN0aW5nIHBlcmZvcm1hbmNlLgorIAorICAgIFRoaXMgaXMgaG93IHdlIGRvIGl0OgorCisgICAg
ICAgIHZvaWQgZm9vKC4uLikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgICAgICAgICBib29sIGZhaWxlZCA9IGdvbzEo
KTsgLy8gbWF5IHRocm93LgorICAgICAgICAgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkg
PT0gZmFpbGVkKQorICAgICAgICAgICAgaWYgKGZhaWxlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIHJlc3VsdCA9IGdvbzIoKTsgLy8gbWF5IHRocm93LgorICAgICAg
ICAgICAgLi4uCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgCisgOC4g
RGVidWdnaW5nIHZlcmlmaWNhdGlvbiBmYWlsdXJlcy4KKworICAgIGEuIFdoZW4gdmVyaWZpY2F0
aW9uIGZhaWxzLCB5b3Ugd2lsbCBzZWUgYSBoZWxwZnVsIG1lc3NhZ2UgZm9sbG93ZWQgYnkgYW4g
YXNzZXJ0aW9uIGZhaWx1cmUuCisgICAgICAgRm9yIGV4YW1wbGU6CisgCisgICAgRkFJTEVEIGV4
Y2VwdGlvbiBjaGVjayB2ZXJpZmljYXRpb246CisgICAgICAgIEV4Y2VwdGlvbiB0aHJvd24gZnJv
bSBUaHJvd1Njb3BlIFsyXSBFeGl0OiBzZXRVcENhbGwgQCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVu
U291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHA6MTI0
NQorICAgICAgICBpcyB1bmNoZWNrZWQgaW4gVGhyb3dTY29wZSBbMV06IHZhcmFyZ3NTZXR1cCBA
IC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoxMzk4CisKKyAgICAgICBUaGUgbWVzc2FnZSB0ZWxscyB5b3Ug
dGhhdCBmYWlsdXJlIHdhcyBkZXRlY3RlZCBhdCBpbiB2YXJhcmdzU2V0dXAoKSBAIExMSW50U2xv
d1BhdGhzLmNwcAorICAgICAgIGxpbmUgMTM5OCwgYW5kIHRoYXQgdGhlIG1pc3NpbmcgZXhjZXB0
aW9uIGNoZWNrIHNob3VsZCBoYXZlIGhhcHBlbmVkIHNvbWV3aGVyZSBiZXR3ZWVuCisgICAgICAg
dGhlIGNhbGwgdG8gc2V0VXBDYWxsKCkgQCBMTEludFNsb3dQYXRocy5jcHAgbGluZSAxMjQ1IGFu
ZCBpdC4KKworICAgICAgIElmIHRoYXQgaXMgaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLCB5b3Ug
Y2FuIC4uLgorCisgICAgYi4gVHVybiBvbiBUaHJvd1Njb3BlIHRyYWNpbmcKKyAKKyAgICAgICBK
dXN0IHNldCB0cmFjZU9uPXRydWUgYXQgdGhlIHRvcCBvZiBUaHJvd1Njb3BlLmNwcCwgYW5kIHJl
YnVpbGQuIFRoZXJlYWZ0ZXIsIHlvdSBzaG91bGQKKyAgICAgICBzZWUgYSB0cmFjZSBvZiBUaHJv
d1Njb3BlcyBiZWluZyBlbnRlcmVkIGFuZCBleGl0ZWQgYXMgd2VsbCBhcyB0aGVpciBkZXB0aCBl
LmcuCisKKyAgICBUaHJvd1Njb3BlIFsxXSBFbnRlcjogbGxpbnRfc2xvd19wYXRoX2pmYWxzZSBA
IC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2UvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoxMDMyCisgICAgVGhyb3dTY29wZSBbMV0gRXhpdDogbGxpbnRf
c2xvd19wYXRoX2pmYWxzZSBAIC9Wb2x1bWVzL0RhdGEvd3M2L09wZW5Tb3VyY2UvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoxMDMyCisKKyAgICAgICBZb3Ug
d2lsbCBhbHNvIHNlZSB0cmFjZXMgb2Ygc2ltdWxhdGVkIHRocm93cyBlLmcuCisKKyAgICBUaHJv
d1Njb3BlIFsyXSBUaHJvdyBmcm9tOiBzZXRVcENhbGwgQCAvVm9sdW1lcy9EYXRhL3dzNi9PcGVu
U291cmNlL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHA6MTI0
NQorCisgICAgICAgSWYgdGhhdCBpcyBpbnN1ZmZpY2llbnQgaW5mb3JtYXRpb24sIHlvdSBjYW4g
Li4uCisKKyAgICBjLiBUdXJuIG9uIFRocm93U2NvcGUgc3RhY2sgZHVtcHMKKworICAgICAgIEp1
c3Qgc2V0IHRyYWNlV2l0aFN0YWNrVHJhY2VzPXRydWUgYXQgdGhlIHRvcCBvZiBUaHJvd1Njb3Bl
LmNwcCwgYW5kIHJlYnVpbGQuCisgICAgICAgVGhlcmVhZnRlciwgeW91IHNob3VsZCBzZWUgYSBz
dGFjayB0cmFjZXMgYXQgdmFyaW91cyByZWxldmFudCBUaHJvd1Njb3BlIGV2ZW50cy4KKworICAg
IGQuIFVzaW5nIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKCkKKworICAgICAgIElmIHlvdSBo
YXZlIGlzb2xhdGVkIHRoZSBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVjayB0byBhIGZ1bmN0aW9uIHRo
YXQgaXMgbGFyZ2UgYnV0CisgICAgICAgaXMgdW5zdXJlIHdoaWNoIHN0YXRlbWVudCBjYW4gdGhy
b3cgYW5kIGlzIG1pc3NpbmcgdGhlIGNoZWNrLCB5b3UgY2FuIHNwcmlua2xlCisgICAgICAgdGhl
IGZ1bmN0aW9uIHdpdGggY2FsbHMgdG8gdGhyb3dTY29wZVByaW50SWZOZWVkQ2hlY2soKS4KKwor
ICAgICAgIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKCkgd2lsbCBsb2cgYSBsaW5lICJOZWVk
IGV4Y2VwdGlvbiBjaGVjayBhdCAuLi4iIHRoYXQKKyAgICAgICBpbmxjdWRlcyB0aGUgZmlsZSBh
bmQgbGluZSBudW1iZXIgb25seSB3aGVuIGl0IHNlZSB0aGUgbV9uZWVkRXhjZXB0aW9uQ2hlY2sg
c2V0LgorICAgICAgIFRoaXMgd2lsbCB0ZWxsIHlvdSB3aGljaCBzdGF0ZW1lbnQgc2ltdWxhdGVk
IHRoZSB0aHJvdyB0aGF0IGlzIG5vdCBiZWluZyBjaGVja2VkCisgICAgICAgaS5lLiB0aGUgb25l
IHRoYXQgcHJlY2VkZWQgdGhlIHRocm93U2NvcGVQcmludElmTmVlZENoZWNrKCkgdGhhdCBwcmlu
dGVkIGEgbGluZS4KKyovCisKK1Rocm93U2NvcGU6OlRocm93U2NvcGUoVk0mIHZtLCBUaHJvd1Nj
b3BlTG9jYXRpb24gbG9jYXRpb24pCisgICAgOiBtX3ZtKHZtKQorICAgICwgbV9wcmV2aW91c1Nj
b3BlKHZtLm1fdG9wVGhyb3dTY29wZSkKKyAgICAsIG1fbG9jYXRpb24obG9jYXRpb24pCisgICAg
LCBtX2RlcHRoKG1fcHJldmlvdXNTY29wZSA/IG1fcHJldmlvdXNTY29wZS0+bV9kZXB0aCArIDEg
OiAwKQoreworICAgIG1fdm0ubV90b3BUaHJvd1Njb3BlID0gdGhpczsKKworICAgIGlmICh0cmFj
ZU9uKSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUg
WyIsIG1fZGVwdGgsICJdIEVudGVyOiAiLCBsb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAiLCBs
b2NhdGlvbi5maWxlLCAiOiIsIGxvY2F0aW9uLmxpbmUpOworICAgICAgICBpZiAobV92bS5tX25l
ZWRFeGNlcHRpb25DaGVjaykKKyAgICAgICAgICAgIGRhdGFMb2coIiwgbmVlZHMgY2hlY2siKTsK
KyAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAgICBpZiAodHJhY2VXaXRoU3RhY2tUcmFj
ZXMpCisgICAgICAgICAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKyAgICB9CisKKyAgICB2ZXJp
ZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlOjpTY29wZUVudHJ5KTsKK30KKwor
VGhyb3dTY29wZTo6flRocm93U2NvcGUoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fdm0ubV90
b3BUaHJvd1Njb3BlKTsKKworICAgIGlmICghbV9pc1JlbGVhc2VkKQorICAgICAgICB2ZXJpZnlF
eGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChTaXRlOjpTY29wZUV4aXQpOworICAgIGVsc2Ug
eworICAgICAgICAvLyBJZiB3ZSByZWxlYXNlZCB0aGUgc2NvcGUsIHRoYXQgbWVhbnMgd2UncmUg
bGV0dGluZyBvdXIgY2FsbGVycyBkbyB0aGUKKyAgICAgICAgLy8gZXhjZXB0aW9uIGNoZWNrLiBI
b3dldmVyLCBiZWNhdXNlIG91ciBjYWxsZXIgbWF5IGJlIGEgTExJbnQgb3IgSklUCisgICAgICAg
IC8vIGZ1bmN0aW9uICh3aGljaCBhbHdheXMgY2hlY2tzIGZvciBleGNlcHRpb25zIGJ1dCB3b24n
dCBjbGVhciB0aGUKKyAgICAgICAgLy8gbV9uZWVkRXhjZXB0aW9uQ2hlY2sgYml0KSwgd2Ugc2hv
dWxkIGNsZWFyIG1fbmVlZEV4Y2VwdGlvbkNoZWNrIGhlcmUKKyAgICAgICAgLy8gYW5kIGxldCBj
b2RlIGJlbG93IGRlY2lkZSBpZiB3ZSBuZWVkIHRvIHNpbXVsYXRlIGEgcmUtdGhyb3cuCisgICAg
ICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICB9CisKKyAgICBib29s
IHdpbGxCZUhhbmRsZUJ5TExJbnRPckpJVCA9IGZhbHNlOworICAgIHZvaWQqIHByZXZpb3VzU2Nv
cGUgPSBtX3ByZXZpb3VzU2NvcGU7CisgICAgdm9pZCogdG9wQ2FsbEZyYW1lID0gbV92bS50b3BD
YWxsRnJhbWU7CisgICAgCisgICAgLy8gSWYgdGhlIHRvcENhbGxGcmFtZSB3YXMgcHVzaGVkIG9u
IHRoZSBzdGFjayBhZnRlciB0aGUgcHJldmlvdXNTY29wZSB3YXMgaW5zdGFudGlhdGVkLAorICAg
IC8vIHRoZW4gdGhpcyB0aHJvd1Njb3BlIHdpbGwgYmUgcmV0dXJuaW5nIHRvIExMSU5UIG9yIEpJ
VCBjb2RlIHRoYXQgYWx3YXlzIGRvIGFuIGV4Y2VwdGlvbgorICAgIC8vIGNoZWNrLiBJbiB0aGF0
IGNhc2UsIHNraXAgdGhlIHNpbXVsYXRlZCB0aHJvdyBiZWNhdXNlIHRoZSBMTEludCBhbmQgSklU
IHdpbGwgYmUKKyAgICAvLyBjaGVja2luZyBmb3IgdGhlIGV4Y2VwdGlvbiB0aGVpciBvd24gd2F5
IGluc3RlYWQgb2YgY2FsbGluZyBUaHJvd1Njb3BlOjpleGNlcHRpb24oKS4KKyAgICBpZiAodG9w
Q2FsbEZyYW1lICYmIHByZXZpb3VzU2NvcGUgPiB0b3BDYWxsRnJhbWUpCisgICAgICAgIHdpbGxC
ZUhhbmRsZUJ5TExJbnRPckpJVCA9IHRydWU7CisgICAgCisgICAgaWYgKCF3aWxsQmVIYW5kbGVC
eUxMSW50T3JKSVQpCisgICAgICAgIHNpbXVsYXRlVGhyb3coKTsKKworICAgIGlmICh0cmFjZU9u
KSB7CisgICAgICAgIGRhdGFMb2coIjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIs
IG1fZGVwdGgsICJdIEV4aXQ6ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9s
b2NhdGlvbi5maWxlLCAiOiIsIG1fbG9jYXRpb24ubGluZSk7CisgICAgICAgIGlmICghd2lsbEJl
SGFuZGxlQnlMTEludE9ySklUKQorICAgICAgICAgICAgZGF0YUxvZygiLCB3aXRoIHJldGhyb3ci
KTsKKyAgICAgICAgaWYgKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spCisgICAgICAgICAgICBk
YXRhTG9nKCIsIG5lZWRzIGNoZWNrIik7CisgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAg
ICAgaWYgKHRyYWNlV2l0aFN0YWNrVHJhY2VzKQorICAgICAgICAgICAgV1RGUmVwb3J0QmFja3Ry
YWNlKCk7CisgICAgfQorCisgICAgbV92bS5tX3RvcFRocm93U2NvcGUgPSBtX3ByZXZpb3VzU2Nv
cGU7Cit9CisKK3ZvaWQgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAobV92bS5leGNlcHRpb24oKSAmJiBt
X3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlvbikKKyAgICAgICAgdmVyaWZ5RXhjZXB0aW9uQ2hl
Y2tOZWVkSXNTYXRpc2ZpZWQoU2l0ZTo6VGhyb3cpOworICAgIAorICAgIG1fdm0udGhyb3dFeGNl
cHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30KKworSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCit7CisgICAgaWYgKCFlcnJv
ci5pc0NlbGwoKSB8fCAhanNEeW5hbWljQ2FzdDxFeGNlcHRpb24qPihlcnJvci5hc0NlbGwoKSkp
CisgICAgICAgIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRocm93
KTsKKyAgICAKKyAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7Cit9
CisKK0pTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmopCit7CisgICAgaWYgKCFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG9i
aikpCisgICAgICAgIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGU6OlRo
cm93KTsKKyAgICAKKyAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOwor
fQorCit2b2lkIFRocm93U2NvcGU6OnByaW50SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1bnNpZ25lZCBsaW5lKQoreworICAgIGlmIChtX3Zt
Lm1fbmVlZEV4Y2VwdGlvbkNoZWNrKQorICAgICAgICBkYXRhTG9nKCI8IiwgdHJhY2VDb3VudCsr
LCAiPiBOZWVkIGV4Y2VwdGlvbiBjaGVjayBhdCAiLCBmdW5jdGlvbk5hbWUsICIgQCAiLCBmaWxl
LCAiOiIsIGxpbmUsICJcbiIpOworfQorCit2b2lkIFRocm93U2NvcGU6OnNpbXVsYXRlVGhyb3co
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fdm0ubV90b3BUaHJvd1Njb3BlKTsKKyAgICBtX3Zt
Lm1fc2ltdWxhdGVkVGhyb3dQb2ludExvY2F0aW9uID0gbV9sb2NhdGlvbjsKKyAgICBtX3ZtLm1f
c2ltdWxhdGVkVGhyb3dQb2ludERlcHRoID0gbV9kZXB0aDsKKyAgICBtX3ZtLm1fbmVlZEV4Y2Vw
dGlvbkNoZWNrID0gdHJ1ZTsKKworICAgIGlmICh0cmFjZU9uKSB7CisgICAgICAgIGRhdGFMb2co
IjwiLCB0cmFjZUNvdW50KyssICI+IFRocm93U2NvcGUgWyIsIG1fZGVwdGgsICJdIFRocm93IGZy
b206ICIsIG1fbG9jYXRpb24uZnVuY3Rpb25OYW1lLCAiIEAgIiwgbV9sb2NhdGlvbi5maWxlLCAi
OiIsIG1fbG9jYXRpb24ubGluZSwgIlxuIik7CisgICAgICAgIGlmICh0cmFjZVdpdGhTdGFja1Ry
YWNlcykKKyAgICAgICAgICAgIFdURlJlcG9ydEJhY2t0cmFjZSgpOworICAgIH0KK30KKwordm9p
ZCBUaHJvd1Njb3BlOjp2ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChUaHJvd1Nj
b3BlOjpTaXRlIHNpdGUpCit7CisgICAgaWYgKCF2ZXJpZmljYXRpb25PbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKFVOTElLRUxZKG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2spKSB7Cisg
ICAgICAgIGF1dG8gZmFpbERlcHRoID0gbV92bS5tX3NpbXVsYXRlZFRocm93UG9pbnREZXB0aDsK
KyAgICAgICAgYXV0byYgZmFpbExvY2F0aW9uID0gbV92bS5tX3NpbXVsYXRlZFRocm93UG9pbnRM
b2NhdGlvbjsKKworICAgICAgICBhdXRvIHNpdGVOYW1lID0gW10gKFNpdGUgc2l0ZSkgLT4gY29u
c3QgY2hhciogeworICAgICAgICAgICAgc3dpdGNoIChzaXRlKSB7CisgICAgICAgICAgICBjYXNl
IFNpdGU6OlNjb3BlRW50cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJFbnRyeSI7CisgICAg
ICAgICAgICBjYXNlIFNpdGU6OlNjb3BlRXhpdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIkV4
aXQiOworICAgICAgICAgICAgY2FzZSBTaXRlOjpUaHJvdzoKKyAgICAgICAgICAgICAgICByZXR1
cm4gIlRocm93IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfTsKKwor
ICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAgIkZBSUxFRCBleGNlcHRpb24gY2hlY2sgdmVy
aWZpY2F0aW9uOlxuIgorICAgICAgICAgICAgIiAgICBFeGNlcHRpb24gdGhyb3duIGZyb20gVGhy
b3dTY29wZSBbIiwgZmFpbERlcHRoLCAiXSAiLCBzaXRlTmFtZShzaXRlKSwgIjogIiwgZmFpbExv
Y2F0aW9uLmZ1bmN0aW9uTmFtZSwgIiBAICIsIGZhaWxMb2NhdGlvbi5maWxlLCAiOiIsIGZhaWxM
b2NhdGlvbi5saW5lLCAiXG4iCisgICAgICAgICAgICAiICAgIGlzIHVuY2hlY2tlZCBpbiBUaHJv
d1Njb3BlIFsiLCBtX2RlcHRoLCAiXTogIiwgbV9sb2NhdGlvbi5mdW5jdGlvbk5hbWUsICIgQCAi
LCBtX2xvY2F0aW9uLmZpbGUsICI6IiwgbV9sb2NhdGlvbi5saW5lLCAiXG4iCisgICAgICAgICAg
ICAiXG4iKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV92bS5tX25lZWRFeGNlcHRpb25D
aGVjayk7CisgICAgfQorfQorCisjZW5kaWYgLy8gRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklGSUNB
VElPTikKKyAgICAKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFRocm93U2NvcGVfaAorI2RlZmluZSBUaHJvd1Njb3BlX2gKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbi5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVj
U3RhdGU7CitjbGFzcyBKU09iamVjdDsKKworI2lmIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJRklD
QVRJT04pCisKK2NsYXNzIFRocm93U2NvcGUgeworcHVibGljOgorICAgIEpTX0VYUE9SVF9QUklW
QVRFIFRocm93U2NvcGUoVk0mLCBUaHJvd1Njb3BlTG9jYXRpb24pOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIH5UaHJvd1Njb3BlKCk7CisKKyAgICBUaHJvd1Njb3BlKGNvbnN0IFRocm93U2NvcGUm
KSA9IGRlbGV0ZTsKKyAgICBUaHJvd1Njb3BlKFRocm93U2NvcGUmJikgPSBkZWZhdWx0OworCisg
ICAgVk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRpb24qKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3Rh
dGUqLCBKU09iamVjdCopOworCisgICAgaW5saW5lIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkKKyAg
ICB7CisgICAgICAgIG1fdm0ubV9uZWVkRXhjZXB0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIG1fdm0uZXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgcmVsZWFz
ZSgpIHsgbV9pc1JlbGVhc2VkID0gdHJ1ZTsgfQorCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBwcmludElmTmVlZENoZWNrKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciog
ZmlsZSwgdW5zaWduZWQgbGluZSk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzaW11bGF0ZVRocm93
KCk7CisKKyAgICBlbnVtIGNsYXNzIFNpdGUgeworICAgICAgICBTY29wZUVudHJ5LAorICAgICAg
ICBTY29wZUV4aXQsCisgICAgICAgIFRocm93CisgICAgfTsKKyAgICB2b2lkIHZlcmlmeUV4Y2Vw
dGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKFNpdGUpOworCisgICAgVk0mIG1fdm07CisgICAgVGhy
b3dTY29wZSogbV9wcmV2aW91c1Njb3BlOworICAgIFRocm93U2NvcGVMb2NhdGlvbiBtX2xvY2F0
aW9uOworICAgIHVuc2lnbmVkIG1fZGVwdGg7CisgICAgYm9vbCBtX2lzUmVsZWFzZWQgeyBmYWxz
ZSB9OworfTsKKworI2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKKyAgICBKU0M6
OlRocm93U2NvcGUoKHZtX18pLCBKU0M6OlRocm93U2NvcGVMb2NhdGlvbihfX0ZVTkNUSU9OX18s
IF9fRklMRV9fLCBfX0xJTkVfXykpCisKKyNkZWZpbmUgdGhyb3dTY29wZVByaW50SWZOZWVkQ2hl
Y2soc2NvcGVfXykgXAorICAgIHNjb3BlX18ucHJpbnRJZk5lZWRDaGVjayhfX0ZVTkNUSU9OX18s
IF9fRklMRV9fLCBfX0xJTkVfXykKKworI2Vsc2UgLy8gbm90IEVOQUJMRShUSFJPV19TQ09QRV9W
RVJJRklDQVRJT04pCisKK2NsYXNzIFRocm93U2NvcGUgeworcHVibGljOgorICAgIFRocm93U2Nv
cGUoVk0mIHZtKQorICAgICAgICA6IG1fdm0odm0pCisgICAgeyB9CisKKyAgICBWTSYgdm0oKSBj
b25zdCB7IHJldHVybiBtX3ZtOyB9CisgICAgCisgICAgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IG1fdm0udGhyb3dFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsgfQorICAgIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IHZhbHVlKTsgfQorICAgIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBvYmopIHsgcmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgb2JqKTsg
fQorICAgIAorICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uKCkgeyByZXR1cm4gbV92bS5leGNlcHRp
b24oKTsgfQorICAgIHZvaWQgcmVsZWFzZSgpIHsgfQorICAgIAorcHJpdmF0ZToKKyAgICBWTSYg
bV92bTsKK307CisKKyNkZWZpbmUgREVDTEFSRV9USFJPV19TQ09QRSh2bV9fKSBcCisgICAgSlND
OjpUaHJvd1Njb3BlKCh2bV9fKSkKKworI2VuZGlmIC8vIEVOQUJMRShUSFJPV19TQ09QRV9WRVJJ
RklDQVRJT04pCisKK0FMV0FZU19JTkxJTkUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBz
Y29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOworfQorCitBTFdBWVNfSU5MSU5F
IEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29w
ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc2NvcGUudGhyb3dFeGNlcHRpb24oZXhl
YywgdmFsdWUpOworfQorCitBTFdBWVNfSU5MSU5FIEpTT2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU09iamVjdCogb2JqKQoreworICAg
IHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIFRocm93U2NvcGVfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZUxvY2F0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RydWN0IFRocm93U2NvcGVMb2NhdGlvbiB7CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKCkgeyB9
CisgICAgVGhyb3dTY29wZUxvY2F0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
Y2hhciogZmlsZSwgdW5zaWduZWQgbGluZSkKKyAgICAgICAgOiBmdW5jdGlvbk5hbWUoZnVuY3Rp
b25OYW1lKQorICAgICAgICAsIGZpbGUoZmlsZSkKKyAgICAgICAgLCBsaW5lKGxpbmUpCisgICAg
eyB9CisgICAgCisgICAgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAg
IGNvbnN0IGNoYXIqIGZpbGUgeyBudWxscHRyIH07CisgICAgdW5zaWduZWQgbGluZSB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU21hbGxTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlN0cm9uZy5oIgorI2lu
Y2x1ZGUgIlRocm93U2NvcGVMb2NhdGlvbi5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5o
IgogI2luY2x1ZGUgIlR5cGVkQXJyYXlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVk1FbnRyeVJl
Y29yZC5oIgpAQCAtMTA4LDYgKzEwOSw3IEBAIGNsYXNzIFN0cnVjdHVyZTsKIGNsYXNzIFJlZ0V4
cDsKICNlbmRpZgogY2xhc3MgU3ltYm9sOworY2xhc3MgVGhyb3dTY29wZTsKIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRFdmFsQ29kZUJsb2NrOwogY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC00NDksMTAgKzQ1MSw2IEBAIHB1YmxpYzoKICAgICBF
eGNlcHRpb24qIGxhc3RFeGNlcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RFeGNlcHRpb247
IH0KICAgICBKU0NlbGwqKiBhZGRyZXNzT2ZMYXN0RXhjZXB0aW9uKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxKU0NlbGwqKj4oJm1fbGFzdEV4Y2VwdGlvbik7IH0KIAotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Ci0g
ICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBK
U1ZhbHVlKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24o
RXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKLQogICAgIHZvaWQgc2V0RmFpbE5leHROZXdDb2RlQmxv
Y2soKSB7IG1fZmFpbE5leHROZXdDb2RlQmxvY2sgPSB0cnVlOyB9CiAgICAgYm9vbCBnZXRBbmRD
bGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkKICAgICB7CkBAIC02NDQsNiArNjQyLDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fbGFzdEV4Y2VwdGlvbiA9IGV4Y2VwdGlvbjsKICAgICB9CiAKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2Vw
dGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CisKICNpZiBFTkFCTEUoQVNTRU1CTEVS
KQogICAgIGJvb2wgbV9jYW5Vc2VBc3NlbWJsZXI7CiAjZW5kaWYKQEAgLTY2OCw2ICs2NzAsMTMg
QEAgcHJpdmF0ZToKIAogICAgIEV4Y2VwdGlvbiogbV9leGNlcHRpb24geyBudWxscHRyIH07CiAg
ICAgRXhjZXB0aW9uKiBtX2xhc3RFeGNlcHRpb24geyBudWxscHRyIH07CisjaWYgRU5BQkxFKFRI
Uk9XX1NDT1BFX1ZFUklGSUNBVElPTikKKyAgICBUaHJvd1Njb3BlKiBtX3RvcFRocm93U2NvcGUg
eyBudWxscHRyIH07CisgICAgVGhyb3dTY29wZUxvY2F0aW9uIG1fc2ltdWxhdGVkVGhyb3dQb2lu
dExvY2F0aW9uOworICAgIHVuc2lnbmVkIG1fc2ltdWxhdGVkVGhyb3dQb2ludERlcHRoIHsgMCB9
OworICAgIG11dGFibGUgYm9vbCBtX25lZWRFeGNlcHRpb25DaGVjayB7IGZhbHNlIH07CisjZW5k
aWYKKwogICAgIGJvb2wgbV9mYWlsTmV4dE5ld0NvZGVCbG9jayB7IGZhbHNlIH07CiAgICAgRGVs
ZXRlUHJvcGVydHlNb2RlIG1fZGVsZXRlUHJvcGVydHlNb2RlIHsgRGVsZXRlUHJvcGVydHlNb2Rl
OjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2dsb2JhbENvbnN0UmVkZWNsYXJhdGlvblNob3VsZFRo
cm93IHsgdHJ1ZSB9OwpAQCAtNjkwLDYgKzY5OSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2hhZG93Q2hpY2tlbj4gbV9zaGFkb3dDaGlja2VuOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5PiBtX2J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk7CisKKyAgICBmcmllbmQgY2xhc3MgVGhyb3dTY29wZTsKIH07CiAKICNpZiBFTkFC
TEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
RW50cnlTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNRW50cnlTY29wZS5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTUVudHJ5U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBA
QCBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgVk1FbnRyeVNjb3BlKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+Vk1FbnRyeVNjb3BlKCk7CiAKKyAg
ICBWTSYgdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAKICAgICB2b2lk
IGFkZERpZFBvcExpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMSArNDgsMTYgQEAgdm9p
ZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKAogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2Vha01hcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGV4ZWMsICJXZWFrTWFwIikpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihleGVjLCBzY29wZSwgIldlYWtNYXAiKSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFdlYWtNYXAoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50
ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpOwogICAgIFN0cnVj
dHVyZSogd2Vha01hcFN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIGV4ZWMtPm5ld1RhcmdldCgpLCBnbG9iYWxPYmplY3QtPndlYWtNYXBT
dHJ1Y3R1cmUoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNjksMTEgKzc0
LDExIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxs
RGF0YSBhZGRlckZ1bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRh
KTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwog
CiAgICAgZm9yRWFjaEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBuZXh0SXRlbSkgewogICAgICAgICBpZiAoIW5leHRJdGVtLmlz
T2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSwgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Niwx
NSArNTYsMTggQEAgdm9pZCBXZWFrTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTQogCiBz
dGF0aWMgV2Vha01hcERhdGEqIGdldFdlYWtNYXBEYXRhKENhbGxGcmFtZSogY2FsbEZyYW1lLCBK
U1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0
ZXJhbCgiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCIpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxl
ZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIGlmIChKU1dlYWtNYXAqIHdlYWtNYXAgPSBqc0R5bmFtaWNDYXN0
PEpTV2Vha01hcCo+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHdlYWtNYXAtPndlYWtNYXBEYXRh
KCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJD
YWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBhIG5vbi1XZWFrTWFwIG9iamVjdCIpKTsKKyAgICB0
aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIHNjb3BlLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVk
IFdlYWtNYXAgZnVuY3Rpb24gb24gYSBub24tV2Vha01hcCBvYmplY3QiKSk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTk5LDEzICsxMDIsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBwcm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3Rv
RnVuY1dlYWtNYXBTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2Fs
bEZyYW1lLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFdlYWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwo
IkF0dGVtcHRlZCB0byBzZXQgYSBub24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOwotICAg
IG1hcC0+c2V0KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwgY2FsbEZyYW1lLT5hcmd1
bWVudCgxKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Y2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBzZXQgYSBu
b24tb2JqZWN0IGtleSBpbiBhIFdlYWtNYXAiKSkpOworICAgIG1hcC0+c2V0KHZtLCBhc09iamVj
dChrZXkpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9u
IDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDExICs0OCwxNiBAQCB2b2lkIFdlYWtTZXRD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNhbGxXZWFrU2V0KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBl
RXJyb3IoZXhlYywgIldlYWtTZXQiKSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAiV2Vha1NldCIpKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0V2Vha1NldChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgU3RydWN0dXJlKiB3ZWFr
U2V0U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUo
ZXhlYywgZXhlYy0+bmV3VGFyZ2V0KCksIGdsb2JhbE9iamVjdC0+d2Vha1NldFN0cnVjdHVyZSgp
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02OSw3ICs3NCw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnMKICAgICBDYWxsRGF0YSBhZGRlckZ1
bmN0aW9uQ2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgYWRkZXJGdW5jdGlvbkNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoYWRkZXJGdW5jdGlvbiwgYWRkZXJGdW5jdGlvbkNhbGxEYXRhKTsKICAgICBpZiAo
YWRkZXJGdW5jdGlvbkNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSkpOwogCiAgICAgZm9yRWFj
aEluSXRlcmFibGUoZXhlYywgaXRlcmFibGUsIFsmXShWTSYsIEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBuZXh0VmFsdWUpIHsKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRz
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsMTUgKzU0LDE4
IEBAIHZvaWQgV2Vha1NldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0KIAogc3RhdGljIFdl
YWtNYXBEYXRhKiBnZXRXZWFrTWFwRGF0YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNh
bGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiKSk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGNhbGxGcmFtZSwgc2NvcGUsIFdURjo6QVNDSUlMaXRlcmFsKCJDYWxsZWQgV2Vha1Nl
dCBmdW5jdGlvbiBvbiBub24tb2JqZWN0IikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBpZiAoSlNXZWFrU2V0KiB3ZWFrU2V0ID0ganNEeW5hbWljQ2FzdDxKU1dlYWtT
ZXQqPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiB3ZWFrU2V0LT53ZWFrTWFwRGF0YSgpOwogCi0g
ICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiQ2FsbGVkIFdl
YWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vha1NldCBvYmplY3QiKSk7CisgICAgdGhyb3dUeXBl
RXJyb3IoY2FsbEZyYW1lLCBzY29wZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkNhbGxlZCBXZWFrU2V0
IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQgb2JqZWN0IikpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC04NiwxMyArODksMTYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBw
cm90b0Z1bmNXZQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHByb3RvRnVuY1dlYWtT
ZXRBZGQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFdl
YWtNYXBEYXRhKiBtYXAgPSBnZXRXZWFrTWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghbWFwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIWtleS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRl
ZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBhIFdlYWtTZXQiKSkpOwotICAgIG1hcC0+c2V0
KGNhbGxGcmFtZS0+dm0oKSwgYXNPYmplY3Qoa2V5KSwganNVbmRlZmluZWQoKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBzY29wZSwg
V1RGOjpBU0NJSUxpdGVyYWwoIkF0dGVtcHRlZCB0byBhZGQgYSBub24tb2JqZWN0IGtleSB0byBh
IFdlYWtTZXQiKSkpOworICAgIG1hcC0+c2V0KHZtLCBhc09iamVjdChrZXkpLCBqc1VuZGVmaW5l
ZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogfQogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wOC0zMCAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3BlIGFu
ZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgIC0gSW50cm9kdWNlZCB0aGUgRU5BQkxFKFRIUk9XX1NDT1BFX1ZFUklG
SUNBVElPTikgZmxhZy4KKwogMjAxNi0wOC0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVSTFBhcnNlciBzaG91bGQgcGFyc2UgcmVsYXRp
dmUgVVJMcwpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiArOTE4LDEwIEBACiAjZGVm
aW5lIEVOQUJMRV9NQVNNX1BST0JFIDAKICNlbmRpZgogCisjaWZuZGVmIEVOQUJMRV9USFJPV19T
Q09QRV9WRVJJRklDQVRJT04KKyNkZWZpbmUgRU5BQkxFX1RIUk9XX1NDT1BFX1ZFUklGSUNBVElP
TiAoIWRlZmluZWQoTkRFQlVHKSkKKyNlbmRpZgorCiAvKiBQaWNrIHdoaWNoIGFsbG9jYXRvciB0
byB1c2U7IHdlIG9ubHkgbmVlZCBhbiBleGVjdXRhYmxlIGFsbG9jYXRvciBpZiB0aGUgYXNzZW1i
bGVyIGlzIGNvbXBpbGVkIGluLgogICAgT24gbm9uLVdpbmRvd3MgeDg2LTY0LCBpT1MsIGFuZCBB
Uk02NCB3ZSB1c2UgYSBzaW5nbGUgZml4ZWQgbW1hcCwgb24gb3RoZXIgcGxhdGZvcm1zIHdlIG1t
YXAgb24gZGVtYW5kLiAqLwogI2lmIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3NTkgQEAKKzIwMTYtMDgtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSB0aGUgVGhyb3dTY29wZSBhbmQgZm9yY2UgZXZl
cnkgdGhyb3cgc2l0ZSB0byBpbnN0YW50aWF0ZSBhIFRocm93U2NvcGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0
aGlzIGlzIG9ubHkgYW4gaW50ZXJuYWwgQVBJIGNoYW5nZS4gSWYgaXQgYnVpbGRzLCBpdCBzaG91
bGQgYmUgZ29vZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNzaW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0FwcGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0Fs
Z29yaXRobURpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9BbGdvcml0
aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUFlc0NiY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNLZXlHZW5Q
YXJhbXMpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJz
YUtleUdlblBhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSc2FPYWVwUGFyYW1zKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYVNzYVBhcmFtcyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG86Omdl
dFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEpTQXJyYXlGcm9tSlNPTik6Cisg
ICAgICAgIChXZWJDb3JlOjpnZXRTdHJpbmdGcm9tSlNPTik6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRCb29sZWFuRnJvbUpTT04pOgorICAgICAgICAoV2ViQ29yZTo6Z2V0QmlnSW50ZWdlclZlY3Rv
ckZyb21KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpX
Szo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlQWxnb3JpdGhtKToKKyAgICAgICAgKFdl
YkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5
U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9u
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6Omtl
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YWRkSldLQWxnb3JpdGhtVG9KU09OKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6c2VyaWFsaXplKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50UmVnaXN0cnlDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Q3VzdG9tRWxlbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZpbmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRET01FeGNlcHRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5mb3JjZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU21hbGxlcklu
dCk6CisgICAgICAgIChXZWJDb3JlOjp0b1NtYWxsZXJVSW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmNhbkFjY2Vzc0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93VHlwZUVycm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OnRocm93Tm90U3VwcG9ydGVkRXJyb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6dGhyb3dJbnZhbGlkU3RhdGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1Nl
Y3VyaXR5RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd0FyZ3VtZW50VHlwZUVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnRocm93QXR0cmlidXRlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93Q29uc3Ry
dWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjp0aHJvd1NlcXVlbmNlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93
Tm9uRmluaXRlVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93R2V0dGVyVHlwZUVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93U2V0dGVyVHlwZUVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnRocm93VGhpc1R5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpjYWxsVGhy
b3dUeXBlRXJyb3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAg
ICAgICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUmVmUHRy
TmF0aXZlQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVBcnJheSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU6OmNhbGxUaHJvd1R5cGVFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y2FsbENvbnN0cnVj
dG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnRXcmFwcGVyVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01J
dGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6aXRlcmF0b3JDcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6aXRlcmF0b3JGb3JFYWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NSXRlcmF0
b3JQcm90b3R5cGU8SlNXcmFwcGVyPjo6bmV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dHZXRPd25Q
cm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxv
Zyk6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVQb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFDdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RpY3Rp
b25hcnk6OmNvbnZlcnRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6Z2V0Q1NTQ2FudmFzQ29udGV4dCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN0cnVjdEpTRmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxBbGxDb2xsZWN0aW9uOjpp
dGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0Nv
bnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0
cnVjdEpTSFRNTEVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hU
TUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5wdXRF
bGVtZW50OjpzZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxJbnB1dEVs
ZW1lbnQ6OnNldFNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0
RWxlbWVudDo6c2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxl
bWVudDo6c2V0U2VsZWN0aW9uRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0RWxl
bWVudDo6c2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRN
TElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSGlzdG9yeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnB1c2hT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0hpc3Rvcnk6OnJlcGxhY2VTdGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNJREJEYXRhYmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0lEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xvY2F0aW9u
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTG9jYXRpb246OmdldE93blByb3BlcnR5
U2xvdERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpKU01lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcyk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmaWxsTWVzc2FnZVBvcnRBcnJheSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdl
UG9ydEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6aGFuZGxlUG9zdE1lc3NhZ2UpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lz
aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9EZWNpc2lvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2R1bGVM
b2FkZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNNdXRhdGlvbk9ic2Vy
dmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2Rl
OjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2Rl
RmlsdGVyOjphY2NlcHROb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luRWxlbWVudFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNv
bnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNSZWFk
YWJsZVN0cmVhbURlZmF1bHRSZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHTGVu
Z3RoQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEluZGV4
ZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRBdHRh
Y2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRQcm9ncmFtUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Z2V0U2hhZGVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpkYXRhRnVuY3Rpb25m
KToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmkpOgorICAgICAgICAoV2ViQ29yZTo6
ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYktpdFN1YnRs
ZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9LZXlGb3JtYXRGcm9t
SlNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYktpdFN1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0
U3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OmV4cG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYktpdFN1YnRsZUNy
eXB0bzo6ZXhwb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRv
Ojp3cmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViS2l0U3VidGxlQ3J5cHRvOjp1bndy
YXBLZXkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTV29ya2VyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2Vy
R2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJHbG9i
YWxTY29wZTo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcjo6aW52b2tlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVCYXNlOjp0aHJv
d1N0YWNrT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnRo
cm93VmFsaWRhdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVFbnVtZXJh
dGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChHZW5lcmF0ZURpY3Rpb25hcnlJ
bXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rp
b25PckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMpOgorICAgICAgICAoR2VuZXJhdGVBcmd1
bWVudHNDb3VudENoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAg
ICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzSW50ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTSW50
ZXJmYWNlTmFtZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEFj
dGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3Rp
dmVET01PYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RBY3Rp
dmVET01PYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDdXN0b21OYW1lZEdldHRlclBy
b3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZlbnRU
YXJnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90
eXBlRnVuY3Rpb25JdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlvbk5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0Fu
ZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RH
bG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0
UnVudGltZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0
ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
b3JJbXBsZW1lbnRzU3RhdGljUmVhZE9ubHlBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtZW50c1N0YXRpY0F0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjEpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlQ29u
c3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjEpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JJbXBsZW1lbnRzU3RhdGljQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RJ
bnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVu
dHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uSW1wbGVtZW50c01ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3JGdW5jdGlvbkltcGxlbWVudHNNZXRob2Q0KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBs
ZW1lbnRhbE1ldGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Q0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROb2RlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RO
b2RlQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0Tm9kZUNvbnN0cnVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vZGVOYW1lKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1JlYWRv
bmx5QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RO
b25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRp
b25BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25k
ZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0
aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
PFRlc3RPYmo6OkVudW1UeXBlPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6
Ok9wdGlvbmFsPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PEFsdGVybmF0ZUVudW1OYW1l
Pik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkVudW1BPik6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0PFRlc3RPYmo6OkVudW1CPik6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0PFRlc3RPYmo6OkVudW1DPik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0PFRlc3RP
Ymo6OktpbmQ+KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnQ8VGVzdE9iajo6U2l6ZT4pOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydDxUZXN0T2JqOjpDb25maWRlbmNlPik6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNo
b3VsZE5vdFRvbGVyYXRlTnVsbD4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialJlYWRPbmx5VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmopOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpFbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpCeXRlQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPY3RldEF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNs
YW1wZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRW5mb3JjZVJhbmdl
U2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakxvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpV
bnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialVzdnN0cmluZ0F0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpM
ZW5pZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqVW5mb3JnZWFi
bGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialVzdnN0cmluZ0F0
dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akltcGxlbWVudGF0aW9uRW51bUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqWE1M
T2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpS
ZWZsZWN0ZWRVUkxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZFVT
VlVSTEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50
ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVS
TEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0aE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ3VzdG9tQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpPbmZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpPbndlYmtpdGZvbyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aENhbGxXaXRoQW5k
U2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTEp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29udGVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak11dGFi
bGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpJbW11dGFibGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iaklkKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
TnVsbGFibGVEb3VibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqTnVs
bGFibGVMb25nQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ1NldHRhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iak51bGxh
YmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqTnVsbGFibGVTdHJpbmdWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0
SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpFbnVtQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U1Rlc3RPYmpCeXRlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpPY3RldEF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU2hvcnRBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpT
VGVzdE9iakxvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakxvbmdMb25n
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OnNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqVGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2Jq
VGVzdE51bGxhYmxlT2JqQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpMZW5p
ZW50VGVzdE9iakF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVz
dE9iakNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJp
bmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmlu
Z0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50
ZWdyYWxBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xl
YW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVNWVVJMQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmli
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb25XaXRoTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpT
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDdXN0b21BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9uZm9vKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak9ud2Via2l0Zm9vKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0
T2JqQW55QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak11dGFibGVQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9iaklkKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialJlcGxh
Y2VhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak51bGxhYmxl
TG9uZ1NldHRhYmxlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iak51
bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0T2JqU3RyaW5naWZpZXJBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
MSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb24yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhv
ZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkxvbmdNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9iak1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
akluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01l
dGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU3RyaW5nU3BlY2lhbE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVu
dW1BcmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOdWxsYWJsZVVTVlN0cmluZ0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFs
aXplZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3B0aW9uc09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uV2l0aE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJn
cyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVN
ZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJs
aWNBbmRQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlVm9pZEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVP
YmpFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlcldpbmRvd0FyZ3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdBbmREZWZhdWx0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21p
Y1N0cmluZ0lzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJp
bmdJc0VtcHR5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bERvdWJsZUlzTmFOKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TG9uZ0xvbmdJc1plcm8pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRM
b25nTG9uZ0lzWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsQm9vbGVhbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
TnVsbGFibGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBh
dGhOU1Jlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2Fs
bGJhY2tBbmRPcHRpb25hbEFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5k
Q2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmcpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1l
dGhvZDIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kMSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDYpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kNyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2Q4KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTApOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kMTEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0
aG91dE51bGxhYmxlU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0Mik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDQpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
RG91YmxlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNOb2RlTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQW55KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1l
bnRQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRp
b25hbEludEFyZ3VtZW50UHJvbWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJs
b2FkZWRGdW5jdGlvbjJQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rp
b25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTmVlZHNDdXN0
b21FbGVtZW50UmVhY3Rpb25TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQxKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0
aW9uYWxPdmVybG9hZDEpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMxKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKToKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpz
ZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1
bmN0aW9uTmFtZWRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Q2FjaGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkUmVhZG9ubHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3JUZXN0U3ViT2JqKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0VHlwZWRl
ZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U2VxdWVuY2VBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbkZ1bmNXaXRoQ2xhbXApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmlu
Z1NlcXVlbmNlRnVuY3Rpb24yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzYXR0cmlidXRlUmVhZG9ubHkpOgorICAgICAgICAo
V2ViQ29yZTo6anNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpzZXRK
U2F0dHJpYnV0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc3JlYWRvbmx5Q29uc3RydWN0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNyZWFkb25seUNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNJ
bnN0YW5jZTo6bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6
QmluZGluZ3M6OkNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OkNJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZCk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpDSW5zdGFuY2U6Omludm9rZUNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNf
aW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25U
b0V4ZWNTdGF0ZSk6CisgICAgICAgIChPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZCk6CisgICAg
ICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5n
czo6T2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpPYmpjRmllbGQ6OnNldFZhbHVlVG9JbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpPYmpjQXJyYXk6OnNldFZhbHVlQXQpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0Fy
cmF5Ojp2YWx1ZUF0KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tP
YmplY3QpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OnRo
cm93RXJyb3IpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAg
KEpTQzo6UnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAoSlNDOjpSdW50aW1l
QXJyYXk6OnB1dCk6CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6cHV0QnlJbmRleCk6Cisg
ICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGlt
ZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKToKKyAgICAgICAgKEpTQzo6Y2FsbFJ1bnRpbWVNZXRob2Qp
OgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iamVjdEdldHRlcik6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpmaWVsZEdldHRlcik6CisgICAgICAgIChKU0M6
OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OnB1dCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpSdW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkJpbmRp
bmdzOjpSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAgICog
YnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisKIDIwMTYtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHlsZVBlbmRpbmdJbWFnZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXBwbGVQYXlTZXNz
aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNBcHBsZVBheVNlc3Npb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
NSArNDAsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNz
aW9uOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgp
OwogICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0Fw
cGxlUGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3Rh
dGUsICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbiIp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCAiQXBwbGVQYXlTZXNzaW9uIiwgImNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24iKSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
QXBwbGVQYXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDMpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
dWludDE2X3Qgc3RhdHVzID0gY29udmVydDx1aW50MTZfdD4oc3RhdGUsIHN0YXRlLmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTcwLDE1ICs3MywxOCBAQCBKU1ZhbHVlIEpTQXBw
bGVQYXlTZXNzaW9uOjpjb21wbGV0ZVNoaXBwCiAKIEpTVmFsdWUgSlNBcHBsZVBheVNlc3Npb246
OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwog
ICAgIEpTQXBwbGVQYXlTZXNzaW9uKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU0FwcGxl
UGF5U2Vzc2lvbio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUs
ICJBcHBsZVBheVNlc3Npb24iLCAiY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24iKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRl
LCBzY29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbiIpKTsKIAogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNB
cHBsZVBheVNlc3Npb246OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgNCkpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB1
aW50MTZfdCBzdGF0dXMgPSBjb252ZXJ0PHVpbnQxNl90PihzdGF0ZSwgc3RhdGUuYXJndW1lbnQo
MCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtMTA0LDE1ICsxMTAsMTggQEAgSlNWYWx1ZSBKU0Fw
cGxlUGF5U2Vzc2lvbjo6Y29tcGxldGVTaGlwcAogCiBKU1ZhbHVlIEpTQXBwbGVQYXlTZXNzaW9u
Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUudGhpc1ZhbHVlKCk7CiAg
ICAgSlNBcHBsZVBheVNlc3Npb24qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTQXBwbGVQ
YXlTZXNzaW9uKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwg
IkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24iKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBz
Y29wZSwgIkFwcGxlUGF5U2Vzc2lvbiIsICJjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24i
KSk7CiAKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTQXBwbGVQ
YXlTZXNzaW9uOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRl
Y29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgRGljdGlv
bmFyeSBuZXdUb3RhbCA9IHsgJnN0YXRlLCBzdGF0ZS5hcmd1bWVudCgwKSB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTYzLDEyICs2NCwxNSBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNET01HbG9iCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9i
KEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRE9NQ29uc3RydWN0b3JPYmpl
Y3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNh
bGxlZSgpKTsKICAgICBBU1NFUlQoanNDb25zdHJ1Y3Rvcik7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JT
Y3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiQmxvYiIpOworICAg
ICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWls
YWJsZUVycm9yKGV4ZWMsIHNjb3BlLCAiQmxvYiIpOwogCiAgICAgaWYgKCFleGVjLmFyZ3VtZW50
Q291bnQoKSkgewogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JB
UFBFUihqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQmxvYiwgQmxvYjo6Y3JlYXRlKCkp
KTsKQEAgLTg3LDcgKzkxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1
Y3RKUwogICAgICAgICBKU1ZhbHVlIGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlID0gZXhlYy51bmNoZWNr
ZWRBcmd1bWVudCgxKTsKIAogICAgICAgICBpZiAoIWJsb2JQcm9wZXJ0eUJhZ1ZhbHVlLmlzT2Jq
ZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgIlNlY29u
ZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0Iik7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJTZWNvbmQg
YXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIE9iamVjdCIpOwogCiAg
ICAgICAgIC8vIEdpdmVuIHRoZSBhYm92ZSB0ZXN0LCB0aGlzIHdpbGwgYWx3YXlzIHlpZWxkIGFu
IG9iamVjdC4KICAgICAgICAgSlNPYmplY3QqIGJsb2JQcm9wZXJ0eUJhZ09iamVjdCA9IGJsb2JQ
cm9wZXJ0eUJhZ1ZhbHVlLnRvT2JqZWN0KCZleGVjKTsKQEAgLTEwMiw3ICsxMDYsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICAgICAgaWYgKGNvbnRh
aW5zRW5kaW5ncykgewogICAgICAgICAgICAgaWYgKGVuZGluZ3MgIT0gInRyYW5zcGFyZW50IiAm
JiBlbmRpbmdzICE9ICJuYXRpdmUiKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKCZleGVjLCAiVGhlIGVuZGluZ3MgcHJvcGVydHkgbXVzdCBiZSBlaXRoZXIgXCJ0cmFu
c3BhcmVudFwiIG9yIFwibmF0aXZlXCIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcigmZXhlYywgc2NvcGUsICJUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJlIGVp
dGhlciBcInRyYW5zcGFyZW50XCIgb3IgXCJuYXRpdmVcIiIpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gQXR0ZW1wdCB0byBnZXQgdGhlIHR5cGUgcHJvcGVydHkuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA5LCAy
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzQ4LDggKzM0OCwxMSBAQCBib29sIEpTQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6cHV0RGVsZWdhdGUoCiAKIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUs
IHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0
cmluZyBwcm9wZXJ0eU5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmlu
Zygmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0
aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTQsNiAr
NTQsOSBAQCBlbnVtIGNsYXNzIEhhc2hSZXF1aXJlbWVudCB7CiAKIGJvb2wgSlNDcnlwdG9BbGdv
cml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciYgYWxnb3JpdGhtSWRlbnRp
ZmllcikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIHR5cGVkZWYgKEFsZ29yaXRobSBvciBET01T
dHJpbmcpIEFsZ29yaXRobUlkZW50aWZpZXI7CiAKICAgICBTdHJpbmcgYWxnb3JpdGhtTmFtZTsK
QEAgLTgxLDcgKzg0LDcgQEAgYm9vbCBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFs
ZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWFsZ29yaXRobU5hbWUuY29udGFp
bnNPbmx5QVNDSUkoKSkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMpOworICAgICAg
ICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMTIyLDggKzEyNSwxMSBAQCBzdGF0aWMgYm9vbCBnZXRIYXNoQWxnb3JpdGht
KEpTRGljdGlvbmFyCiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4g
Y3JlYXRlQWVzQ2JjUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE0MCw3ICsxNDYsNyBAQCBzdGF0aWMg
UmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAgICAgfQogCiAgICAgaWYgKGl2RGF0
YS5zZWNvbmQgIT0gMTYpIHsKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUg
MTYgYnl0ZXMiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVF
cnJvcihleGVjLCAiQUVTLUNCQyBpbml0aWFsaXphdGlvbiBkYXRhIG11c3QgYmUgMTYgYnl0ZXMi
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTUxLDggKzE1NywxMSBA
QCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQ
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzS2V5R2VuUGFyYW1zKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoIXZh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtMTY5LDggKzE3OCwxMSBAQCBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+CiAKIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4gY3JlYXRlSG1hY1BhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE4Nyw4ICsxOTksMTEgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNLZXlQYXJhbXMoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUu
aXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0yMDksOCArMjI0LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4KIAogc3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBj
cmVhdGVSc2FLZXlHZW5QYXJhbXMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3Bl
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMzIsNyArMjUwLDcgQEAg
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPgogCiAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IHB1YmxpY0V4cG9uZW50QXJyYXkgPSB0b1VpbnQ4QXJyYXkocHVibGljRXhwb25l
bnRWYWx1ZSk7CiAgICAgaWYgKCFwdWJsaWNFeHBvbmVudEFycmF5KSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgIkV4cGVjdGVkIGEgVWludDhBcnJheSBpbiBwdWJsaWNFeHBvbmVu
dCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCAiRXhwZWN0ZWQgYSBV
aW50OEFycmF5IGluIHB1YmxpY0V4cG9uZW50Iik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICByZXN1bHQtPnB1YmxpY0V4cG9uZW50LmFwcGVuZChwdWJsaWNFeHBvbmVudEFy
cmF5LT5kYXRhKCksIHB1YmxpY0V4cG9uZW50QXJyYXktPmJ5dGVMZW5ndGgoKSk7CkBAIC0yNTAs
OCArMjY4LDExIEBAIHN0YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4KIAog
c3RhdGljIFJlZlB0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FPYWVwUGFy
YW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IGlmICghdmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTI4NCw4ICszMDUsMTEgQEAgc3RhdGljIFJlZlB0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPgogCiBzdGF0aWMgUmVmUHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
c2NvcGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTM3LDEzICszOCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlND
cnlwdG86OmdldFJhbmRvbVZhbHVlcyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEpTVmFsdWUg
YnVmZmVyID0gc3RhdGUuYXJndW1lbnQoMCk7CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4g
YXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcoYnVmZmVyKTsKICAgICBpZiAoIWFy
cmF5QnVmZmVyVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZWQoKS5nZXRSYW5kb21WYWx1ZXMoYXJyYXlCdWZm
ZXJWaWV3LmdldCgpLCBlYyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAJKHJldmlzaW9uIDIw
NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXph
dGlvbkpXSy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBKU0FycmF5KiYgcmVzdWx0KQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyhleGVjLCBrZXkpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGpzb24sIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOwogCkBAIC02MSw3ICs2NCw3IEBAIHN0YXRpYyBi
b29sIGdldEpTQXJyYXlGcm9tSlNPTihFeGVjU3RhdGUKICAgICBKU1ZhbHVlIHZhbHVlID0gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKTsKICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGFuIGFycmF5IGZvciBcIiVzXCIg
SlNPTiBrZXkiLCAga2V5KSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBT
dHJpbmc6OmZvcm1hdCgiRXhwZWN0ZWQgYW4gYXJyYXkgZm9yIFwiJXNcIiBKU09OIGtleSIsICBr
ZXkpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNzIsNiArNzUsOSBAQCBz
dGF0aWMgYm9vbCBnZXRKU0FycmF5RnJvbUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdl
dFN0cmluZ0Zyb21KU09OKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IGNo
YXIqIGtleSwgU3RyaW5nJiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJv
cGVydHlTbG90IHNsb3QoanNvbiwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okdl
dCk7CiAKQEAgLTg0LDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJvbUpTT04oRXhl
Y1N0YXRlKgogICAgICAgICAvLyBDYW4gZ2V0IGFuIG91dCBvZiBtZW1vcnkgZXhjZXB0aW9uLgog
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmluZzo6Zm9ybWF0KCJFeHBlY3Rl
ZCBhIHN0cmluZyB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgc3Ry
aW5nIHZhbHVlIGZvciBcIiVzXCIgSlNPTiBrZXkiLCAga2V5KSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTkzLDYgKzk5LDkgQEAgc3RhdGljIGJvb2wgZ2V0U3RyaW5nRnJv
bUpTT04oRXhlY1N0YXRlKgogCiBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgY2hhcioga2V5LCBib29sJiByZXN1bHQp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsIGtleSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoanNvbiwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CiAKQEAgLTEwMiw3ICsxMTEsNyBA
QCBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJvbUpTT04oRXhlY1N0YXRlCiAgICAgSlNWYWx1ZSBq
c1ZhbHVlID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudGlmaWVyKTsKICAgICBBU1NFUlQoIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpKTsKICAgICBpZiAoIWpzVmFsdWUuaXNCb29sZWFuKCkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgYm9v
bGVhbiB2YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBzY29wZSwgU3RyaW5nOjpmb3JtYXQoIkV4cGVjdGVkIGEgYm9vbGVhbiB2
YWx1ZSBmb3IgXCIlc1wiIEpTT04ga2V5IiwgIGtleSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0xMTIsMTcgKzEyMSwyMCBAQCBzdGF0aWMgYm9vbCBnZXRCb29sZWFuRnJv
bUpTT04oRXhlY1N0YXRlCiAKIHN0YXRpYyBib29sIGdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNP
TihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBqc29uLCBjb25zdCBjaGFyKiBrZXksIFZlY3Rv
cjx1aW50OF90PiYgcmVzdWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGJhc2U2NHVy
bEVuY29kZWROdW1iZXI7CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihleGVjLCBqc29uLCBr
ZXksIGJhc2U2NHVybEVuY29kZWROdW1iZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBpZiAoIWJhc2U2NFVSTERlY29kZShiYXNlNjR1cmxFbmNvZGVkTnVtYmVyLCByZXN1bHQpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGRlY29k
ZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0
YSBpbiBKV0siKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocmVz
dWx0WzBdID09IDApIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG9jdGV0
cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgQmlnSW50ZWdlciBtdXN0IHV0aWxpemUgdGhlIG1p
bmltdW0gbnVtYmVyIG9mIG9jdGV0cyB0byByZXByZXNlbnQgdGhlIHZhbHVlIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMzIsMTYgKzE0NCwxOSBAQCBzdGF0aWMgYm9v
bCBnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04oCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0
cmluZyYganNvblN0cmluZykKICAgICA6IG1fZXhlYyhleGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgSlNWYWx1ZSBqc29uVmFsdWUgPSBKU09OUGFyc2UoZXhlYywganNvblN0cmluZyk7CiAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIWpz
b25WYWx1ZSB8fCAhanNvblZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEpXSyBzZXJpYWxpemF0aW9uIikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEpX
SyBzZXJpYWxpemF0aW9uIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9qc29u
LnNldChtX2V4ZWMtPnZtKCksIGFzT2JqZWN0KGpzb25WYWx1ZSkpOworICAgIG1fanNvbi5zZXQo
dm0sIGFzT2JqZWN0KGpzb25WYWx1ZSkpOwogfQogCiBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6On5KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0soKQpAQCAtMTY1LDYgKzE4MCw5IEBAIHN0
YXRpYyBSZWY8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3IKIAogT3B0aW9uYWw8Q3J5cHRv
QWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVBbGdv
cml0aG0oQ3J5cHRvQWxnb3JpdGhtKiBzdWdnZXN0ZWRBbGdvcml0aG0sIENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMqIHN1Z2dlc3RlZFBhcmFtZXRlcnMpIGNvbnN0CiB7CisgICAgVk0mIHZtID0g
bV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJhbGci
LCBtX2p3a0FsZ29yaXRobU5hbWUpKSB7CiAgICAgICAgIC8vIEFsZ29yaXRobSBpcyBvcHRpb25h
bCBpbiBKV0suCiAgICAgICAgIHJldHVybiBDcnlwdG9BbGdvcml0aG1QYWlyIHsgc3VnZ2VzdGVk
QWxnb3JpdGhtLCBzdWdnZXN0ZWRQYXJhbWV0ZXJzIH07CkBAIC0yMTYsNyArMjM0LDcgQEAgT3B0
aW9uYWw8Q3J5cHRvQWxnb3JpdGhtUGFpcj4gSlNDcnlwdG9LZQogICAgICAgICBhbGdvcml0aG0g
PSBhbGdvcml0aG1SZWdpc3R5LmNyZWF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpBRVNf
S1cpOwogICAgICAgICBwYXJhbWV0ZXJzID0gYWRvcHRSZWYoKm5ldyBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzKTsKICAgICB9IGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMs
ICJVbnN1cHBvcnRlZCBKV0sgYWxnb3JpdGhtICIgKyBtX2p3a0FsZ29yaXRobU5hbWUpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCAiVW5zdXBwb3J0ZWQgSldLIGFsZ29y
aXRobSAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAg
ICAgfQogCkBAIC0yNTQsOSArMjcyLDEyIEBAIE9wdGlvbmFsPENyeXB0b0FsZ29yaXRobVBhaXI+
IEpTQ3J5cHRvS2UKIAogc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBDcnlwdG9LZXlVc2FnZSYgdXNhZ2VzLCBjb25zdCBTdHJpbmcmIG9wZXJhdGlvbiwgY29u
c3QgU3RyaW5nJiB0cnlPcGVyYXRpb24sIENyeXB0b0tleVVzYWdlIHRyeVVzYWdlKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKG9wZXJhdGlvbiA9PSB0cnlPcGVyYXRpb24pIHsKICAgICAgICAg
aWYgKHVzYWdlcyAmIHRyeVVzYWdlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlv
biIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlvbiIpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICB1c2FnZXMgfD0gdHJ5VXNh
Z2U7CkBAIC0yNjYsNiArMjg3LDkgQEAgc3RhdGljIGJvb2wgdHJ5SldLS2V5T3BzVmFsdWUoRXhl
Y1N0YXRlKgogCiB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNh
Z2VzKENyeXB0b0tleVVzYWdlJiBzdWdnZXN0ZWRVc2FnZXMpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIENyeXB0b0tleVVzYWdlIGp3a1VzYWdlcyA9IDA7CiAKICAgICBKU0FycmF5KiBr
ZXlPcHM7CkBAIC0yNzUsNyArMjk5LDcgQEAgdm9pZCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6OnJlY29uYwogICAgICAgICAgICAgU3RyaW5nIG9wZXJhdGlvbjsKICAgICAgICAgICAgIGlm
ICghanNWYWx1ZS5nZXRTdHJpbmcobV9leGVjLCBvcGVyYXRpb24pKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRlIGNv
dWxkIG5vdCBiZSBwcm9jZXNzZWQiKSk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSldLIGtleV9vcHMgYXR0cmlidXRlIGNv
dWxkIG5vdCBiZSBwcm9jZXNzZWQiKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKCF0cnlKV0tLZXlPcHNWYWx1ZShtX2V4ZWMsIGp3a1Vz
YWdlcywgb3BlcmF0aW9uLCBBU0NJSUxpdGVyYWwoInNpZ24iKSwgQ3J5cHRvS2V5VXNhZ2VTaWdu
KSkKQEAgLTMxMCw3ICszMzQsNyBAQCB2b2lkIEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6
cmVjb25jCiAgICAgICAgIGVsc2UgaWYgKGp3a1VzZVN0cmluZyA9PSAic2lnIikKICAgICAgICAg
ICAgIGp3a1VzYWdlcyB8PSAoQ3J5cHRvS2V5VXNhZ2VTaWduIHwgQ3J5cHRvS2V5VXNhZ2VWZXJp
ZnkpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
IlVuc3VwcG9ydGVkIEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJcIiIp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIlVuc3VwcG9ydGVk
IEpXSyBrZXkgdXNlIHZhbHVlIFwiIiArIGp3a1VzZVN0cmluZyArICJcIiIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzYyLDIxICszODYsMjQgQEAgYm9vbCBK
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleVNpegogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhT2N0ZXRTZXF1
ZW5jZSgpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFN0cmluZyBrZXlCYXNlNjRVUkw7
CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImsiLCBr
ZXlCYXNlNjRVUkwpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJTZWNyZXQga2V5
IGRhdGEgaXMgbm90IHByZXNlbnQgaXMgSldLIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJTZWNyZXQga2V5IGRhdGEgaXMgbm90IHBy
ZXNlbnQgaXMgSldLIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gb2N0ZXRTZXF1ZW5jZTsKICAgICBpZiAoIWJhc2U2NFVSTERlY29kZShr
ZXlCYXNlNjRVUkwsIG9jdGV0U2VxdWVuY2UpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBK
V0siKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJh
bCgiQ2Fubm90IGRlY29kZSBiYXNlNjR1cmwga2V5IGRhdGEgaW4gSldLIikpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtleVNpemVJc1ZhbGlkKG9jdGV0U2Vx
dWVuY2Uuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiS2V5
IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1OYW1lKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXplIGlzIG5vdCB2YWxpZCBmb3Ig
IiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IApAQCAtMzg1LDI0ICs0MTIsMjcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpT
Q3J5cHRvSwogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9uZW50cygpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gbV9leGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIFZlY3Rvcjx1aW50OF90PiBtb2R1bHVzOwogICAgIFZlY3Rvcjx1aW50OF90PiBl
eHBvbmVudDsKICAgICBWZWN0b3I8dWludDhfdD4gcHJpdmF0ZUV4cG9uZW50OwogCiAgICAgaWYg
KCFnZXRCaWdJbnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBtX2pzb24uZ2V0KCksICJuIiwg
bW9kdWx1cykpIHsKICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVpcmVkIEpXSyBc
Im5cIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiblwiIG1lbWJlciBpcyBt
aXNzaW5nIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBpZiAoIWtl
eVNpemVJc1ZhbGlkKG1vZHVsdXMuc2l6ZSgpICogOCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCAiS2V5IHNpemUgaXMgbm90IHZhbGlkIGZvciAiICsgbV9qd2tBbGdvcml0aG1O
YW1lKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgIktleSBzaXplIGlz
IG5vdCB2YWxpZCBmb3IgIiArIG1fandrQWxnb3JpdGhtTmFtZSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1f
ZXhlYywgbV9qc29uLmdldCgpLCAiZSIsIGV4cG9uZW50KSkgewogICAgICAgICBpZiAoIW1fZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFT
Q0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwiZVwiIG1lbWJlciBpcyBtaXNzaW5nIikpOworICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZXF1
aXJlZCBKV0sgXCJlXCIgbWVtYmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtNDU4LDIyICs0ODgsMjIgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0tleURhdGE+IEpTQ3J5cHRvSwogICAgICAgICBpZiAobV9leGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAoIWVsZW1lbnQuaXNPYmpl
Y3QoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwo
IkpXSyBcIm90aFwiIGFycmF5IG1lbWJlciBpcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgXCJvdGhc
IiBhcnJheSBtZW1iZXIgaXMgbm90IGFuIG9iamVjdCIpKTsKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21K
U09OKG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJyIiwgaW5mby5wcmltZUZhY3RvcikpIHsK
ICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBwcmltZSBm
YWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdl
dCBwcmltZSBmYWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5IikpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFnZXRCaWdJ
bnRlZ2VyVmVjdG9yRnJvbUpTT04obV9leGVjLCBhc09iamVjdChlbGVtZW50KSwgImQiLCBpbmZv
LmZhY3RvckNSVEV4cG9uZW50KSkgewogICAgICAgICAgICAgaWYgKCFtX2V4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgZXhwb25lbnQgZm9yIGEgcHJpbWUgaW4gXCJvdGhc
IiBkaWN0aW9uYXJ5IikpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGV4cG9uZW50IGZvciBh
IHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09O
KG1fZXhlYywgYXNPYmplY3QoZWxlbWVudCksICJ0IiwgaW5mby5mYWN0b3JDUlRDb2VmZmljaWVu
dCkpIHsKICAgICAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGdldCBm
YWN0b3IgQ1JUIGNvZWZmaWNpZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIp
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBjb2VmZmljaWVudCBmb3IgYSBwcmltZSBpbiBc
Im90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogICAgICAgICBvdGhlclByaW1lSW5mb3MuYXBwZW5kKGluZm8pOwpAQCAtNDg0LDEwICs1
MTQsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvSwogCiBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpr
ZXlEYXRhKCkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBtX2V4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgU3RyaW5nIGp3a0tleVR5cGU7
CiAgICAgaWYgKCFnZXRTdHJpbmdGcm9tSlNPTihtX2V4ZWMsIG1fanNvbi5nZXQoKSwgImt0eSIs
IGp3a0tleVR5cGUpKSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBK
V0sgXCJrdHlcIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVxdWlyZWQgSldLIFwia3R5XCIgbWVt
YmVyIGlzIG1pc3NpbmciKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
NDk3LDcgKzUzMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBKU0NyeXB0b0sK
ICAgICBpZiAoandrS2V5VHlwZSA9PSAiUlNBIikKICAgICAgICAgcmV0dXJuIGtleURhdGFSU0FD
b21wb25lbnRzKCk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJVbnN1cHBvcnRlZCBK
V0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOworICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywg
c2NvcGUsICJVbnN1cHBvcnRlZCBKV0sga2V5IHR5cGUgIiArIGp3a0tleVR5cGUpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC01NjAsNiArNTkzLDkgQEAgc3RhdGljIHZvaWQgYWRkQm9v
bFRvSlNPTihFeGVjU3RhdGUqIGV4ZQogCiBzdGF0aWMgdm9pZCBhZGRKV0tBbGdvcml0aG1Ub0pT
T04oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoganNvbiwgY29uc3QgQ3J5cHRvS2V5JiBrZXkp
CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcgandrQWxnb3JpdGhtOwogICAgIHN3aXRjaCAo
a2V5LmFsZ29yaXRobUlkZW50aWZpZXIoKSkgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6SE1BQzoKQEAgLTY1Miw3ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBhZGRKV0tBbGdv
cml0aG1Ub0pTT04oRXhlY1N0CiAKICAgICBpZiAoandrQWxnb3JpdGhtLmlzTnVsbCgpKSB7CiAg
ICAgICAgIC8vIFRoZSBzcGVjIGRvZXNuJ3QgY3VycmVudGx5IHRlbGwgd2hldGhlciBleHBvcnQg
c2hvdWxkIGZhaWwsIG9yIGp1c3Qgc2tpcCAiYWxnIiAod2hpY2ggaXMgYW4gb3B0aW9uYWwga2V5
IGluIEpXSykuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5
IGFsZ29yaXRobSBhbmQgc2l6ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sgYWxnb3JpdGhtIGlkZW50
aWZpZXIiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldLIGFsZ29yaXRo
bSBpZGVudGlmaWVyIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02ODksMTAgKzcy
NSwxMyBAQCBzdGF0aWMgdm9pZCBhZGRVc2FnZXNUb0pTT04oRXhlY1N0YXRlKiBlCiAKIFN0cmlu
ZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IENyeXB0b0tleSYga2V5KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0tleURhdGE+IGtleURhdGEgPSBrZXkuZXhwb3J0RGF0YSgpOwogICAgIGlmICgh
a2V5RGF0YSkgewogICAgICAgICAvLyBUaGlzIGdlbmVyYWxseSBzaG91bGRuJ3QgaGFwcGVuIGFz
IGxvbmcgYXMgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLCBidXQgYXMgdW5k
ZXJseWluZyBsaWJyYXJpZXMgcmV0dXJuIGVycm9ycywgdGhlcmUgbWF5IGJlIHNvbWUgcmFyZSBm
YWlsdXJlIGNvbmRpdGlvbnMuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRl
cmlhbCIpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIApAQCAtNzEzLDcgKzc1
Miw3IEBAIFN0cmluZyBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnNlcmkKICAgICBlbHNl
IGlmIChpczxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURhdGEpKQogICAgICAgICBi
dWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKGV4ZWMsIGRvd25jYXN0PENyeXB0b0tleURhdGFSU0FD
b21wb25lbnRzPigqa2V5RGF0YSksIHJlc3VsdCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiS2V5IGRvZXNuJ3Qgc3VwcG9ydCBleHBvcnRL
ZXkiKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IktleSBkb2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOwogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgfQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcAko
cmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDcnlwdG9P
cGVyYXRpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTIgKzM2LDE1IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogYm9vbCBjcnlwdG9PcGVyYXRpb25EYXRhRnJvbUpTVmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9PcGVyYXRpb25EYXRhJiByZXN1bHQpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHRvQXJyYXlCdWZm
ZXIodmFsdWUpKQogICAgICAgICByZXN1bHQgPSBzdGQ6Om1ha2VfcGFpcihzdGF0aWNfY2FzdDx1
aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgZWxz
ZSBpZiAoUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYnVmZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJW
aWV3KHZhbHVlKSkKICAgICAgICAgcmVzdWx0ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8
dWludDhfdCo+KGJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBidWZmZXJWaWV3LT5ieXRlTGVu
Z3RoKCkpOwogICAgIGVsc2UgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmplY3RzIGNhbiBi
ZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiT25seSBBcnJheUJ1ZmZlciBhbmQgQXJyYXlC
dWZmZXJWaWV3IG9iamVjdHMgY2FuIGJlIHBhc3NlZCBhcyBDcnlwdG9PcGVyYXRpb25EYXRhIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA5LDcgKzEw
OSw5IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsK
KyAgICBWTSYgdm0gPSBtX2lzb2xhdGVkV29ybGQtPnZtKCk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmICghbV9jb25zdHJ1Y3RvcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0LDcgKzE0Niw3IEBA
IHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKIAogICAgIEVsZW1lbnQq
IHdyYXBwZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50KTsK
ICAgICBpZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50KSB7
Ci0gICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoKnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOworICAgICAgICB0aHJv
d0ludmFsaWRTdGF0ZUVycm9yKCpzdGF0ZSwgc2NvcGUsICJDdXN0b20gZWxlbWVudCBjb25zdHJ1
Y3RvciBmYWlsZWQgdG8gdXBncmFkZSBhbiBlbGVtZW50Iik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgd3JhcHBlZEVsZW1lbnQtPnNldEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKCp0aGlz
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lz
dHJ5Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbUVsZW1lbnRSZWdpc3RyeUN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIEpTT2JqZWN0KiBnZXRDdXN0b21FbGVtZW50Q2FsbGJhY2soRXhlY1N0YXRlJiBz
dGF0ZSwgSlNPYmplY3QmIHByb3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgaWQpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gcHJvdG90eXBlLmdldCgmc3RhdGUsIGlk
KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGlmIChjYWxsYmFjay5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBpZiAoIWNhbGxiYWNrLmlzRnVuY3Rpb24oKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBtdXN0
IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQSBjdXN0b20gZWxlbWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rp
b24iKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICByZXR1cm4gY2FsbGJh
Y2suZ2V0T2JqZWN0KCk7CkBAIC01Niw4ICs1OSwxMSBAQCBzdGF0aWMgSlNPYmplY3QqIGdldEN1
c3RvbUVsZW1lbnRDYWxsYmFjCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNkb20t
Y3VzdG9tZWxlbWVudHJlZ2lzdHJ5LWRlZmluZQogSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdp
c3RyeTo6ZGVmaW5lKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIEF0b21pY1N0
cmluZyBsb2NhbE5hbWUoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoJnN0YXRl
KS0+dG9BdG9taWNTdHJpbmcoJnN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKSkKQEAgLTY1LDcgKzcxLDcgQEAgSlNWYWx1ZSBKU0N1c3RvbUVsZW1lbnRSZWdp
c3RyeTo6ZGVmaW5lKAogCiAgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvclZhbHVlID0gc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMSk7CiAgICAgaWYgKCFjb25zdHJ1Y3RvclZhbHVlLmlzQ29uc3RydWN0
b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHNl
Y29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29uc3RydWN0b3IiKSk7CiAgICAgSlNPYmplY3QqIGNv
bnN0cnVjdG9yID0gY29uc3RydWN0b3JWYWx1ZS5nZXRPYmplY3QoKTsKIAogICAgIC8vIEZJWE1F
OiBUaHJvdyBhIFR5cGVFcnJvciBpZiBjb25zdHJ1Y3RvciBkb2Vzbid0IGluaGVyaXQgZnJvbSBI
VE1MRWxlbWVudC4KQEAgLTc1LDExICs4MSwxMSBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJl
Z2lzdHJ5OjpkZWZpbmUoCiAgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0
dXM6OlZhbGlkOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEN1c3RvbUVsZW1lbnROYW1lVmFs
aWRhdGlvblN0YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczoKLSAgICAgICAgcmV0dXJu
IHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5h
bWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGluIGVsZW1lbnRzIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9mIHRoZSBidWlsdGlu
IGVsZW1lbnRzIikpOwogICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVz
OjpOb0h5cGhlbjoKLSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJ
SUxpdGVyYWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOwor
ICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVy
YWwoIkN1c3RvbSBlbGVtZW50IG5hbWUgbXVzdCBjb250YWluIGEgaHlwaGVuIikpOwogICAgIGNh
c2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpDb250YWluc1VwcGVyQ2FzZToK
LSAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkN1
c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGNvbnRhaW4gYW4gdXBwZXIgY2FzZSBsZXR0ZXIiKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0
ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgbmFtZSBjYW5ub3QgY29udGFpbiBhbiB1cHBlciBjYXNlIGxl
dHRlciIpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQ2hlY2sgcmUtZW50cmFuY3kgaGVyZS4K
QEAgLTg3LDIxICs5MywyMCBAQCBKU1ZhbHVlIEpTQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5OjpkZWZp
bmUoCiAKICAgICBDdXN0b21FbGVtZW50UmVnaXN0cnkmIHJlZ2lzdHJ5ID0gd3JhcHBlZCgpOwog
ICAgIGlmIChyZWdpc3RyeS5maW5kSW50ZXJmYWNlKGxvY2FsTmFtZSkpIHsKLSAgICAgICAgdGhy
b3dOb3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11
bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1lIikpOworICAgICAg
ICB0aHJvd05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5u
b3QgZGVmaW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIHRhZyBuYW1l
IikpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAocmVn
aXN0cnkuY29udGFpbnNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgdGhyb3dO
b3RTdXBwb3J0ZWRFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVmaW5lIG11bHRp
cGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOworICAgICAgICB0aHJv
d05vdFN1cHBvcnRlZEVycm9yKHN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZGVm
aW5lIG11bHRpcGxlIGN1c3RvbSBlbGVtZW50cyB3aXRoIHRoZSBzYW1lIGNsYXNzIikpOwogICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBhdXRvJiB2bSA9IGdsb2Jh
bE9iamVjdCgpLT52bSgpOwogICAgIEpTVmFsdWUgcHJvdG90eXBlVmFsdWUgPSBjb25zdHJ1Y3Rv
ci0+Z2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKTsKICAgICBpZiAoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlm
ICghcHJvdG90eXBlVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcidzIHBy
b3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3IncyBwcm90b3R5cGUgbXVzdCBiZSBhbiBvYmplY3QiKSk7CiAgICAgSlNPYmplY3QmIHByb3Rv
dHlwZU9iamVjdCA9ICphc09iamVjdChwcm90b3R5cGVWYWx1ZSk7CiAKICAgICBRdWFsaWZpZWRO
YW1lIG5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVS
SSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOCwxOCArMzM4LDI0IEBAIEpTVmFsdWUgY3Jl
YXRlRE9NRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXgKIAogdm9pZCBzZXRET01FeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlIGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYg
KCFlYyB8fCBleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVET01FeGNlcHRpb24oZXhlYywgZWMp
KTsKKyAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKSk7CiB9CiAKIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBjb25zdCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKCFlYy5jb2RlIHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZURPTUV4Y2VwdGlv
bihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbihleGVjLCBlYy5jb2RlLCBlYy5tZXNzYWdlKSk7CiB9
CiAKICN1bmRlZiBUUllfVE9fQ1JFQVRFX0VYQ0VQVElPTgpAQCAtNDMwLDEzICs0MzYsMTYgQEAg
c3RhdGljIFN0cmluZyByYW5nZUVycm9yU3RyaW5nKGRvdWJsZSB2YQogCiBzdGF0aWMgZG91Ymxl
IGVuZm9yY2VSYW5nZShFeGVjU3RhdGUmIHN0YXRlLCBkb3VibGUgeCwgZG91YmxlIG1pbmltdW0s
IGRvdWJsZSBtYXhpbXVtKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkg
fHwgc3RkOjppc2luZih4KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJhbmdl
RXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlLCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0pKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHggPSB0cnVuYyh4KTsKICAgICBpZiAoeCA8
IG1pbmltdW0gfHwgeCA+IG1heGltdW0pIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRl
LCByYW5nZUVycm9yU3RyaW5nKHgsIG1pbmltdW0sIG1heGltdW0pKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBtYXhp
bXVtKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICByZXR1cm4geDsKQEAgLTQ3NSw2
ICs0ODQsOSBAQCBzdHJ1Y3QgSW50VHlwZUxpbWl0czx1aW50MTZfdD4gewogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUsIEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NpZ25lZDxU
Pjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25seSBiZSB1
c2VkIGZvciBzaWduZWQgaW50ZWdyYWwgdHlwZXMiKTsKIAogICAgIHR5cGVkZWYgSW50VHlwZUxp
bWl0czxUPiBMaW1pdHNUcmFpdDsKQEAgLTQ4Nyw3ICs0OTksNyBAQCBzdGF0aWMgaW5saW5lIFQg
dG9TbWFsbGVySW50KEV4ZWNTdGF0ZSYgCiAgICAgICAgIGNhc2UgTm9ybWFsQ29udmVyc2lvbjoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVuZm9yY2VSYW5nZToKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENsYW1w
OgogICAgICAgICAgICAgcmV0dXJuIGQgPCBMaW1pdHNUcmFpdDo6bWluVmFsdWUgPyBMaW1pdHNU
cmFpdDo6bWluVmFsdWUgOiBMaW1pdHNUcmFpdDo6bWF4VmFsdWU7CkBAIC01MjEsNiArNTMzLDkg
QEAgc3RhdGljIGlubGluZSBUIHRvU21hbGxlckludChFeGVjU3RhdGUmIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiBzdGF0aWMgaW5saW5lIFQgdG9TbWFsbGVyVUludChFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24gY29uZmlndXJh
dGlvbikKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc191bnNpZ25l
ZDxUPjo6dmFsdWUgJiYgc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFsdWUsICJTaG91bGQgb25seSBi
ZSB1c2VkIGZvciB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlcyIpOwogCiAgICAgdHlwZWRlZiBJbnRU
eXBlTGltaXRzPFQ+IExpbWl0c1RyYWl0OwpAQCAtNTMzLDcgKzU0OCw3IEBAIHN0YXRpYyBpbmxp
bmUgVCB0b1NtYWxsZXJVSW50KEV4ZWNTdGF0ZSYKICAgICAgICAgY2FzZSBOb3JtYWxDb252ZXJz
aW9uOgogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGQpOwogICAgICAgICBjYXNl
IEVuZm9yY2VSYW5nZToKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICBjYXNlIENsYW1wOgogICAgICAgICAgICAgcmV0dXJuIExpbWl0c1RyYWl0
OjptYXhWYWx1ZTsKQEAgLTc2Miw2ICs3NzcsOSBAQCBET01XaW5kb3cmIGZpcnN0RE9NV2luZG93
KEV4ZWNTdGF0ZSogZXhlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCwgU2VjdXJpdHlS
ZXBvcnRpbmdPcHRpb24gcmVwb3J0aW5nT3B0aW9uKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
ICghdGFyZ2V0RG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNzcyLDcgKzc5
MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5BY2Nlc3NEb2N1bWVudChKU0MKIAogICAgIHN3
aXRjaCAocmVwb3J0aW5nT3B0aW9uKSB7CiAgICAgY2FzZSBUaHJvd1NlY3VyaXR5RXJyb3I6Ci0g
ICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHRhcmdldERvY3VtZW50LT5kb21XaW5k
b3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CisgICAgICAgIHRo
cm93U2VjdXJpdHlFcnJvcigqc3RhdGUsIHNjb3BlLCB0YXJnZXREb2N1bWVudC0+ZG9tV2luZG93
KCktPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZSkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIExvZ1NlY3VyaXR5RXJyb3I6CiAgICAgICAgIHByaW50RXJyb3JNZXNzYWdl
Rm9yRnJhbWUodGFyZ2V0RG9jdW1lbnQtPmZyYW1lKCksIHRhcmdldERvY3VtZW50LT5kb21XaW5k
b3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlKSk7CkBAIC03OTksOSAr
ODE3LDkgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVAogICAgIHJl
dHVybiB0YXJnZXQgJiYgY2FuQWNjZXNzRG9jdW1lbnQoc3RhdGUsICZ0YXJnZXQtPmRvY3VtZW50
KCksIExvZ1NlY3VyaXR5RXJyb3IpOwogfQogICAgIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRo
cm93VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdGhyb3dUeXBlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGVycm9yTWVzc2Fn
ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgZXJyb3JNZXNz
YWdlKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXJndW1lbnRNdXN0QmUoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnRO
YW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUp
CkBAIC04MzYsNzUgKzg1NCw3NSBAQCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihK
U0M6OkV4CiAgICAgY29udGV4dC5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiRGVwcmVjYXRlZCBhdHRlbXB0IHRvIHNl
dCBwcm9wZXJ0eSAnIiwgYXR0cmlidXRlTmFtZSwgIicgb24gYSBub24tIiwgaW50ZXJmYWNlTmFt
ZSwgIiBvYmplY3QuIikpOwogfQogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBtZXNzYWdlKQordm9pZCB0aHJvd05vdFN1cHBv
cnRlZEVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwg
Y29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlvbigp
KTsKICAgICBTdHJpbmcgbWVzc2FnZVN0cmluZyhtZXNzYWdlKTsKLSAgICBzdGF0ZS52bSgpLnRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBP
UlRFRF9FUlIsICZtZXNzYWdlU3RyaW5nKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBz
Y29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgTk9UX1NVUFBPUlRFRF9FUlIsICZtZXNz
YWdlU3RyaW5nKSk7CiB9CiAKLXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCit2b2lkIHRocm93SW52YWxpZFN0YXRl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25z
dCBjaGFyKiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghc3RhdGUuaGFkRXhjZXB0aW9uKCkpOwog
ICAgIFN0cmluZyBtZXNzYWdlU3RyaW5nKG1lc3NhZ2UpOwotICAgIHN0YXRlLnZtKCkudGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRF
X0VSUiwgJm1lc3NhZ2VTdHJpbmcpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVET01FeGNlcHRpb24oJnN0YXRlLCBJTlZBTElEX1NUQVRFX0VSUiwgJm1lc3NhZ2VT
dHJpbmcpKTsKIH0KIAotdm9pZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIHRocm93U2VjdXJpdHlFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIXN0YXRlLmhhZEV4Y2VwdGlvbigpKTsKLSAgICBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwg
U0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29w
ZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZzdGF0ZSwgU0VDVVJJVFlfRVJSLCBtZXNzYWdlKSk7CiB9
CiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFy
Z3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVmFsdWVzKQorSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3Qg
Y2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpCiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFwcGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxk
ZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwgZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBm
dW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgib25lIG9mOiAiKTsKICAg
ICBidWlsZGVyLmFwcGVuZChleHBlY3RlZFZhbHVlcyk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKCZzdGF0ZSwgc2NvcGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5h
bWUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBhcmd1
bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIqIGludGVyZmFj
ZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwg
YXJndW1lbnROYW1lLCBpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiYSBmdW5jdGlvbiIpOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KCZzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cigmc3RhdGUsIHNjb3BlLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1KU0M6OkVuY29kZWRK
U1ZhbHVlIHRocm93QXJndW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCB1bnNp
Z25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBj
aGFyKiBleHBlY3RlZFR5cGUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCB1bnNp
Z25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVudE5hbWUsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBj
aGFyKiBleHBlY3RlZFR5cGUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgIGFw
cGVuZEFyZ3VtZW50TXVzdEJlKGJ1aWxkZXIsIGFyZ3VtZW50SW5kZXgsIGFyZ3VtZW50TmFtZSwg
ZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiYW4gaW5zdGFuY2Ugb2YgIik7CiAgICAgYnVpbGRlci5hcHBlbmQoZXhwZWN0ZWRU
eXBlKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJp
bmcoKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBzY29wZSwgYnVpbGRl
ci50b1N0cmluZygpKTsKIH0KIAotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUpCit2b2lkIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZSIp
KTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiSW52YWxp
ZCBBcnJheSBlbGVtZW50IHR5cGUiKSk7CiB9CiAKLXZvaWQgdGhyb3dBdHRyaWJ1dGVUeXBlRXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25z
dCBjaGFyKiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFR5cGUpCit2b2lkIHRo
cm93QXR0cmlidXRlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKQogewotICAgIHRocm93VHlwZUVycm9y
KHN0YXRlLCBtYWtlU3RyaW5nKCJUaGUgIiwgaW50ZXJmYWNlTmFtZSwgJy4nLCBhdHRyaWJ1dGVO
YW1lLCAiIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICIsIGV4cGVjdGVkVHlwZSkp
OworICAgIHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIsIGlu
dGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBp
bnN0YW5jZSBvZiAiLCBleHBlY3RlZFR5cGUpKTsKIH0KIAotSlNDOjpFbmNvZGVkSlNWYWx1ZSB0
aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQorSlNDOjpFbmNv
ZGVkSlNWYWx1ZSB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lKQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJnN0
YXRlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoaW50ZXJmYWNlTmFt
ZSwgIiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxh
YmxlIikpKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKCZzdGF0ZSwgbWFrZVN0cmluZyhpbnRlcmZhY2VOYW1lLCAiIGNvbnN0cnVj
dG9yIGFzc29jaWF0ZWQgZXhlY3V0aW9uIGNvbnRleHQgaXMgdW5hdmFpbGFibGUiKSkpOwogfQog
Ci12b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQordm9p
ZCB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJWYWx1ZSBpcyBub3QgYSBzZXF1ZW5jZSIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVmFsdWUgaXMgbm90IGEgc2VxdWVuY2UiKSk7CiB9CiAKLXZv
aWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSkKK3ZvaWQgdGhyb3dO
b25GaW5pdGVUeXBlRXJyb3IoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVGhlIHByb3Zp
ZGVkIHZhbHVlIGlzIG5vbi1maW5pdGUiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJUaGUgcHJvdmlkZWQgdmFsdWUgaXMgbm9uLWZpbml0ZSIpKTsK
IH0KIAogU3RyaW5nIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGNvbnN0IGNoYXIqIGludGVy
ZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCkBAIC05MTIsMTQgKzkzMCwxNCBA
QCBTdHJpbmcgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoY29uc3QgCiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgZ2V0
dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpOwog
fQogCi1KU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmli
dXRlTmFtZSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBpbnRl
cmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKCZzdGF0ZSwgbWFrZUdldHRlclR5cGVFcnJvck1lc3NhZ2UoaW50ZXJmYWNl
TmFtZSwgYXR0cmlidXRlTmFtZSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUsIG1ha2VHZXR0ZXJUeXBlRXJyb3JNZXNzYWdlKGludGVyZmFjZU5hbWUsIGF0dHJp
YnV0ZU5hbWUpKTsKIH0KIAotYm9vbCB0aHJvd1NldHRlclR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0
ZU5hbWUpCitib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogYXR0cmlidXRlTmFtZSkKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgbWFrZVN0
cmluZygiVGhlICIsIGludGVyZmFjZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOworICAg
IHRocm93VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgbWFrZVN0cmluZygiVGhlICIsIGludGVyZmFj
ZU5hbWUsICcuJywgYXR0cmlidXRlTmFtZSwgIiBzZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtOTI4LDkgKzk0Niw5IEBAIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29uc3Qg
Y2gKICAgICByZXR1cm4gbWFrZVN0cmluZygiQ2FuIG9ubHkgY2FsbCAiLCBpbnRlcmZhY2VOYW1l
LCAnLicsIGZ1bmN0aW9uTmFtZSwgIiBvbiBpbnN0YW5jZXMgb2YgIiwgaW50ZXJmYWNlTmFtZSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFt
ZSkKK0VuY29kZWRKU1ZhbHVlIHRocm93VGhpc1R5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3Rh
dGUsIG1ha2VUaGlzVHlwZUVycm9yTWVzc2FnZShpbnRlcmZhY2VOYW1lLCBmdW5jdGlvbk5hbWUp
KTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlLCBtYWtlVGhpc1R5cGVF
cnJvck1lc3NhZ2UoaW50ZXJmYWNlTmFtZSwgZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHZvaWQgY2Fs
bEZ1bmN0aW9uV2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTT2JqZWN0JiB0aGlzT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpAQCAtOTU1
LDcgKzk3Myw5IEBAIHZvaWQgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3Q6OnZpc2kKIAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yIikpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNvbnN0cnVjdG9yIHJl
cXVpcmVzICduZXcnIG9wZXJhdG9yIikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMywyNSArMTEzLDI1IEBAIERPTVdpbmRv
dyYgZmlyc3RET01XaW5kb3coSlNDOjpFeGVjU3RhdGUKIFdFQkNPUkVfRVhQT1JUIEpTQzo6RW5j
b2RlZEpTVmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpOwogCi12b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25z
dCBjaGFyKiBtZXNzYWdlKTsKLXZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpOwotdm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVF
cnJvcihKU0M6OkV4ZWNTdGF0ZSYpOwotdm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJp
YnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7Ci1XRUJDT1JFX0VYUE9SVCB2b2lk
IHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLVdFQkNPUkVfRVhQT1JU
IGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBjaGFyKiBp
bnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKLVdFQkNPUkVfRVhQT1JU
IHZvaWQgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmKTsKLXZvaWQgdGhy
b3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
LQotV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJl
RW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3Qg
Y2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOwotSlND
OjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4
ZWNTdGF0ZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFt
ZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUpOwotV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3Qg
Y2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRUeXBlKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2
YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSk7
Cit2b2lkIHRocm93Tm90U3VwcG9ydGVkRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93
U2NvcGUmLCBjb25zdCBjaGFyKiBtZXNzYWdlKTsKK3ZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIG1lc3NhZ2Up
Owordm9pZCB0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
VGhyb3dTY29wZSYpOwordm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6VGhyb3dTY29wZSYsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNo
YXIqIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRo
cm93U2NvcGUmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgdGhyb3dO
b25GaW5pdGVUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmKTsKK3Zv
aWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNW
YWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpU
aHJvd1Njb3BlJiwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnRO
YW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0
aW9uTmFtZSwgY29uc3QgY2hhciogZXhwZWN0ZWRWYWx1ZXMpOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
VGhyb3dTY29wZSYsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUpOworV0VCQ09SRV9FWFBPUlQgSlNDOjpFbmNvZGVkSlNWYWx1ZSB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgdW5zaWduZWQg
YXJndW1lbnRJbmRleCwgY29uc3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbkludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgY29uc3QgY2hhciog
ZXhwZWN0ZWRUeXBlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dDb25zdHJ1Y3RvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpU
aHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSk7CiAKIFN0cmluZyBtYWtlR2V0
dGVyVHlwZUVycm9yTWVzc2FnZShjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFy
KiBhdHRyaWJ1dGVOYW1lKTsKIFN0cmluZyBtYWtlVGhpc1R5cGVFcnJvck1lc3NhZ2UoY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKLVdFQkNP
UkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1
dGVOYW1lKTsKLVdFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlw
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lKTsKK1dFQkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUg
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlRocm93U2NvcGUmLCBj
b25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKK1dF
QkNPUkVfRVhQT1JUIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dUaGlzVHlwZUVycm9yKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwg
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lKTsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1
cmUqIGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6
Q2xhc3NJbmZvKik7CiBXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1
Y3R1cmUoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKik7CkBAIC00OTAsOSArNDkwLDEyIEBAIGlubGluZSBpbnQzMl90IGZpbml0ZUludDMy
VmFsdWUoSlNDOjpKU1YKIC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2JqZWN0IGlzIGEg
c2VxdWVuY2UgdHlwZSBwZXIgc2VjdGlvbiA0LjEuMTMgb2YgdGhlIFdlYklETCBzcGVjLgogaW5s
aW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlND
OjpKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogeworICAgIEpTQzo6Vk0mIHZtID0g
ZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICgh
b2JqZWN0KSB7Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAg
IHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTUwMSw3ICs1MDQsNyBAQCBpbmxpbmUgSlNDOjpKU09iamVjdCog
dG9KU1NlcXVlbmNlKEpTQzo6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGxl
bmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5
cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzE4LDI1ICs3MjEsMzMg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZG91YgogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZl
QXJyYXkoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBK
U0M6OlZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dT
ZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcihl
eGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFQ+PigpOwogICAgIH0K
IAogICAgIFZlY3RvcjxSZWZQdHI8VD4+IHJlc3VsdDsKLSAgICBmb3JFYWNoSW5JdGVyYWJsZSgm
ZXhlYywgdmFsdWUsIFsmcmVzdWx0XShKU0M6OlZNJiwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0M6OkpTVmFsdWUganNWYWx1ZSkgeworICAgIGZvckVhY2hJbkl0ZXJhYmxlKCZleGVjLCB2YWx1
ZSwgWyZyZXN1bHRdKEpTQzo6Vk0mIHZtLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlKSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgICAgICBpZiAoanNWYWx1ZS5pbmhlcml0cyhKU1Q6OmluZm8oKSkpCiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKEpTVDo6dG9XcmFwcGVkKGpzVmFsdWUpKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGhyb3dBcnJheUVsZW1lbnRUeXBlRXJyb3IoKnN0YXRlKTsKKyAg
ICAgICAgICAgIHRocm93QXJyYXlFbGVtZW50VHlwZUVycm9yKCpzdGF0ZSwgc2NvcGUpOwogICAg
IH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3Rv
cjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKSB7Ci0g
ICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHRocm93U2VxdWVu
Y2VUeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1
Y3Rvci5oCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgotICog
IENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDUsNyArNDYsOSBAQCBwcml2YXRlOgogCiAgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsVGhyb3dUeXBlRXJyb3Io
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgewotICAgICAgICBKU0M6OnRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgSlND
OjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgICAgIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiSWxsZWdhbCBjb25zdHJ1Y3RvciIpKTsKICAgICAgICAgcmV0dXJuIEpTQzo6
SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNOdWxsKCkpOwogICAgIH0KIApAQCAtMjI2LDggKzIyOSwx
MCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpFCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQnVpbHRpbkNv
bnN0cnVjdG9yPEpTQ2xhc3M+OjpjYWxsQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoIW9i
amVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250
ZXh0VW5hdmFpbGFibGVFcnJvcihzdGF0ZSwgaW5mbygpLT5jbGFzc05hbWUpOworICAgICAgICBy
ZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVy
cm9yKHN0YXRlLCBzY29wZSwgaW5mbygpLT5jbGFzc05hbWUpOwogICAgIHJldHVybiBjYWxsQ29u
c3RydWN0b3Ioc3RhdGUsICpvYmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnQuaAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDkgKzcz
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBFbmFibGVJZkZsb2EKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUPiBpbmxpbmUgVCogY29udmVydFdyYXBwZXJUeXBl
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJc051bGxhYmxlIGlz
TnVsbGFibGUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBUKiBvYmplY3QgPSBKU1Q6OnRvV3Jh
cHBlZCh2YWx1ZSk7CiAgICAgaWYgKCFvYmplY3QgJiYgKGlzTnVsbGFibGUgPT0gSXNOdWxsYWJs
ZTo6Tm8gfHwgIXZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpKQotICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAg
ICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0yNzUsOSArMjc3LDExIEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBD
b252ZXJ0ZXI8VCwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2lu
dDxUPjo6dmFsdWU+Ojp0eXBlPiA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewogICAgIHN0YXRpYyBU
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3Vs
ZEFsbG93Tm9uRmluaXRlIGFsbG93KQogICAgIHsKKyAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0
ZS52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS50b051bWJlcigmc3RhdGUpOwogICAgICAgICBp
ZiAoYWxsb3cgPT0gU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vICYmIFVOTElLRUxZKCFzdGQ6Omlz
ZmluaXRlKG51bWJlcikpKQotICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICAgICAgdGhyb3dOb25GaW5pdGVUeXBlRXJyb3Ioc3RhdGUsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KG51bWJlcik7CiAgICAgfQogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUl0ZXJhdG9yLmgJKHJldmlzaW9uIDIw
NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2Fu
b24sIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzMCw5ICsxMzEsMTIgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBpdGVyYXRvckZvckVh
Y2goSlNDOgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBpdGVyYXRvckNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEl0ZXJhdGlvbktpbmQga2lu
ZCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQogeworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBh
dXRvIHdyYXBwZXIgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcmFwcGVyKj4oc3RhdGUudGhpc1Zh
bHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlcikpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3Ioc3RhdGUsIEpTV3JhcHBlcjo6aW5mbygpLT5jbGFzc05hbWUsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHNjb3Bl
LCBKU1dyYXBwZXI6OmluZm8oKS0+Y2xhc3NOYW1lLCBwcm9wZXJ0eU5hbWUpOwogICAgIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QgPSAqd3JhcHBlci0+Z2xvYmFsT2JqZWN0KCk7CiAg
ICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKEpTRE9NSXRlcmF0b3I8SlNXcmFwcGVyPjo6
Y3JlYXRlKGdsb2JhbE9iamVjdC52bSgpLCBnZXRET01TdHJ1Y3R1cmU8SlNET01JdGVyYXRvcjxK
U1dyYXBwZXI+PihnbG9iYWxPYmplY3Qudm0oKSwgZ2xvYmFsT2JqZWN0KSwgKndyYXBwZXIsIGtp
bmQpKTsKIH0KQEAgLTE4MCw5ICsxODQsMTIgQEAgYXBwZW5kRm9yRWFjaEFyZ3VtZW50cyhKU0M6
OkV4ZWNTdGF0ZSYgcwogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBpdGVyYXRvckZvckVhY2goSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gd3JhcHBlciA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyYXBwZXIqPihzdGF0ZS50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKFVOTElLRUxZKCF3cmFwcGVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cihzdGF0ZSwgSlNXcmFwcGVyOjppbmZvKCktPmNsYXNzTmFtZSwgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIEpTV3JhcHBlcjo6
aW5mbygpLT5jbGFzc05hbWUsIHByb3BlcnR5TmFtZSk7CiAKICAgICBKU0M6OkpTVmFsdWUgY2Fs
bGJhY2sgPSBzdGF0ZS5hcmd1bWVudCgwKTsKICAgICBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUuYXJndW1lbnQoMSk7CkBAIC0xOTAsNyArMTk3LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBpdGVyYXRvckZvckVhY2goSlNDOgogICAgIEpTQzo6Q2FsbERhdGEgY2FsbERhdGE7CiAgICAg
SlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxE
YXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAKICAgICBhdXRvIGl0ZXJhdG9yID0gd3JhcHBlci0+
d3JhcHBlZCgpLmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgd2hpbGUgKGF1dG8gdmFsdWUgPSBpdGVy
YXRvci5uZXh0KCkpIHsKQEAgLTIyNiw5ICsyMzMsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTRE9NSXRl
cmF0b3I8SlNXcmFwcGVyPjo6bgogdGVtcGxhdGU8dHlwZW5hbWUgSlNXcmFwcGVyPgogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTRE9NSXRlcmF0b3JQcm90b3R5cGU8SlNXcmFw
cGVyPjo6bmV4dChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBhdXRvIGl0ZXJhdG9yID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NSXRlcmF0b3I8SlNX
cmFwcGVyPio+KHN0YXRlLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpdGVyYXRvcikKLSAgICAg
ICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKHN0YXRlLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVyYXRvciBvYmplY3QiKSkp
OworICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Ioc3Rh
dGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBjYWxsIG5leHQoKSBvbiBhIG5vbi1JdGVy
YXRvciBvYmplY3QiKSkpOwogCiAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGl0ZXJh
dG9yLT5uZXh0KCpzdGF0ZSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw2ICs3NSw5IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1dlYktp
dCgKIAogc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsb3RSZXN0cmljdGVk
QWNjZXNzKEpTRE9NV2luZG93KiB0aGlzT2JqZWN0LCBGcmFtZSogZnJhbWUsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90LCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8vIFdlIGRvbid0IHdhbnQg
YW55IHByb3BlcnRpZXMgb3RoZXIgdGhhbiAiY2xvc2UiIGFuZCAiY2xvc2VkIiBvbiBhIGZyYW1l
bGVzcyB3aW5kb3cKICAgICAvLyAoaS5lLiBvbmUgd2hvc2UgcGFnZSBnb3QgY2xvc2VkLCBvciB3
aG9zZSBpZnJhbWUgZ290IHJlbW92ZWQpLgogICAgIC8vIEZJWE1FOiBUaGlzIGhhbmRsaW5nIGZv
ciBmcmFtZWxlc3Mgd2luZG93cyBkdXBsaWNhdGVzIHNpbWlsYXIgYmVoYXZpb3VyIGZvciBjcm9z
cy1vcmlnaW4KQEAgLTEzNSw3ICsxMzgsNyBAQCBzdGF0aWMgYm9vbCBqc0RPTVdpbmRvd0dldE93
blByb3BlcnR5U2xvCiAgICAgICAgIC8vIEZvciBhbnkgb3RoZXIgZW50cmllcyBpbiB0aGUgc3Rh
dGljIHByb3BlcnR5IHRhYmxlLCBkZW55IGFjY2Vzcy4gKEVhcmx5IHJldHVybiBhbHNvIHByZXZl
bnRzCiAgICAgICAgIC8vIG5hbWVkIGdldHRlciBmcm9tIHJldHVybmluZyBmcmFtZXMgd2l0aCBt
YXRjaGluZyBuYW1lcyAtIHRoaXMgc2VlbXMgYSBsaXR0bGUgcXVlc3Rpb25hYmxlLCBzZWUKICAg
ICAgICAgLy8gRklYTUUgY29tbWVudCBvbiBwcm90b3R5cGUgc2VhcmNoIGJlbG93LikKLSAgICAg
ICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB0aHJv
d1NlY3VyaXR5RXJyb3IoKmV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBzbG90
LnNldFVuZGVmaW5lZCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNDksNyAr
MTUyLDcgQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVy
cm9yTWVzc2FnZSk7CisgICAgdGhyb3dTZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJyb3JN
ZXNzYWdlKTsKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMjMwLDYgKzIzMyw5IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5
SW4KIAogYm9vbCBKU0RPTVdpbmRvdzo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTRE9NV2luZG93Kj4oY2VsbCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQzLDcgKzI0OSw3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKICAgICAgICAgICAgICAgICByZXR1cm4g
cHV0UmVzdWx0OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAg
IHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgdGhyb3dT
ZWN1cml0eUVycm9yKCpleGVjLCBzY29wZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtNDM0LDggKzQ0MCwxMSBAQCBpbmxpbmUgSlNWYWx1ZSBEaWFs
b2dIYW5kbGVyOjpyZXR1cm5WYWx1CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERp
YWxvZyhFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBTdHJpbmcgdXJsU3RyaW5n
ID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjaygmc3RhdGUsIHN0YXRlLmFy
Z3VtZW50KDApKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCkBAIC00NTUsOCArNDY0
LDExIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhFeGUKIAogc3RhdGlj
IEpTVmFsdWUgaGFuZGxlUG9zdE1lc3NhZ2UoRE9NV2luZG93JiBpbXBsLCBFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291
bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CiAKICAgICBNZXNzYWdlUG9ydEFycmF5IG1lc3NhZ2VQb3J0czsKICAg
ICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyczsKQEAgLTUwMiw4ICs1MTQsMTEgQEAgSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoRXhlY1N0YQogCiBKU1ZhbHVlIEpTRE9NV2lu
ZG93OjpzZXRUaW1lb3V0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBz
dGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5ID0gd3JhcHBlZCgpLmRvY3Vt
ZW50KCkgPyB3cmFwcGVkKCkuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgOiBu
dWxscHRyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNj
aGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGNv
bnRlbnRTZWN1cml0eVBvbGljeSk7CkBAIC01MjQsOCArNTM5LDExIEBAIEpTVmFsdWUgSlNET01X
aW5kb3c6OnNldFRpbWVvdXQoRXhlY1N0YXQKIAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6c2V0SW50
ZXJ2YWwoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB3cmFwcGVkKCkuZG9jdW1lbnQoKSA/IHdy
YXBwZWQoKS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSA6IG51bGxwdHI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gU2NoZWR1bGVkQWN0
aW9uOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKS0+d29ybGQoKSwgY29udGVudFNlY3Vy
aXR5UG9saWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
Q3VlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksMTAgKzQ5LDEzIEBA
IHZvaWQgSlNEYXRhQ3VlOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0YXQKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlJiBleGVjKQogewor
ICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0
ZWRUaGlzKTsKICAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhl
YykpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUoZXhl
Yy51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcigmZXhlYykpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLmhhZEV4Y2VwdGlvbigpKSkKQEAgLTY0LDEzICs2NywxMyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlm
ICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCAiRGF0YUN1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9y
KGV4ZWMsIHNjb3BlLCAiRGF0YUN1ZSIpOwogCiAgICAgU3RyaW5nIHR5cGU7CiAjaWYgRU5BQkxF
KERBVEFDVUVfVkFMVUUpCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpID4gMykgewogICAg
ICAgICBpZiAoIWV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykuaXNTdHJpbmcoKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDMsICJ0eXBlIiwgIkRhdGFD
dWUiLCBudWxscHRyLCAiRE9NU3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMywgInR5cGUiLCAiRGF0YUN1ZSIsIG51bGxwdHIs
ICJET01TdHJpbmciKTsKICAgICAgICAgdHlwZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMyku
Z2V0U3RyaW5nKCZleGVjKTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTc5
LDkgKzE3OSwxMiBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0CiAK
IHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSwgUmVmUHRyPERPTVdpbmRvdz4mIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAg
ICBhdXRvKiB3aW5kb3cgPSBKU0RPTVdpbmRvdzo6dG9XcmFwcGVkKCpzdGF0ZSwgdmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghd2luZG93KSAmJiAhdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCAiRGljdGlvbmFyeSBtZW1iZXIgaXMg
bm90IG9mIHR5cGUgV2luZG93Iik7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAiRGljdGlvbmFyeSBtZW1iZXIgaXMgbm90IG9mIHR5cGUgV2luZG93Iik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgcmVzdWx0ID0gd2luZG93OwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAwOSwgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzMCwxMiArMTMwLDE1IEBAIEpTVmFsdWUg
SlNEb2N1bWVudDo6YXBwZW5kKEV4ZWNTdGF0ZSYgc3QKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogSlNWYWx1ZSBKU0RvY3VtZW50OjpjcmVhdGVUb3VjaExpc3QoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gdG91Y2hMaXN0ID0gVG91Y2hMaXN0OjpjcmVhdGUo
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGUuYXJndW1lbnRDb3VudCgpOyAr
K2kpIHsKICAgICAgICAgYXV0byogaXRlbSA9IEpTVG91Y2g6OnRvV3JhcHBlZChzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudChpKSk7CiAgICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgaSwgInRvdWNo
ZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRvdWNoIikpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBz
Y29wZSwgaSwgInRvdWNoZXMiLCAiRG9jdW1lbnQiLCAiY3JlYXRlVG91Y2hMaXN0IiwgIlRvdWNo
IikpOwogCiAgICAgICAgIHRvdWNoTGlzdC0+YXBwZW5kKCppdGVtKTsKICAgICB9CkBAIC0xNDUs
OCArMTQ4LDExIEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6Y3JlYXRlVG91Y2hMaXN0KEV4ZWMKIAog
SlNWYWx1ZSBKU0RvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENv
dW50KCkgPCA0KSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKCZzdGF0ZSkpOwogICAgIGF1dG8gY29udGV4dElkID0gc3RhdGUudW5jaGVja2VkQXJn
dW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsMTcgKzQzLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0ZpbGUoRXhlY1N0YXRlJiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1
Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gY29uc3RydWN0b3ItPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiB0
aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoZXhl
YywgIkZpbGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkZpbGUiKTsKICAgICBBU1NF
UlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAogICAgIEpTVmFsdWUgYXJnID0gZXhlYy5hcmd1
bWVudCgwKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDAsICJmaWxlQml0cyIsICJGaWxlIiwgbnVs
bHB0ciwgInNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAwLCAiZmlsZUJpdHMiLCAiRmlsZSIsIG51bGxwdHIsICJzZXF1ZW5jZSIp
OwogCiAgICAgdW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKICAgICBKU09iamVjdCogYmxv
YlBhcnRzID0gdG9KU1NlcXVlbmNlKGV4ZWMsIGFyZywgYmxvYlBhcnRzTGVuZ3RoKTsKQEAgLTYz
LDcgKzY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKUwogCiAg
ICAgYXJnID0gZXhlYy5hcmd1bWVudCgxKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIDEsICJmaWxlbmFtZSIs
ICJGaWxlIiwgbnVsbHB0ciwgIkRPTVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcihleGVjLCBzY29wZSwgMSwgImZpbGVuYW1lIiwgIkZpbGUiLCBudWxscHRy
LCAiRE9NU3RyaW5nIik7CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmcudG9XVEZTdHJpbmco
JmV4ZWMpLnJlcGxhY2UoJy8nLCAnOicpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQpA
QCAtNzYsNyArNzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
CiAgICAgaWYgKCFhcmcuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBKU09iamVjdCog
ZmlsZVByb3BlcnR5QmFnT2JqZWN0ID0gYXJnLmdldE9iamVjdCgpOwogICAgICAgICBpZiAoIWZp
bGVQcm9wZXJ0eUJhZ09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKGV4ZWMsIDIsICJvcHRpb25zIiwgIkZpbGUiLCBudWxscHRyLCAiRmlsZVByb3BlcnR5
QmFnIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCBz
Y29wZSwgMiwgIm9wdGlvbnMiLCAiRmlsZSIsIG51bGxwdHIsICJGaWxlUHJvcGVydHlCYWciKTsK
IAogICAgICAgICAvLyBDcmVhdGUgdGhlIGRpY3Rpb25hcnkgd3JhcHBlciBmcm9tIHRoZSBpbml0
aWFsaXplciBvYmplY3QuCiAgICAgICAgIEpTRGljdGlvbmFyeSBkaWN0aW9uYXJ5KCZleGVjLCBm
aWxlUHJvcGVydHlCYWdPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIw
NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb25D
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDQsOCArMTA0LDExIEBAIGJvb2wgSlNIVE1MQWxs
Q29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGUKIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9u
OjppdGVtKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgp
LnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIFN0cmluZyBhcmd1bWVu
dCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAg
aWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoKmFyZ3VtZW50LmltcGwo
KSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNFbGVtZW50
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2gg
TW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtNzEsOCArNzEsMTEgQEAgc3RhdGljIHZvaWQgZ2V0M0RDb250ZXh0QXR0cmli
dXRlcyhFeGVjUwogCiBKU1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZh
cyA9IHdyYXBwZWQoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVuY2hl
Y2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CkBAIC05NCw4ICs5NywxMSBAQCBK
U1ZhbHVlIEpTSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQoCiAKIEpTVmFsdWUgSlNIVE1M
Q2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQoRXhlY1N0YXRlJiBzdGF0ZSkK
IHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOwogCiAgICAgSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcyA9IHdyYXBwZWQoKTsK
ICAgICBjb25zdCBTdHJpbmcmIGNvbnRleHRJZCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDAp
LnRvV1RGU3RyaW5nKCZzdGF0ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDA5LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTUyLDYgKzE1Miw5IEBAIHN0YXRpYyBEb2N1bWVu
dCogZmluZENhbGxpbmdEb2N1bWVudChFeGUKIAogSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6b3Bl
bihFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgLy8gRm9yIGNvbXBhdGli
aWxpdHkgd2l0aCBvdGhlciBicm93c2VycywgcGFzcyBvcGVuIGNhbGxzIHdpdGggbW9yZSB0aGFu
IDIgcGFyYW1ldGVycyB0byB0aGUgd2luZG93LgogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50
KCkgPiAyKSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB3cmFwcGVkKCkuZnJhbWUoKSkg
ewpAQCAtMTYxLDcgKzE2NCw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om9wZW4oRXhlY1N0
YXRlJiAKICAgICAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IDo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsK
ICAgICAgICAgICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTQzo6Y2FsbCgmc3RhdGUsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIHdyYXBwZXIsIEFyZ0xpc3QoJnN0YXRlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMzAgKzQzLDMy
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNIVE1MRWxlbWVudChFeGVjU3Rh
dGUmIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nh
c3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKICAgICBBU1NFUlQoanND
b25zdHJ1Y3Rvcik7CiAKICAgICBhdXRvKiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVj
LCAiSFRNTEVsZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRF
eGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcihleGVjLCBzY29wZSwgIkhUTUxFbGVtZW50
Iik7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CiAKICAgICBhdXRvKiB3aW5kb3cg
PSBkb2N1bWVudC5kb21XaW5kb3coKTsKICAgICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgibmV3LnRhcmdldCBpcyBub3Qg
YSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgaXMg
bm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IiKSk7CiAKICAgICBhdXRvKiBy
ZWdpc3RyeSA9IHdpbmRvdy0+Y3VzdG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAgICAgaWYgKCFyZWdp
c3RyeSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJh
bCgibmV3LnRhcmdldCBpcyBub3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciIp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxp
dGVyYWwoIm5ldy50YXJnZXQgaXMgbm90IGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3IiKSk7CiAKLSAgICBWTSYgdm0gPSBleGVjLnZtKCk7CiAgICAgSlNWYWx1ZSBuZXdUYXJnZXRW
YWx1ZSA9IGV4ZWMudGhpc1ZhbHVlKCk7CiAgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IG5ld1Rh
cmdldFZhbHVlLmdldE9iamVjdCgpOwogICAgIGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSByZWdp
c3RyeS0+ZmluZEludGVyZmFjZShuZXdUYXJnZXQpOwogICAgIGlmICghZWxlbWVudEludGVyZmFj
ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
bmV3LnRhcmdldCBkb2VzIG5vdCBkZWZpbmUgYSBjdXN0b20gZWxlbWVudCIpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIm5ldy50
YXJnZXQgZG9lcyBub3QgZGVmaW5lIGEgY3VzdG9tIGVsZW1lbnQiKSk7CiAKICAgICBpZiAoIWVs
ZW1lbnRJbnRlcmZhY2UtPmlzVXBncmFkaW5nRWxlbWVudCgpKSB7CiAgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOwpAQCAtODQsNyArODYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTCiAKICAgICBFbGVt
ZW50KiBlbGVtZW50VG9VcGdyYWRlID0gZWxlbWVudEludGVyZmFjZS0+bGFzdEVsZW1lbnRJbkNv
bnN0cnVjdGlvblN0YWNrKCk7CiAgICAgaWYgKCFlbGVtZW50VG9VcGdyYWRlKSB7Ci0gICAgICAg
IHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgaW5zdGFu
dGlhdGUgYSBjdXN0b20gZWxlbWVudCBpbnNpZGUgaXRzIG93biBjb25zdHJjdXRvciBkdXJpbmcg
dXBncmFkZXMiKSk7CisgICAgICAgIHRocm93SW52YWxpZFN0YXRlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgaW5zaWRl
IGl0cyBvd24gY29uc3RyY3V0b3IgZHVyaW5nIHVwZ3JhZGVzIikpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTU2LDggKzU2LDExIEBAIGJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbjo6bmFtZUcKIAogSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1l
ZEl0ZW0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCku
dGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IG5hbWVkSXRlbXMoc3RhdGUsIHRoaXMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUp
KSk7CiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBqc051bGwoKSA6IHZhbHVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9t
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1
dEVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
NSw1NCArMzUsNzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTSFRNTElucHV0
RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlm
ICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUp
OwogCiAgICAgcmV0dXJuIGpzTnVtYmVyKGlucHV0LnNlbGVjdGlvblN0YXJ0KCkpOwogfQogCiB2
b2lkIEpTSFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uU3RhcnQoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQm
IGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQot
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIHNjb3BlKTsKIAogICAgIGlucHV0LnNldFNlbGVjdGlvblN0YXJ0KHZhbHVlLnRvSW50
MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25F
bmQoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1
dEVsZW1lbnQmIGlucHV0ID0gd3JhcHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVj
dGlvbigpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzTnVt
YmVyKGlucHV0LnNlbGVjdGlvbkVuZCgpKTsKIH0KIAogdm9pZCBKU0hUTUxJbnB1dEVsZW1lbnQ6
OnNldFNlbGVjdGlvbkVuZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSFRNTElucHV0RWxlbWVudCYgaW5wdXQgPSB3cmFwcGVkKCk7CiAgICAg
aWYgKCFpbnB1dC5jYW5IYXZlU2VsZWN0aW9uKCkpCi0gICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaW5w
dXQuc2V0U2VsZWN0aW9uRW5kKHZhbHVlLnRvSW50MzIoJnN0YXRlKSk7CiB9CiAKIEpTVmFsdWUg
SlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25EaXJlY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSkg
Y29uc3QKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gd3Jh
cHBlZCgpOwogICAgIGlmICghaW5wdXQuY2FuSGF2ZVNlbGVjdGlvbigpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwg
aW5wdXQuc2VsZWN0aW9uRGlyZWN0aW9uKCkpOwogfQogCiB2b2lkIEpTSFRNTElucHV0RWxlbWVu
dDo6c2V0U2VsZWN0aW9uRGlyZWN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQo
KTsKICAgICBpZiAoIWlucHV0LmNhbkhhdmVTZWxlY3Rpb24oKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTEsMTIgKzEwOSwxNSBAQCB2b2lkIEpTSFRN
TElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uRGlyCiAKIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVt
ZW50OjpzZXRTZWxlY3Rpb25SYW5nZShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAg
ICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWlucHV0LmNh
bkhhdmVTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlu
dCBzdGFydCA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoJnN0YXRlKTsKICAg
ICBpbnQgZW5kID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3Bw
CShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hpc3Rv
cnlDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NSw5ICs1NSwxMiBAQCBKU1ZhbHVlIEpTSGlz
dG9yeTo6c3RhdGUoRXhlY1N0YXRlJiBzdGF0CiAKIEpTVmFsdWUgSlNIaXN0b3J5OjpwdXNoU3Rh
dGUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGF1dG8gYXJnQ291bnQg
PSBzdGF0ZS5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKFVOTElLRUxZKGFyZ0NvdW50IDwgMikp
Ci0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKIAogICAgIGF1dG8gaGlzdG9yeVN0YXRlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoJnN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSwgMCwgMCk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtODYsOSArODksMTIgQEAgSlNWYWx1ZSBKU0hpc3Rv
cnk6OnB1c2hTdGF0ZShFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTSGlzdG9yeTo6cmVwbGFjZVN0
YXRlKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBhdXRvIGFyZ0NvdW50
ID0gc3RhdGUuYXJndW1lbnRDb3VudCgpOwogICAgIGlmIChVTkxJS0VMWShhcmdDb3VudCA8IDIp
KQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0
YXRlKSk7CiAKICAgICBhdXRvIGhpc3RvcnlTdGF0ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKCZzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCksIDAsIDApOwogICAgIGlm
IChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSURCRGF0YWJhc2VDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQkRhdGFiYXNlQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWljaGFl
bCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC00Nyw4ICs0OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEpTVmFsdWUgSlNJ
REJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBT
dHJpbmcgbmFtZSA9IHN0YXRlLmFyZ3VtZW50KDApLnRvU3RyaW5nKCZzdGF0ZSktPnZhbHVlKCZz
dGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNTYsNyArNjAsNyBAQCBK
U1ZhbHVlIEpTSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlCiAKICAgICBKU1ZhbHVlIG9w
dGlvbnNWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDEpOwogICAgIGlmICghb3B0aW9uc1ZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkgJiYgIW9wdGlvbnNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiTm90IGFuIG9iamVjdC4iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsICJOb3QgYW4gb2JqZWN0LiIpOwog
CiAgICAgSURCS2V5UGF0aCBrZXlQYXRoOwogICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGZhbHNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0
LTIwMDgsIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtNDYsMTAgKzQ2LDEzIEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU0lt
YWdlQ29uc3RydWN0b3I6OnAKIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0ltYWdlQ29u
c3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIEpTSW1hZ2VDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU0ltYWdlQ29u
c3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGpz
Q29uc3RydWN0b3ItPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3Ioc3RhdGUsICJJbWFn
ZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJy
b3Ioc3RhdGUsICJJbWFnZSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZh
aWxhYmxlIikpOwogCiAgICAgLy8gQ2FsbGluZyB0b0pTIG9uIHRoZSBkb2N1bWVudCBjYXVzZXMg
dGhlIEpTIGRvY3VtZW50IHdyYXBwZXIgdG8gYmUKICAgICAvLyBhZGRlZCB0byB0aGUgd2luZG93
IG9iamVjdC4gVGhpcyBpcyBkb25lIHRvIGVuc3VyZSB0aGF0IEpTRG9jdW1lbnQ6OnZpc2l0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMb2Nh
dGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBib29sIEpTTG9jYXRpb246OmdldE93blByb3BlcnR5U2xvdERlbGVnYXRl
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgRnJhbWUqIGZyYW1lID0gd3JhcHBlZCgpLmZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwpA
QCAtNTUsMTMgKzU4LDE2IEBAIGJvb2wgSlNMb2NhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVs
ZWcKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdGhyb3dTZWN1cml0eUVycm9y
KCpleGVjLCBtZXNzYWdlKTsKKyAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIHNjb3BlLCBt
ZXNzYWdlKTsKICAgICBzbG90LnNldFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIEpTTG9jYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVz
dWx0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgcHV0UmVzdWx0ID0gZmFsc2U7CiAgICAgRnJhbWUq
IGZyYW1lID0gd3JhcHBlZCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTc4LDcgKzg0
LDcgQEAgYm9vbCBKU0xvY2F0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIAogICAgIC8vIGJ1
dCBub3Qgd2hlbiBhc3NpZ25pbmcgdGhlIGluZGl2aWR1YWwgcGllY2VzLCBzaW5jZSB0aGF0IG1p
Z2h0IGluYWR2ZXJ0ZW50bHkKICAgICAvLyBkaXNjbG9zZSBvdGhlciBwYXJ0cyBvZiB0aGUgb3Jp
Z2luYWwgbG9jYXRpb24uCiAgICAgaWYgKHByb3BlcnR5TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaHJlZikgewotICAgICAgICB0aHJvd1NlY3VyaXR5RXJyb3IoKmV4ZWMsIGVycm9yTWVz
c2FnZSk7CisgICAgICAgIHRocm93U2VjdXJpdHlFcnJvcigqZXhlYywgc2NvcGUsIGVycm9yTWVz
c2FnZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmljZXND
dXN0b20uY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw4ICszNTgs
MTEgQEAgc3RhdGljIHZvaWQgcGFyc2VDb25zdHJhaW50cyhjb25zdCBEaWN0aQogCiBKU1ZhbHVl
IEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjpkZWNvZGUodGhyb3dWTUVycm9yKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRv
IGNvbnN0cmFpbnRzRGljdGlvbmFyeSA9IERpY3Rpb25hcnkoJnN0YXRlLCBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSwxMCArNDEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBK
U0M6OkpTVmFsdWUgSlNNZWRpYVN0cmVhbVRyYWNrOjpnZXRTZXR0aW5ncyhFeGVjU3RhdGUmIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS50aGlz
VmFsdWUoKTsKICAgICBKU01lZGlhU3RyZWFtVHJhY2sqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTTWVkaWFTdHJlYW1UcmFjayo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd1RoaXNUeXBl
RXJyb3Ioc3RhdGUsICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
ICJNZWRpYVN0cmVhbVRyYWNrIiwgImdldFNldHRpbmdzIikpOwogCiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKQEAgLTEwMiwxMCArMTA1LDEzIEBAIHN0YXRpYyBKU1ZhbHVl
IGNhcGFiaWxpdHlWYWx1ZShjb25zdCBDYXAKIAogSlNDOjpKU1ZhbHVlIEpTTWVkaWFTdHJlYW1U
cmFjazo6Z2V0Q2FwYWJpbGl0aWVzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLnRoaXNWYWx1ZSgpOwogICAgIEpTTWVkaWFT
dHJlYW1UcmFjayogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNNZWRpYVN0cmVhbVRyYWNr
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93VGhpc1R5cGVFcnJvcihzdGF0ZSwgIk1lZGlhU3Ry
ZWFtVHJhY2siLCAiZ2V0U2V0dGluZ3MiKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNv
ZGUodGhyb3dUaGlzVHlwZUVycm9yKHN0YXRlLCBzY29wZSwgIk1lZGlhU3RyZWFtVHJhY2siLCAi
Z2V0U2V0dGluZ3MiKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlP
YmplY3QoJnN0YXRlKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU5LDYgKzU5LDkgQEAgSlNDOjpK
U1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKAogCiB2b2lkIGZpbGxNZXNzYWdlUG9y
dEFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBNZXNzYWdl
UG9ydEFycmF5JiBwb3J0QXJyYXksIEFycmF5QnVmZmVyQXJyYXkmIGFycmF5QnVmZmVycykKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIC8vIENvbnZlcnQgZnJvbSB0aGUgcGFzc2VkLWluIEpTIGFycmF5
LWxpa2Ugb2JqZWN0IHRvIGEgTWVzc2FnZVBvcnRBcnJheS4KICAgICAvLyBBbHNvIHZhbGlkYXRl
cyB0aGUgZWxlbWVudHMgcGVyIHNlY3Rpb25zIDQuMS4xMyBhbmQgNC4xLjE1IG9mIHRoZSBXZWJJ
REwgc3BlYyBhbmQgc2VjdGlvbiA4LjMuMyBvZiB0aGUgSFRNTDUgc3BlYy4KICAgICBpZiAodmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgewpAQCAtOTUsNyArOTgsNyBAQCB2b2lkIGZpbGxNZXNz
YWdlUG9ydEFycmF5KEpTQzo6RXhlY1N0YXRlCiAgICAgICAgICAgICBpZiAoUmVmUHRyPEFycmF5
QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIodmFsdWUpKQogICAgICAgICAgICAg
ICAgIGFycmF5QnVmZmVycy5hcHBlbmQoV1RGTW92ZShhcnJheUJ1ZmZlcikpOwogICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmgJKHJldmlzaW9uIDIwNTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC01MCw4ICs1MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBoYW5kbGVQb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFQqIGltcGwpCiAgICAgeworICAgICAgICBKU0M6
OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgp
IDwgMSkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkgcG9ydEFycmF5
OwogICAgICAgICBBcnJheUJ1ZmZlckFycmF5IGFycmF5QnVmZmVyQXJyYXk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6ZGVjCiAKIHZvaWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNp
c2lvblBvaW50KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKICAgICB1aW50OF90IG5hdGl2ZVZhbHVlIHsgY29udmVydDx1aW50OF90PihzdGF0ZSwgdmFs
dWUsIEVuZm9yY2VSYW5nZSkgfTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTc0LDcgKzc3LDcgQEAgdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldERlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb25Qb2lu
dCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOworICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvblBvaW50IHZhbHVl
LiIsIG5hdGl2ZVZhbHVlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB0b0pTVmFsdWUo
RGVjaXNpb24gZGVjaXNpb24pCkBAIC05MSw2ICs5NCw5IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSB0b0pTVmFsdWUoRGVjaXNpb24KIAogc3RhdGljIGlubGluZSBEZWNpc2lvbiB0b0RlY2lzaW9u
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUu
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICB1
aW50OF90IG5hdGl2ZVZhbHVlIHsgY29udmVydDx1aW50OF90PihzdGF0ZSwgdmFsdWUsIEVuZm9y
Y2VSYW5nZSkgfTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBEZWNpc2lvbjo6QWxsb3c7CkBAIC0xMDIsNyArMTA4LDcgQEAgc3RhdGljIGlubGluZSBEZWNp
c2lvbiB0b0RlY2lzaW9uKEV4ZWNTdAogICAgICAgICByZXR1cm4gZGVjaXNpb247CiAgICAgfQog
Ci0gICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEg
dmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFsdWUpKTsKKyAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHNjb3BlLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNp
b24gdmFsdWUuIiwgbmF0aXZlVmFsdWUpKTsKICAgICByZXR1cm4gRGVjaXNpb246OkFsbG93Owog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01v
ZHVsZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMyw2ICsxMDMsOSBAQCBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6CiAKIEpTQzo6SlNWYWx1ZSBKU01vZHVsZUxv
YWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6
OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUpCiB7CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIC8v
IEZJWE1FOiBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBKU01vZHVsZVJlY29yZC4KICAgICAv
LyBPbmNlIHRoZSByZWZsZWN0aXZlIHBhcnQgb2YgdGhlIG1vZHVsZSBsb2FkZXIgaXMgc3VwcG9y
dGVkLCB3ZSB3aWxsIGhhbmRsZSBhcmJpdHJhcnkgdmFsdWVzLgogICAgIC8vIGh0dHBzOi8vd2hh
dHdnLmdpdGh1Yi5pby9sb2FkZXIvI3JlZ2lzdHJ5LXByb3RvdHlwZS1wcm92aWRlCkBAIC0xMTYs
MTAgKzExOSwxMCBAQCBKU0M6OkpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTCiAg
ICAgZWxzZSBpZiAobW9kdWxlS2V5VmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgc291cmNlVXJs
ID0gVVJMKFVSTCgpLCBhc1N0cmluZyhtb2R1bGVLZXlWYWx1ZSktPnZhbHVlKGV4ZWMpKTsKICAg
ICBlbHNlCi0gICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiTW9kdWxlIGtleSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKSk7CisgICAgICAgIHJl
dHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIk1vZHVs
ZSBrZXkgaXMgbm90IFN5bWJvbCBvciBTdHJpbmcuIikpOwogCiAgICAgaWYgKCFzb3VyY2VVcmwu
aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIk1vZHVsZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwuIikpOworICAgICAgICByZXR1
cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJNb2R1bGUg
a2V5IGlzIGFuIGludmFsaWQgVVJMLiIpKTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXZh
bHVhdGluZyBtb2R1bGUgY29kZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ0LDE5ICs0NSwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNNdXRhdGlvbk9ic2Vy
dmVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGV4ZWMuYXJndW1l
bnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcigmZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJmV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcigmZXhlYywgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7
CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS5nZXRP
YmplY3QoKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBpZiAoIW9iamVjdCB8fCBvYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpID09IENhbGxU
eXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAw
LCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZlciIsIG51bGxwdHIsICJNdXRhdGlvbkNhbGxi
YWNrIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCAwLCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZlciIsIG51bGxwdHIsICJNdXRhdGlvbkNh
bGxiYWNrIik7CiAKICAgICBET01Db25zdHJ1Y3Rvck9iamVjdCoganNDb25zdHJ1Y3RvciA9IGpz
Q2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMuY2FsbGVlKCkpOwogICAgIGF1dG8gY2Fs
bGJhY2sgPSBKU011dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpKTsKICAgICBKU09iamVjdCoganNPYnNlcnZlciA9IGFzT2JqZWN0KHRv
SlNOZXdseUNyZWF0ZWQoJmV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBNdXRh
dGlvbk9ic2VydmVyOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFjaykpKSk7CiAgICAgUHJpdmF0ZU5h
bWUgcHJvcGVydHlOYW1lOwotICAgIGpzT2JzZXJ2ZXItPnB1dERpcmVjdChqc0NvbnN0cnVjdG9y
LT5nbG9iYWxPYmplY3QoKS0+dm0oKSwgcHJvcGVydHlOYW1lLCBvYmplY3QpOworICAgIGpzT2Jz
ZXJ2ZXItPnB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCBvYmplY3QpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNPYnNlcnZlcik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5LTIw
MTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xMTIsMTMgKzExMiwxNiBAQCBib29sIEpTTm9kZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSCiAKIEpTVmFsdWUgSlNOb2RlOjppbnNlcnRCZWZvcmUoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgSlNWYWx1ZSBuZXdDaGlsZFZhbHVlID0g
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byogbmV3Q2hpbGQgPSBKU05vZGU6
OnRvV3JhcHBlZChuZXdDaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0
YXRlLCAwLCAibm9kZSIsICJOb2RlIiwgImluc2VydEJlZm9yZSIsICJOb2RlIikpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHRocm93QXJndW1lbnRUeXBlRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAibm9kZSIsICJOb2RlIiwgImluc2VydEJlZm9yZSIsICJOb2RlIikpOwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKFVOTElLRUxZKCF3cmFwcGVkKCkuaW5zZXJ0
QmVmb3JlKCpuZXdDaGlsZCwgSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSkpLCBlYykpKSB7CkBAIC0xMzIsMTYgKzEzNSwxOSBAQCBKU1ZhbHVlIEpTTm9kZTo6aW5z
ZXJ0QmVmb3JlKEV4ZWNTdGF0ZSYgCiAKIEpTVmFsdWUgSlNOb2RlOjpyZXBsYWNlQ2hpbGQoRXhl
Y1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS5h
cmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byogbmV3Q2hpbGQgPSBKU05vZGU6
OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgSlNWYWx1ZSBvbGRD
aGlsZFZhbHVlID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSk7CiAgICAgYXV0byogb2xkQ2hp
bGQgPSBKU05vZGU6OnRvV3JhcHBlZChvbGRDaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IW5ld0NoaWxkIHx8ICFvbGRDaGlsZCkpIHsKICAgICAgICAgaWYgKCFuZXdDaGlsZCkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0
ZSwgMCwgIm5vZGUiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAxLCAi
Y2hpbGQiLCAiTm9kZSIsICJyZXBsYWNlQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
IDAsICJub2RlIiwgIk5vZGUiLCAicmVwbGFjZUNoaWxkIiwgIk5vZGUiKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUs
IDEsICJjaGlsZCIsICJOb2RlIiwgInJlcGxhY2VDaGlsZCIsICJOb2RlIikpOwogICAgIH0KIAog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTU2LDEwICsxNjIsMTMgQEAgSlNWYWx1ZSBK
U05vZGU6OnJlcGxhY2VDaGlsZChFeGVjU3RhdGUmIAogCiBKU1ZhbHVlIEpTTm9kZTo6cmVtb3Zl
Q2hpbGQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgY2hp
bGRWYWx1ZSA9IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIGF1dG8qIGNoaWxkID0gSlNOb2RlOjp0
b1dyYXBwZWQoY2hpbGRWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjaGlsZCkpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgMCwg
ImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAiTm9kZSIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCBzY29wZSwgMCwg
ImNoaWxkIiwgIk5vZGUiLCAicmVtb3ZlQ2hpbGQiLCAiTm9kZSIpKTsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlZCgpLnJlbW92ZUNoaWxkKCpj
aGlsZCwgZWMpKSkgewpAQCAtMTczLDEwICsxODIsMTMgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92
ZUNoaWxkKEV4ZWNTdGF0ZSYgcwogCiBKU1ZhbHVlIEpTTm9kZTo6YXBwZW5kQ2hpbGQoRXhlY1N0
YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgbmV3Q2hpbGRWYWx1ZSA9
IHN0YXRlLmFyZ3VtZW50KDApOwogICAgIGF1dG8gbmV3Q2hpbGQgPSBKU05vZGU6OnRvV3JhcHBl
ZChuZXdDaGlsZFZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5ld0NoaWxkKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0aHJvd0FyZ3VtZW50VHlwZUVycm9yKHN0YXRlLCAwLCAi
bm9kZSIsICJOb2RlIiwgImFwcGVuZENoaWxkIiwgIk5vZGUiKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUodGhyb3dBcmd1bWVudFR5cGVFcnJvcihzdGF0ZSwgc2NvcGUsIDAsICJu
b2RlIiwgIk5vZGUiLCAiYXBwZW5kQ2hpbGQiLCAiTm9kZSIpKTsKIAogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIGlmIChVTkxJS0VMWSghd3JhcHBlZCgpLmFwcGVuZENoaWxkKCpuZXdD
aGlsZCwgZWMpKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDcg
KzQyLDkgQEAgdWludDE2X3QgSlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKE5vZGUqIAogewogICAg
IFJlZjxKU05vZGVGaWx0ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgSlNMb2NrSG9s
ZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CisgICAgVk0mIHZtID0gbV9k
YXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgRXhlY1N0YXRl
KiBzdGF0ZSA9IG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtNTQsNyArNTYsNyBAQCB1aW50MTZfdCBKU05vZGVG
aWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IG1fZGF0YS0+aW52
b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb25P
ck9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgImFjY2VwdE5vZGUiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICAv
LyBSZXRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgc3RhdGUtPnZtKCkudGhyb3dFeGNlcHRpb24o
c3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oc3RhdGUs
IHNjb3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6
OkZJTFRFUl9SRUpFQ1Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTYsMTAgKzk2LDEy
IEBAIEpTT2JqZWN0KiBwbHVnaW5TY3JpcHRPYmplY3QoRXhlY1N0YXRlKiAKICAgICAKIEVuY29k
ZWRKU1ZhbHVlIHBsdWdpbkVsZW1lbnRQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIEpTSFRNTEVsZW1lbnQqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTSFRNTEVsZW1lbnQqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0
aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIEpTT2JqZWN0KiBz
Y3JpcHRPYmplY3QgPSBwbHVnaW5TY3JpcHRPYmplY3QoZXhlYywgdGhpc09iamVjdCk7CiAgICAg
aWYgKCFzY3JpcHRPYmplY3QpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCShyZXZp
c2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM2LDE0ICszNywxOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBQdWJsaWMgSlMgUmVhZGFibGVTdHJlYW1SZWRlciBhbmQgUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3RvciBjYWxsYmFja3MuCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
cihFeGVjU3RhdGUmIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJmV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciBjb25zdHJ1Y3Rv
ciBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKKyAgICBWTSYgdm0gPSBleGVjLnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKCZleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyIGNvbnN0cnVjdG9yIHNob3VsZCBub3QgYmUgY2FsbGVkIGRp
cmVjdGx5IikpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpT
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYg
dm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIAogICAgIEpTUmVhZGFibGVTdHJlYW0qIHN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNS
ZWFkYWJsZVN0cmVhbSo+KGV4ZWMuYXJndW1lbnQoMCkpOwogICAgIGlmICghc3RyZWFtKQotICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCAwLCAic3RyZWFtIiwgIlJl
YWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0ciwgIlJlYWRhYmxlU3RyZWFtIik7CisgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAwLCAic3RyZWFtIiwg
IlJlYWRhYmxlU3RyZWFtUmVhZGVyIiwgbnVsbHB0ciwgIlJlYWRhYmxlU3RyZWFtIik7CiAKICAg
ICBKU1ZhbHVlIGpzRnVuY3Rpb24gPSBzdHJlYW0tPmdldCgmZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmZXhlYywgImdldFJlYWRlciIpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDcsMTMgKzQ4LDE2IEBAIEpTVmFsdWUgSlNTVkdMZW5ndGg6OnZhbHVlKEV4ZWNTdGF0ZSYg
c3QKIAogdm9pZCBKU1NWR0xlbmd0aDo6c2V0VmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICh3cmFwcGVkKCkuaXNSZWFkT25seSgp
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIE5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgIXZhbHVlLmlzTnVtYmVyKCkgJiYgIXZhbHVlLmlzQm9vbGVhbigp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzIs
NiArNzYsOSBAQCB2b2lkIEpTU1ZHTGVuZ3RoOjpzZXRWYWx1ZShFeGVjU3RhdGUmIHN0CiAKIEpT
VmFsdWUgSlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKEV4ZWNTdGF0ZSYgc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAod3JhcHBlZCgpLmlzUmVhZE9ubHkoKSkgewog
ICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlIpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTgwLDcgKzg3LDcgQEAgSlNW
YWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVQogICAgIFNWR0xlbmd0aCYgcG9k
SW1wID0gd3JhcHBlZCgpLnByb3BlcnR5UmVmZXJlbmNlKCk7CiAKICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSBz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1VJbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0
ZS5oYWRFeGNlcHRpb24oKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNp
b24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Nyw4ICs5NywxMSBAQCBKU1ZhbHVl
IEpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3luCiAKIEpTVmFsdWUgSlNXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRJbmRleGVkUGFyYW1ldGVyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAg
ICBWTSYgdm0gPSBleGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKGV4ZWMuYXJndW1lbnRDb3VudCgpICE9IDIpCi0gICAgICAgIHJl
dHVybiBleGVjLnZtKCkudGhyb3dFeGNlcHRpb24oJmV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmZXhlYywg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CiAKICAgICBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0ID0gd3JhcHBlZCgpOwogICAgIHVuc2lnbmVkIHBu
YW1lID0gZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZleGVjKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xNzAsOCArMTcwLDExIEBAIGVudW0gT2JqZWN0VHlwZSB7CiAKIHN0
YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIG9iaiwgRXhlY1N0YXRlJiBzdGF0ZSwgT2JqZWN0VHlwZSBvYmplY3RUeXBlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAyKQotICAgICAgICBy
ZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0
YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAg
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCA9IG9iai0+d3JhcHBlZCgpOwpAQCAtMjcwLDEzICsyNzMsMTYgQEAgdm9pZCBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpc2l0QQogCiBKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Z2V0QXR0YWNoZWRTaGFkZXJzKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJH
TFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYg
KCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
R0xTaGFkZXI+PiBzaGFkZXJzOwogICAgIGJvb2wgc3VjY2VlZCA9IGNvbnRleHQuZ2V0QXR0YWNo
ZWRTaGFkZXJzKHByb2dyYW0sIHNoYWRlcnMsIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTI5Myw4
ICsyOTksMTEgQEAgSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldAogCiBK
U1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0RXh0ZW5zaW9uKEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgp
IDwgMSkKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KCZzdGF0ZSkpOwogICAgIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQg
PSB3cmFwcGVkKCk7CiAgICAgY29uc3QgU3RyaW5nIG5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1
bWVudCgwKS50b1N0cmluZygmc3RhdGUpLT52YWx1ZSgmc3RhdGUpOwpAQCAtMzExLDggKzMyMCwx
MSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgIT0gMykKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CkBA
IC0zMzUsOCArMzQ3LDExIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpn
ZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFBhcmFtZXRlcihF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSAhPSAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigm
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCA9IHdyYXBwZWQoKTsKQEAgLTM1Mywx
NCArMzY4LDE3IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXQKIAog
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFByb2dyYW1QYXJhbWV0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVu
dENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24o
JnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAgICAgV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2Nv
cGUpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9J
bnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0zNzksMTMgKzM5NywxNiBAQCBKU1ZhbHVlIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0CiAKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJu
IHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwg
c2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQgPSB3cmFwcGVkKCk7CiAgICAgaWYgKCFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pbmhlcml0
cyhKU1dlYkdMU2hhZGVyOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwog
ICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBKU1dlYkdMU2hhZGVyOjp0b1dyYXBwZWQoc3RhdGUu
dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIHVuc2lnbmVkIHBuYW1lID0gc3RhdGUudW5jaGVj
a2VkQXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKQEAgLTQxNywxNyArNDM4LDIwIEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpnZXQKIAogSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVu
aWZvcm0oRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChzdGF0ZS5h
cmd1bWVudENvdW50KCkgIT0gMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNl
cHRpb24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogICAgIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQgPSB3cmFwcGVkKCk7CiAg
ICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gSlNXZWJHTFByb2dyYW06OnRvV3JhcHBlZChzdGF0
ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9ncmFtICYmICFzdGF0ZS51bmNo
ZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0
ZSwgc2NvcGUpOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IEpTV2ViR0xV
bmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAg
ICAgaWYgKCFsb2NhdGlvbiAmJiAhc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkuaXNVbmRlZmlu
ZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICBXZWJHTEdldElu
Zm8gaW5mbyA9IGNvbnRleHQuZ2V0VW5pZm9ybShwcm9ncmFtLCBsb2NhdGlvbiwgZWMpOwogICAg
IGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CkBAIC00ODgs
OCArNTEyLDExIEBAIHN0YXRpYyBib29sIGZ1bmN0aW9uRm9yVW5pZm9ybShEYXRhRnVuY3QKIAog
c3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIpCi0g
ICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSAwOwogICAgIGxv
bmcgaW5kZXggPSAtMTsKQEAgLTQ5Nyw3ICs1MjQsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRh
dGFGdW5jdGlvbmYoRGF0YUZ1CiAgICAgaWYgKGZ1bmN0aW9uRm9yVW5pZm9ybShmKSkgewogICAg
ICAgICBsb2NhdGlvbiA9IEpTV2ViR0xVbmlmb3JtTG9jYXRpb246OnRvV3JhcHBlZChzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICB9IGVsc2UKICAgICAgICAgaW5kZXggPSBzdGF0ZS51
bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludDMyKCZzdGF0ZSk7CiAgICAgCkBAIC01NDMsNyArNTcw
LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFGdQogICAgIAogICAg
IFZlY3RvcjxmbG9hdCwgNjQ+IGFycmF5OwogICAgIGlmICghdG9WZWN0b3Ioc3RhdGUsIHN0YXRl
LnVuY2hlY2tlZEFyZ3VtZW50KDEpLCBhcnJheSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29w
ZSk7CiAgICAgCiAgICAgc3dpdGNoIChmKSB7CiAgICAgY2FzZSBmX3VuaWZvcm0xdjoKQEAgLTU3
OCwxMiArNjA1LDE1IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uZihEYXRhRnUK
IAogc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdW5jdGlvblRvQ2FsbCBm
LCBKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpICE9IDIp
Ci0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3Rh
dGUpKTsKICAgICAKICAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSBKU1dlYkdM
VW5pZm9ybUxvY2F0aW9uOjp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIGlmICghbG9jYXRpb24gJiYgIXN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBzY29wZSk7CiAgICAgCiAgICAgUmVm
UHRyPEludDMyQXJyYXk+IHdlYkdMQXJyYXkgPSB0b0ludDMyQXJyYXkoc3RhdGUudW5jaGVja2Vk
QXJndW1lbnQoMSkpOwogICAgIApAQCAtNjEzLDcgKzY0Myw3IEBAIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZGF0YUZ1bmN0aW9uaShEYXRhRnUKICAgICAKICAgICBWZWN0b3I8aW50LCA2ND4gYXJyYXk7
CiAgICAgaWYgKCF0b1ZlY3RvcihzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSksIGFy
cmF5KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAKICAgICBzd2l0Y2ggKGYp
IHsKICAgICBjYXNlIGZfdW5pZm9ybTF2OgpAQCAtNjM4LDEyICs2NjgsMTUgQEAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25pKERhdGFGdQogCiBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRh
dGFGdW5jdGlvbk1hdHJpeChEYXRhRnVuY3Rpb25NYXRyaXhUb0NhbGwgZiwgSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogeworICAgIFZN
JiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSAhPSAzKQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAgICAgCiAg
ICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gSlNXZWJHTFVuaWZvcm1Mb2NhdGlv
bjo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIWxvY2F0
aW9uICYmICFzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIAogICAgIGJvb2wgdHJhbnNwb3NlID0g
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkudG9Cb29sZWFuKCZzdGF0ZSk7CiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtNjcxLDcgKzcwNCw3IEBAIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZGF0YUZ1bmN0aW9uTWF0cml4KEQKICAgICAKICAgICBWZWN0b3I8ZmxvYXQsIDY0PiBhcnJh
eTsKICAgICBpZiAoIXRvVmVjdG9yKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgyKSwg
YXJyYXkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogICAgIAogICAgIHN3aXRjaCAo
ZikgewogICAgIGNhc2UgZl91bmlmb3JtTWF0cml4MmZ2OgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXZWJLaXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0U3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw2ICs3Nyw5IEBAIHN0
YXRpYyBSZWZQdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVhdGVBbGcKIAogc3RhdGljIGJvb2wgY3J5
cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwg
Q3J5cHRvS2V5Rm9ybWF0JiByZXN1bHQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBTdHJpbmcga2V5
Rm9ybWF0U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJnN0YXRlKS0+dmFsdWUoJnN0YXRlKTsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg5
LDcgKzkyLDcgQEAgc3RhdGljIGJvb2wgY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoRQogICAg
IGVsc2UgaWYgKGtleUZvcm1hdFN0cmluZyA9PSAiandrIikKICAgICAgICAgcmVzdWx0ID0gQ3J5
cHRvS2V5Rm9ybWF0OjpKV0s7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJVbmtub3duIGtleSBmb3JtYXQiKSk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5rbm93biBrZXkgZm9ybWF0
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAt
OTcsOCArMTAwLDExIEBAIHN0YXRpYyBib29sIGNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKEUK
IAogc3RhdGljIGJvb2wgY3J5cHRvS2V5VXNhZ2VzRnJvbUpTVmFsdWUoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSwgQ3J5cHRvS2V5VXNhZ2UmIHJlc3VsdCkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTMyLDggKzEzOCwxMSBAQCBzdGF0aWMgYm9vbCBj
cnlwdG9LZXlVc2FnZXNGcm9tSlNWYWx1ZShFCiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlw
dG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNy
ZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTE0OSw3ICsxNTgsNyBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjplbmNyeXB0KEV4CiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBr
ZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsK
ICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICgh
a2V5LT5hbGxvd3MoQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0KSkgewogICAgICAgICB3cmFwcGVkKCku
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAnZW5j
cnlwdCciKSk7CkBAIC0xODUsOCArMTk0LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlw
dG86OmVuY3J5cHQoRXgKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChF
eGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50
Q291bnQoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3JpdGhtID0gY3JlYXRlQWxnb3JpdGht
RnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAo
IWFsZ29yaXRobSkgewpAQCAtMjAyLDcgKzIxNCw3IEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVD
cnlwdG86OmRlY3J5cHQoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtleSA9IEpTQ3J5cHRv
S2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwogICAgIGlmICgha2V5
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgaWYgKCFrZXktPmFsbG93cyhD
cnlwdG9LZXlVc2FnZURlY3J5cHQpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwg
QVNDSUlMaXRlcmFsKCJLZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICdkZWNyeXB0JyIpKTsKQEAg
LTIzNyw4ICsyNDksMTEgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGVjcnlwdChF
eAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMykKLSAg
ICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdvcml0aG1Gcm9tSlNWYWx1ZShzdGF0
ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghYWxnb3JpdGhtKSB7CkBA
IC0yNTQsNyArMjY5LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6c2lnbihFeGVj
UwogCiAgICAgUmVmUHRyPENyeXB0b0tleT4ga2V5ID0gSlNDcnlwdG9LZXk6OnRvV3JhcHBlZChz
dGF0ZS51bmNoZWNrZWRBcmd1bWVudCgxKSk7CiAgICAgaWYgKCFrZXkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBzY29wZSk7CiAKICAgICBpZiAoIWtleS0+YWxsb3dzKENyeXB0b0tleVVzYWdlU2ln
bikpIHsKICAgICAgICAgd3JhcHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1
c2FnZXMgZG8gbm90IGluY2x1ZGUgJ3NpZ24nIikpOwpAQCAtMjg5LDggKzMwNCwxMSBAQCBKU1Zh
bHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNTCiAKIEpTVmFsdWUgSlNXZWJLaXRT
dWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8IDQpCi0gICAgICAgIHJldHVybiBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIGF1dG8gYWxnb3Jp
dGhtID0gY3JlYXRlQWxnb3JpdGhtRnJvbUpTVmFsdWUoc3RhdGUsIHN0YXRlLnVuY2hlY2tlZEFy
Z3VtZW50KDApKTsKICAgICBpZiAoIWFsZ29yaXRobSkgewpAQCAtMzA2LDcgKzMyNCw3IEBAIEpT
VmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGUKIAogICAgIFJlZlB0cjxDcnlw
dG9LZXk+IGtleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1l
bnQoMSkpOwogICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0
YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAg
ICAgaWYgKCFrZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVZlcmlmeSkpIHsKICAgICAgICAgd3Jh
cHBlZCgpLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIktleSB1c2FnZXMgZG8gbm90IGluY2x1
ZGUgJ3ZlcmlmeSciKSk7CkBAIC0zNDcsOCArMzY1LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRTdWJ0
bGVDcnlwdG86OnZlcmlmeShFeGUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6ZGln
ZXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoc3RhdGUuYXJn
dW1lbnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRp
b24oJnN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKCZzdGF0ZSkpOwogCiAgICAgYXV0byBhbGdvcml0aG0gPSBjcmVhdGVBbGdv
cml0aG1Gcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAg
IGlmICghYWxnb3JpdGhtKSB7CkBAIC0zODksOCArNDEwLDExIEBAIEpTVmFsdWUgSlNXZWJLaXRT
dWJ0bGVDcnlwdG86OmRpZ2VzdChFeGUKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6
Z2VuZXJhdGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChz
dGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBhdXRvIGFsZ29yaXRobSA9IGNy
ZWF0ZUFsZ29yaXRobUZyb21KU1ZhbHVlKHN0YXRlLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KSk7CiAgICAgaWYgKCFhbGdvcml0aG0pIHsKQEAgLTQ0NSw2ICs0NjksOSBAQCBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjpnZW5lcmF0ZUtlCiAKIHN0YXRpYyB2b2lkIGltcG9ydEtleShF
eGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlwdG9PcGVyYXRp
b25EYXRhIGRhdGEsIFJlZlB0cjxDcnlwdG9BbGdvcml0aG0+IGFsZ29yaXRobSwgUmVmUHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlIGtleVVzYWdlcywgQ3J5cHRvQWxnb3JpdGhtOjpLZXlDYWxsYmFjayBjYWxs
YmFjaywgQ3J5cHRvQWxnb3JpdGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleVNlcmlhbGl6YXRpb24+
IGtleVNlcmlhbGl6YXRpb247CiAgICAgc3dpdGNoIChrZXlGb3JtYXQpIHsKICAgICBjYXNlIENy
eXB0b0tleUZvcm1hdDo6UmF3OgpAQCAtNDUzLDcgKzQ4MCw3IEBAIHN0YXRpYyB2b2lkIGltcG9y
dEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SldLOiB7
CiAgICAgICAgIFN0cmluZyBqd2tTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEuZmlyc3Qs
IGRhdGEuc2Vjb25kKTsKICAgICAgICAgaWYgKGp3a1N0cmluZy5pc051bGwoKSkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkpXSyBKU09OIHNlcmlh
bGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04IikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJKV0sgSlNPTiBzZXJpYWxpemF0aW9uIGlz
IG5vdCB2YWxpZCBVVEYtOCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBrZXlTZXJpYWxpemF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxKU0NyeXB0b0tleVNlcmlh
bGl6YXRpb25KV0s+KCZzdGF0ZSwgandrU3RyaW5nKTsKQEAgLTQ2Miw3ICs0ODksNyBAQCBzdGF0
aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgaW1wb3J0IikpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuc3VwcG9ydGVkIGtleSBm
b3JtYXQgZm9yIGltcG9ydCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcxLDcg
KzQ5OCw3IEBAIHN0YXRpYyB2b2lkIGltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICBP
cHRpb25hbDxDcnlwdG9BbGdvcml0aG1QYWlyPiByZWNvbmNpbGVkUmVzdWx0ID0ga2V5U2VyaWFs
aXphdGlvbi0+cmVjb25jaWxlQWxnb3JpdGhtKGFsZ29yaXRobS5nZXQoKSwgcGFyYW1ldGVycy5n
ZXQoKSk7CiAgICAgaWYgKCFyZWNvbmNpbGVkUmVzdWx0KSB7CiAgICAgICAgIGlmICghc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJ
TGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0
aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtleSBhcyBhcmd1bWVudCIpKTsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiQWxnb3JpdGhtIHNwZWNp
ZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRvIGltcG9ydEtl
eSBhcyBhcmd1bWVudCIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCkBAIC00ODAsNyArNTA3LDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5
KEV4ZWNTdGF0ZSYgc3RhdGUsIAogICAgIGFsZ29yaXRobSA9IHJlY29uY2lsZWRSZXN1bHQtPmFs
Z29yaXRobTsKICAgICBwYXJhbWV0ZXJzID0gcmVjb25jaWxlZFJlc3VsdC0+cGFyYW1ldGVyczsK
ICAgICBpZiAoIWFsZ29yaXRobSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFT
Q0lJTGl0ZXJhbCgiTmVpdGhlciBrZXkgbm9yIGZ1bmN0aW9uIGFyZ3VtZW50IGhhcyBjcnlwdG8g
YWxnb3JpdGhtIHNwZWNpZmllZCIpKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFz
IGNyeXB0byBhbGdvcml0aG0gc3BlY2lmaWVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKQEAgLTUwNSw4ICs1MzIsMTEgQEAgc3RhdGljIHZvaWQg
aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIAogCiBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5
cHRvOjppbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlm
IChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAzKQotICAgICAgICByZXR1cm4gc3RhdGUudm0oKS50
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRlLCBzY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBDcnlwdG9LZXlGb3JtYXQg
a2V5Rm9ybWF0OwogICAgIGlmICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpTVmFsdWUoc3RhdGUsIHN0
YXRlLmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CkBAIC01NjgsOCArNTk4LDExIEBAIEpTVmFs
dWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmltcG9ydEtleSgKIAogc3RhdGljIHZvaWQgZXhwb3J0
S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIGNvbnN0IENy
eXB0b0tleSYga2V5LCBDcnlwdG9BbGdvcml0aG06OlZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBD
cnlwdG9BbGdvcml0aG06OlZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCiB7CisgICAgVk0m
IHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBpZiAoIWtleS5leHRyYWN0YWJsZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJLZXkgaXMgbm90IGV4dHJhY3RhYmxlIikpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIktleSBpcyBu
b3QgZXh0cmFjdGFibGUiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU5MywxNSAr
NjI2LDE4IEBAIHN0YXRpYyB2b2lkIGV4cG9ydEtleShFeGVjU3RhdGUmIHN0YXRlLCAKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgQVNDSUlMaXRlcmFsKCJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiVW5z
dXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgZXhwb3J0IikpOwogICAgICAgICBicmVhazsKICAgICB9
CiB9CiAKIEpTVmFsdWUgSlNXZWJLaXRTdWJ0bGVDcnlwdG86OmV4cG9ydEtleShFeGVjU3RhdGUm
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRlLmFyZ3VtZW50Q291bnQoKSA8
IDIpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigm
c3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3JtYXQ7CiAgICAgaWYgKCFjcnlw
dG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJndW1lbnQoMCksIGtleUZvcm1h
dCkpIHsKQEAgLTYxMSw3ICs2NDcsNyBAQCBKU1ZhbHVlIEpTV2ViS2l0U3VidGxlQ3J5cHRvOjpl
eHBvcnRLZXkoCiAKICAgICBSZWZQdHI8Q3J5cHRvS2V5PiBrZXkgPSBKU0NyeXB0b0tleTo6dG9X
cmFwcGVkKHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKICAgICBpZiAoIWtleSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCks
IHByb21pc2VEZWZlcnJlZCk7CkBAIC02MzEsOCArNjY3LDExIEBAIEpTVmFsdWUgSlNXZWJLaXRT
dWJ0bGVDcnlwdG86OmV4cG9ydEtleSgKIAogSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6
d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKHN0YXRl
LmFyZ3VtZW50Q291bnQoKSA8IDQpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhj
ZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIENyeXB0b0tleUZvcm1hdCBrZXlGb3Jt
YXQ7CiAgICAgaWYgKCFjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShzdGF0ZSwgc3RhdGUuYXJn
dW1lbnQoMCksIGtleUZvcm1hdCkpIHsKQEAgLTY0MiwxMSArNjgxLDExIEBAIEpTVmFsdWUgSlNX
ZWJLaXRTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXgKIAogICAgIFJlZlB0cjxDcnlwdG9LZXk+IGtl
eSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQoc3RhdGUudW5jaGVja2VkQXJndW1lbnQoMSkpOwog
ICAgIGlmICgha2V5KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgc2NvcGUpOwogCiAgICAgUmVmUHRy
PENyeXB0b0tleT4gd3JhcHBpbmdLZXkgPSBKU0NyeXB0b0tleTo6dG9XcmFwcGVkKHN0YXRlLnVu
Y2hlY2tlZEFyZ3VtZW50KDIpKTsKICAgICBpZiAoIWtleSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IHNjb3BlKTsKIAogICAgIGlmICghd3JhcHBpbmdLZXktPmFsbG93cyhDcnlwdG9LZXlVc2FnZVdy
YXBLZXkpKSB7CiAgICAgICAgIHdyYXBwZWQoKS5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJL
ZXkgdXNhZ2VzIGRvIG5vdCBpbmNsdWRlICd3cmFwS2V5JyIpKTsKQEAgLTcwMCw4ICs3MzksMTEg
QEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6d3JhcEtleShFeAogCiBKU1ZhbHVlIEpT
V2ViS2l0U3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKwogICAgIGlmIChzdGF0ZS5hcmd1bWVudENvdW50KCkgPCA1KQotICAgICAgICByZXR1
cm4gc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKCZzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oJnN0YXRl
LCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CiAKICAgICBD
cnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0OwogICAgIGlmICghY3J5cHRvS2V5Rm9ybWF0RnJvbUpT
VmFsdWUoc3RhdGUsIHN0YXRlLmFyZ3VtZW50KDApLCBrZXlGb3JtYXQpKSB7CkBAIC03MTcsNyAr
NzU5LDcgQEAgSlNWYWx1ZSBKU1dlYktpdFN1YnRsZUNyeXB0bzo6dW53cmFwS2V5KAogCiAgICAg
UmVmUHRyPENyeXB0b0tleT4gdW53cmFwcGluZ0tleSA9IEpTQ3J5cHRvS2V5Ojp0b1dyYXBwZWQo
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMikpOwogICAgIGlmICghdW53cmFwcGluZ0tleSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHNjb3BlKTsKIAogICAgIGlmICghdW53cmFwcGluZ0tleS0+YWxs
b3dzKENyeXB0b0tleVVzYWdlVW53cmFwS2V5KSkgewogICAgICAgICB3cmFwcGVkKCkuZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiS2V5IHVzYWdlcyBkbyBub3QgaW5jbHVkZSAndW53cmFwS2V5
JyIpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckN1c3Rv
bS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMDksIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00NywxMCArNDcsMTMgQEAgSlNDOjpKU1ZhbHVl
IEpTV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTV29ya2VyKEV4ZWNTdGF0ZSYgZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8RE9NQ29uc3Ry
dWN0b3JPYmplY3QqPihleGVjLmNhbGxlZSgpKTsKIAogICAgIGlmICghZXhlYy5hcmd1bWVudENv
dW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKCZleGVjKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJmV4
ZWMsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmZXhlYykpOwogCiAgICAg
U3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmco
JmV4ZWMpOwogICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5j
cHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSwgMjAxMSwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTgwLDggKzgwLDExIEBAIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0
U2NyaXAKIAogSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoJnN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rp
b24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCktPndvcmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYg
KHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpAQCAtOTQsOCArOTcsMTEgQEAgSlNWYWx1ZSBKU1dvcmtl
ckdsb2JhbFNjb3BlOjpzZXRUaW1lb3V0KAogCiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGU6
OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiBzdGF0
ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoJnN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUpKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IFNjaGVkdWxlZEFjdGlvbjo6Y3JlYXRl
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIHdyYXBwZWQoKS5jb250ZW50U2VjdXJp
dHlQb2xpY3koKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDgsOSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oCiAKIEpTQzo6SlNWYWx1ZSBSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjppbnZva2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTT2JqZWN0JiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNDOjpK
U1ZhbHVlIHBhcmFtZXRlcikKIHsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKCZzdGF0ZSk7
CisgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxv
Y2sodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGF1dG8gZnVuY3Rpb24gPSBvYmplY3QuZ2V0KCZzdGF0ZSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKQpAQCAtNTUsNyArNTgsNyBAQCBKU0M6OkpTVmFsdWUgUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvCiAKICAgICBpZiAoIWZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkgewogICAgICAgICBpZiAo
IWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3Rh
dGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBwcm9wZXJ0
eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZz
dGF0ZSwgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwg
YSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKTsKICAgICAgICAgcmV0dXJuIEpTQzo6
anNVbmRlZmluZWQoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkocmV2aXNpb24gMjA1MTgzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQg
dGhyb3dTdGFja092ZXJmbG93KCkKICAgICB7Ci0gICAgICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKKyAgICAg
ICAgVk0mIHZtID0gbV9leGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKG1fZXhlYywgc2NvcGUsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKICAgICB9CiAKICAgICB2b2lkIGZhaWwo
KQpAQCAtMTU3MCw3ICsxNTcyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdGhyb3dWYWxpZGF0
aW9uRXJyb3IoKQogICAgIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKKyAgICAgICAgVk0mIHZtID0g
bV9leGVjLT52bSgpOworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgi
VW5hYmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwogICAgIH0KIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbiA8PSBDdXJyZW50VmVyc2lvbjsgfQpAQCAtMjc1
NiwxNSArMjc2MCwxOCBAQCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2Ny
CiAKIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjptYXliZVRocm93RXhjZXB0aW9uSWZTZXJp
YWxpemF0aW9uRmFpbGVkKEV4ZWNTdGF0ZSogZXhlYywgU2VyaWFsaXphdGlvblJldHVybkNvZGUg
Y29kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmIChjb2RlID09IFN1Y2Nlc3NmdWxseUNvbXBs
ZXRlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaCAoY29kZSkgewogICAgIGNh
c2UgU3RhY2tPdmVyZmxvd0Vycm9yOgotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CisgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFZhbGlkYXRpb25FcnJvcjoKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEYXRh
Q2xvbmVFcnJvcjoKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIERBVEFfQ0xPTkVfRVJS
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBHb29nbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTI2LDExICsxMjYs
MTIgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjbwogICAgIGluaXRT
Y3JpcHRJZk5lZWRlZCgpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU0M6OmV2YWx1
YXRlKGV4ZWMsIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2VyR2xvYmFsU2NvcGVX
cmFwcGVyLT5nbG9iYWxUaGlzKCksIHJldHVybmVkRXhjZXB0aW9uKTsKIAotICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgaWYgKChyZXR1cm5lZEV4Y2VwdGlvbiAmJiBpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24ocmV0dXJuZWRFeGNlcHRpb24pKSB8fCBpc1Rlcm1pbmF0aW5nRXhl
Y3V0aW9uKCkpIHsKICAgICAgICAgZm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTE0Myw3ICsxNDQsNyBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
KGNvCiAgICAgICAgIFN0cmluZyBzb3VyY2VVUkwgPSBzb3VyY2VDb2RlLnVybCgpLnN0cmluZygp
OwogICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBlcnJvcjsKICAgICAgICAgaWYgKG1f
d29ya2VyR2xvYmFsU2NvcGUtPnNhbml0aXplU2NyaXB0RXJyb3IoZXJyb3JNZXNzYWdlLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgZXJyb3IsIHNvdXJjZUNvZGUuY2FjaGVk
U2NyaXB0KCkpKSB7Ci0gICAgICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVF
cnJvcihleGVjLCBlcnJvck1lc3NhZ2UuaW1wbCgpKSk7CisgICAgICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlLmltcGwoKSkp
OwogICAgICAgICAgICAgcmV0dXJuZWRFeGNlcHRpb24gPSB2bS5leGNlcHRpb24oKTsKICAgICAg
ICAgICAgIHZtLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KQEAgLTE1Myw3ICsxNTQsOSBA
QCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvCiB2b2lkIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKQog
ewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIt
Pmdsb2JhbEV4ZWMoKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2Vw
dGlvbik7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2NoZWR1bGVFeGVjdXRp
b25UZXJtaW5hdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTkwNCw5ICs5MDQsMTEgQEAgc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlv
bkNvbgogCiAgICAgICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gJGNsYXNzTmFtZSBjb252ZXJ0
PCRjbGFzc05hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAgICAg
ICAkcmVzdWx0IC49ICJ7XG4iOworICAgICAgICAkcmVzdWx0IC49ICIgICAgVk0mIHZtID0gc3Rh
dGUudm0oKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRv
IHJlc3VsdCA9IHBhcnNlPCRjbGFzc05hbWU+KHN0YXRlLCB2YWx1ZSk7XG4iOwogICAgICAgICAk
cmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7XG4iOwotICAgICAgICAkcmVz
dWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7XG4iOworICAgICAgICAkcmVz
dWx0IC49ICIgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7XG4iOwog
ICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiB7IH07XG4iOwogICAgICAgICAkcmVz
dWx0IC49ICIgICAgfVxuIjsKICAgICAgICAgJHJlc3VsdCAuPSAiICAgIHJldHVybiByZXN1bHQu
dmFsdWUoKTtcbiI7CkBAIC0xMDA5LDExICsxMDExLDEzIEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25h
cnlJbXBsZW1lbnRhdGlvbkNvbnQKIAogICAgICAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+IE9w
dGlvbmFsPCRjbGFzc05hbWU+IGNvbnZlcnREaWN0aW9uYXJ5PCRjbGFzc05hbWU+KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ7XG4iOwor
ICAgICAgICAkcmVzdWx0IC49ICIgICAgVk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CisgICAgICAg
ICRyZXN1bHQgLj0gIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKSlcbiIgaWYgJGRlZmF1bHRWYWx1ZXM7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAg
cmV0dXJuICRjbGFzc05hbWUgeyAiIC4gJGRlZmF1bHRWYWx1ZXMgLiAiIH07XG4iIGlmICRkZWZh
dWx0VmFsdWVzOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byogb2JqZWN0ID0gdmFsdWUu
Z2V0T2JqZWN0KCk7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKCFv
YmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHtcbiI7Ci0gICAg
ICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTtcbiI7CisgICAg
ICAgICRyZXN1bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3Bl
KTtcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuIE51bGxvcHQ7XG4iOwog
ICAgICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIApAQCAtMTk0MSw2ICsxOTQ1LDkgQEAgc3Vi
IEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1YwogICAgIH0KICAgICBwdXNoKEBp
bXBsQ29udGVudCwgPDxFTkQpOyAgICAKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVf
dD4oJG1heEFyZ0NvdW50LCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKIEVORAogCkBAIC0yMDE1
LDkgKzIwMjIsOSBAQCBFTkQKICAgICB9CiAgICAgbXkgJG1pbkFyZ0NvdW50ID0gR2V0RnVuY3Rp
b25MZW5ndGgoJGZ1bmN0aW9uKTsKICAgICBpZiAoJG1pbkFyZ0NvdW50ID4gMCkgewotICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gYXJnc0NvdW50IDwgJG1pbkFyZ0NvdW50
ID8gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKQorICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gYXJnc0NvdW50IDwgJG1pbkFyZ0NvdW50ID8gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
IDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKQogICAgIH0gZWxzZSB7
Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTtcbiIpCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTtcbiIpCiAgICAgfQogICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI4MTAsNyArMjgxNyw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1Zh
bHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ7XG4iKTsKIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJB
TSh0aGlzVmFsdWUpO1xuIik7CiAKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0
aWMgfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CkBA
IC0yODI2LDcgKzI4MzUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJM
ZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIFwiJHZpc2li
bGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgfVxuIik7CiAgICAgICAgICAgICB9CkBAIC0zMDA3LDkgKzMwMTYsMTEgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJFbmNvZGVkSlNWYWx1ZSAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKVxuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIik7CiAKICAgICAg
ICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNl
T2JqZWN0In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTtcbiIpOwpAQCAtMzAyNiwxMCArMzAzNywx
MiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiYm9vbCAke2NvbnN0cnVjdG9yRnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWND
YXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAKQEAgLTMxMDksNiArMzEyMiw5IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
Ym9vbCAke3B1dEZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpXG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsiKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKSBp
ZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlz
U3RhdGljKSB7CkBAIC0zMTIxLDcgKzMxMzcsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJMZW5pZW50VGhpcyJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5h
bWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4i
KTsKICAgICAgICAgICAgIH0KQEAgLTMyMTAsNyArMzIyNiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoVU5MSUtFTFko
IW5hdGl2ZVZhbHVlKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCBcIiR2aXNp
YmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIsIFwiJHR5cGVcIik7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICB0aHJvd0F0dHJpYnV0
ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIs
IFwiJG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwpAQCAtMzIyOSw3ICszMjQ1LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgICAgIGlmICgkc2hv
dWxkUGFzc0J5UmVmZXJlbmNlKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVy
cm9yKCpzdGF0ZSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiLCBcIiR0eXBl
XCIpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHZpc2libGVJ
bnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIiwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTMzOTcsNiArMzQxMywxMCBAQCBFTkQKIAogICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisKICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNFUmVhY3Rpb25zIn0pIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRT
KVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxl
bWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7XG4iKTsKQEAgLTM3
MTYsNyArMzczNiw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pTT2JqZWN0In0p
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhp
cyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1RoaXMoc3RhdGUsIE5vdFN0
cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTtcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpO1xuIik7CiAgICAgICAg
IG15ICRjYXN0aW5nSGVscGVyID0gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QoJGludGVy
ZmFjZSk7CkBAIC0zNzMyLDcgKzM3NTIsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRo
aXMKICAgICAgICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdl
dFZpc2libGVJbnRlcmZhY2VOYW1lKCRpbnRlcmZhY2UpOwogICAgICAgICBteSAkZG9tRnVuY3Rp
b25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCBcIiRk
b21GdW5jdGlvbk5hbWVcIik7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6
aW5mbygpKTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CkBA
IC0zODAwLDcgKzM4MjAsNyBAQCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrCiAgICAg
aWYgKCRudW1NYW5kYXRvcnlQYXJhbXMgPj0gMSkKICAgICB7CiAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8ICRudW1N
YW5kYXRvcnlQYXJhbXMpKVxuIik7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7XG4iKTsKICAgICB9CiB9CiAKQEAgLTM5MjIsNyArMzk0Miw3IEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgaWYgKCFzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpLmlzT2JqZWN0KCkpXG4iKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwg
JGFyZ3VtZW50SW5kZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1
b3RlZEZ1bmN0aW9uTmFtZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxl
SW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lKTtcbiIpOwogICAgICAgICAgICAg
ICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKICAgICAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNh
bGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9PihzdGF0ZSwganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgkYXJndW1lbnRJbmRleCkpO1xuIik7CkBAIC0zOTM2LDcgKzM5NTYsNyBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+
YXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpLmlzT2JqZWN0KCkpKVxuIik7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgs
IFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFt
ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRx
dW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+
aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxi
YWNrRnVuY3Rpb24uaCIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgYXV0byAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tD
bGFzc05hbWV9PihzdGF0ZSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSksIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRl
eCkpO1xuIik7CkBAIC0zOTU0LDcgKzM5NzQsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9yICh1bnNpZ25l
ZCBpID0gJGFyZ3VtZW50SW5kZXgsIGNvdW50ID0gc3RhdGUtPmFyZ3VtZW50Q291bnQoKTsgaSA8
IGNvdW50OyArK2kpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgYXV0byogaXRlbSA9IEpTJHt0eXBlfTo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudChpKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIGlmICghaXRlbSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwg
aSwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25O
YW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCBpLCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRG
dW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTM5OTcsNyArNDAxNyw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
awogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBp
ZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVt
RXJyb3IoKnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJm
YWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
PCRjbGFzc05hbWU+KCkpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIk
aW5kZW50ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwiJHZpc2libGVJbnRlcmZh
Y2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8
JGNsYXNzTmFtZT4oKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRp
bmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVlLnZhbHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxW
YWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1c
biIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC00MDIxLDcgKzQwNDEsNyBAQCBzdWIgR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFt
ZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIpO1xuIik7CisgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAkYXJndW1lbnRJbmRleCwgXCIkbmFtZVwiLCBc
IiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBcIiR0eXBlXCIp
O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwog
ICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgICAgICB9
IGVsc2UgewpAQCAtNDA2Nyw3ICs0MDg3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAKICAgICAgICAgICAgIGlmICgkc2hvdWxkUGFzc0J5UmVmZXJlbmNlKSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsICRhcmd1bWVudEluZGV4LCBcIiRuYW1lXCIsIFwi
JHZpc2libGVJbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJHR5cGVcIik7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGFyZ3VtZW50SW5k
ZXgsIFwiJG5hbWVcIiwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIiwgJHF1b3RlZEZ1bmN0aW9u
TmFtZSwgXCIkdHlwZVwiKTtcbiIpOwogICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRpc1RlYXJP
ZmYgPyAiJG5hbWUtPnByb3BlcnR5UmVmZXJlbmNlKCkiIDogIiokbmFtZSI7CiAgICAgICAgICAg
ICB9CiAKQEAgLTUyNDMsMTQgKzUyNjMsMTYgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKIHRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6
Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0
byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRl
LT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGpzQ29uc3RydWN0b3IpOwogCiAgICAgaWYgKCFqc0Nv
bnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRl
LCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpOworICAgICAgICByZXR1cm4gdGhyb3dDb25z
dHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiKTsKIAogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAKICAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNTdHJpbmco
c3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTMy
Nyw2ICs1MzQ5LDkgQEAgRU5ECiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oc3RhdGUtPmNhbGxl
ZSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTtcbiIpOwogCkBAIC01MzU2LDE0ICs1MzgxLDE0IEBAIEVORAogICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0
KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0
dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJv
cigqc3RhdGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgifSwgIkRv
Y3VtZW50IikpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJEb2N1bWVudC5oIn0g
PSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImRvY3VtZW50
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVO
TElLRUxZKCFjb250ZXh0KSlcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0
VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIik7XG4i
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0
aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTtcbiIpOwogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTSW50ZXJmYWNlTmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50ZXJmYWNlTmFtZS5jcHAJKHJldmlzaW9uIDIwNTE4MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5h
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsMTggKzExNywyMiBAQCB2b2lkIEpTSW50ZXJm
YWNlTmFtZTo6ZGVzdHJveShKU0M6OkpTQ2VsCiAKIEVuY29kZWRKU1ZhbHVlIGpzSW50ZXJmYWNl
TmFtZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTSW50ZXJmYWNlTmFt
ZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU0ludGVyZmFjZU5hbWVQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFk
b21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTSW50ZXJmYWNlTmFtZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUt
PnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU0ludGVy
ZmFjZU5hbWVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNJbnRlcmZhY2VOYW1lUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTSW50
ZXJmYWNlTmFtZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMiArMTQyLDE0IEBA
IHZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpkZXN0cm95KEpTQzoKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RBY3RpdmVET01PYmplY3QiLCAiZXhjaXRpbmdB
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nQXR0ciIpOwogICAgIH0KICAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBj
YXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSwgVGhyb3dTZWN1cml0eUVycm9yKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTE1OSwxOCArMTYx
LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2kKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3QgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RB
Y3RpdmVET01PYmplY3RQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKQEAgLTE4NCwzMyArMTkwLDM5IEBAIEpTVmFsdWUgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0OjpnZXRDb25zdHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RB
Y3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGlu
Z0Z1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1bmN0aW9uIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVET01P
YmplY3Q6OmluZm8oKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCksIFRocm93U2Vj
dXJpdHlFcnJvcikpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gbmV4dENoaWxkID0gSlNOb2RlOjp0
b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIW5leHRDaGls
ZCkpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm5l
eHRDaGlsZCIsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgImV4Y2l0aW5nRnVuY3Rpb24iLCAiTm9k
ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsIDAsICJuZXh0Q2hpbGQiLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0Z1
bmN0aW9uIiwgIk5vZGUiKTsKICAgICBpbXBsLmV4Y2l0aW5nRnVuY3Rpb24oKm5leHRDaGlsZCk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RB
Y3RpdmVET01PYmplY3QiLCAicG9zdE1lc3NhZ2UiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBv
c3RNZXNzYWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RBY3RpdmVET01PYmplY3Q6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gbWVzc2FnZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxOCAr
MTIzLDIyIEBAIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsOSArMTIzLDEx
IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmYKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgY29uc3Ry
dWN0b3IgPSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0
cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwg
KmRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9i
amVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKICAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkg
dG8gZW5zdXJlIHJldXNpbmcgdGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0CiAgICAgZG9tT2Jq
ZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3Ry
dWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSB8IFJlYWRPbmx5KTsKQEAgLTEzNCwxMCArMTM2
LDEyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2kKIAogYm9vbCBz
ZXRKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCwxOCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3AKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3RvcgpAQCAtMTg1LDE0ICsxODksMTcgQEAgSlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlcjo6Z2V0Q29ucwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAiYW5vdGhl
ckZ1bmN0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXI6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyID0g
c3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTQg
KzczLDE2IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnMKIAogdGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChqc0NvbnN0
cnVjdG9yKTsKIAogICAgIGlmICghanNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIik7CisgICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiKTsKIAog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAKICAgICBBdG9taWNTdHJpbmcg
ZXZlbnRUeXBlID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+
dG9BdG9taWNTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQpAQCAtMTc5LDEyICsxODEsMTQgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9y
OjpkZXN0cm95KEpTQwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0
cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RFdmVu
dENvbnN0cnVjdG9yIiwgImF0dHIxIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuYXR0cjEoKSk7CkBA
IC0xOTQsMTIgKzE5OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9y
QXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50Q29uc3RydWN0
b3IiLCAiYXR0cjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMigpKTsKQEAgLTIxMCwxMiAr
MjE2LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHQKICNpZiBF
TkFCTEUoU1BFQ0lBTF9FVkVOVCkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0
b3JBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0
dHIzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyMygp
KTsKQEAgLTIyNiwxOCArMjM0LDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBz
ZXRKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsK
LSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2MCwxOCArMTYwLDIyIEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5
U2wKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0RXZlbnRUYXJn
ZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXRQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAt
MTk4LDE0ICsyMDIsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0
bwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90
eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0RXZlbnRUYXJnZXQqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEV2ZW50
VGFyZ2V0IiwgIml0ZW0iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0RXZlbnRUYXJnZXQiLCAiaXRlbSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gaW5kZXggPSBjb252ZXJ0PHVpbnQzMl90
Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2
aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMiArMTM0LDE0IEBA
IHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWwKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RFeGNlcHRpb24qPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RFeGNlcHRpb24iLCAibmFtZSIpOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwubmFtZSgpKTsKQEAgLTE0
OSwxOCArMTUxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1MK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0RXhj
ZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDE4ICsxMTcsMjIgQEAgdm9pZCBKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlOjpkZXN0cm95KAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNldEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVp
bHQtaW4gY29uc3RydWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZp
c2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDEyICsxNzksMTQg
QEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmRlc3Ryb3koSlNDOjpKUwogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxhckF0dHJp
YnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJyZWd1bGFyQXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5yZWd1bGFyQXR0cmlidXRlKCkpOwpA
QCAtMTk0LDEyICsxOTYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVn
dWxhcgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2Jh
bE9iamVjdCo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RH
bG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEdsb2JhbE9i
amVjdCIsICJwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKCkpOwpAQCAt
MjEwLDEyICsyMTQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGlj
QQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQ
cml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGlj
QW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUo
KSk7CkBAIC0yMjcsMTIgKzIzMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSk7CkBAIC0yNDMsMTggKzI1MSwyMiBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9i
YWxPYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29u
c3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAog
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0yNjMsMTEgKzI3NSwxMyBAQCBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4CiAKIGJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RH
bG9iYWxPYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJyZWd1bGFyQXR0cmlidXRlIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xv
YmFsT2JqZWN0IiwgInJlZ3VsYXJBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9X
VEZTdHJpbmcoc3RhdGUpOwpAQCAtMjgwLDExICsyOTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RSZWd1bGFyQXR0cmlidQogCiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1Ymxp
Y0FuZFByaXZhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFs
T2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTI5OCwxMSArMzE0LDEzIEBAIGJvb2wg
c2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmEKICNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9u
YWxBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdEdsb2Jh
bE9iamVjdCogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RH
bG9iYWxPYmplY3QiLCAicHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zMTcsMTEgKzMz
NSwxMyBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhCiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVu
dGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0R2xv
YmFsT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3Qq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dEdsb2JhbE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0R2xvYmFs
T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzQwLDE0ICszNjAsMTcgQEAgSlNWYWx1ZSBKU1Rl
c3RHbG9iYWxPYmplY3Q6OmdldENvbnN0cnVjdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxh
ck9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAicmVndWxhck9wZXJhdGlvbiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0
YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zNTgsMTQgKzM4MSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RHbG9iYWxPYmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxP
YmplY3QiLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0zNzgsMTQgKzQwNCwxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVy
YXRpb24yKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFs
T2JqZWN0Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RHbG9iYWxPYmplY3Qi
LCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RHbG9iYWxPYmplY3QiLCAiZW5hYmxl
ZEF0UnVudGltZU9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtMzk4LDYgKzQyNyw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmEKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjpt
aW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50
ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKQEAgLTQwOSwxNyArNDQxLDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0R2xvYmEKICAgICAgICAgcmV0dXJuIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMShzdGF0ZSk7CiAjZW5k
aWYKICAgICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInRlc3RQcml2YXRlRnVuY3Rpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0R2xvYmFsT2JqZWN0IiwgInRlc3RQcml2YXRlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwudGVz
dFByaXZhdGVGdW5jdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9u
IDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsMTAgKzIyMiwxMyBAQCBzdGF0
aWNfYXNzZXJ0KFRlc3RTdXBwbGVtZW50YWw6OkNPTlNUX0lNCiAKIHRlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGF1dG8gc3RyMSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBA
IC0yMzUsNyArMjM4LDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdEludGVyZmFjZSIpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdEludGVyZmFjZTo6Y3Jl
YXRlKCpjb250ZXh0LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpLCBlYyk7CiAgICAgaWYg
KFVOTElLRUxZKGVjKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAg
LTQxMiw3ICs0MTUsOSBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6ZGVzdHJveShKU0M6OkpTQ2Vs
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNSZWFkT25s
eUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0SW50ZXJmYWNlOjppbXBsZW1lbnRz
U3RhdGljUmVhZE9ubHlBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKQEAgLTQyMyw3ICs0MjgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFRlc3RJbnRlcmZh
Y2U6OmltcGxlbWVudHNTdGF0aWNBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTQzNCwxMiArNDQxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVy
ZmFjZUNvbnN0cnVjdG8KICNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRp
b24yMykKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFs
dWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVt
ZW50c1N0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmltcGxlbWVudHNTdHIxKCkpOwpAQCAt
NDUxLDEyICs0NjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
cwogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50c1N0cjIoKSk7CkBAIC00NjgsMTIgKzQ3OSwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y2FzdGVkVGhpcy0+aW1wbGVtZW50c1N0cjMoKnN0YXRlKSk7CiB9CkBAIC00ODMsMTIgKzQ5Niwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgaW1wbC5pbXBsZW1lbnRzTm9kZSgpKTsKQEAgLTUwMCw3ICs1MTUs
OSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1l
bnRhbFN0YXRpY1JlYWRPbmx5QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC01MTEsNyArNTI4LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
Q29uc3RydWN0bwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEy
KQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxT
dGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNv
cmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0YXRpY0F0dHIoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNTIyLDEyICs1NDEsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0bwogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3Vw
cGxlbWVudGFsU3RyMSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIFdl
YkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbFN0cjEoaW1wbCkpOwpAQCAtNTM5
LDEyICs1NjAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAog
I2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRh
bFN0cjIoaW1wbCkpOwpAQCAtNTU2LDEyICs1NzksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3Ry
MyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihk
ZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwg
InN1cHBsZW1lbnRhbFN0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIp
OwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1l
bnRhbFN0cjMoKnN0YXRlKSk7CiB9CkBAIC01NzEsMTIgKzU5NiwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVt
ZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVy
ZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxOb2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTm9kZShpbXBsKSk7
CkBAIC01ODcsMTggKzYxNCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogICAgIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC02MzAsNyArNjYx
LDkgQEAgYm9vbCBKU1Rlc3RJbnRlcmZhY2U6OnB1dEJ5SW5kZXgoSlNDZWxsKgogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogYm9vbCBzZXRKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckltcGxlbWVudHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVl
ID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02NDMsMTEgKzY3NiwxMyBA
QCBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9ySW1wbGVtCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBib29sIHNldEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNTdHIyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNT
dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTY2Miwx
MSArNjk3LDEzIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjIoRXgKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIGJvb2wgc2V0SlNU
ZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAi
aW1wbGVtZW50c1N0cjMiKTsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0SW1wbGVtZW50c1N0
cjMoKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02NzcsMTYgKzcxNCwxOCBA
QCBib29sIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzKEV4CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBib29sIHNldEpTVGVzdEludGVyZmFj
ZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNO
b2RlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTTm9kZTo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJv
cigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIiwgIk5vZGUiKTsKKyAg
ICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdElu
dGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIsICJOb2RlIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAgICAgaW1wbC5zZXRJbXBsZW1lbnRzTm9kZSgqbmF0aXZlVmFsdWUpOwpAQCAt
Njk4LDcgKzczNyw5IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGUoRXgK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIGJvb2wgc2V0
SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTdXBwbGVtZW50YWxTdGF0aWNBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MTEs
MTEgKzc1MiwxMyBAQCBib29sIHNldEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yU3VwcGxlCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiBib29sIHNldEpT
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFj
ZSIsICJzdXBwbGVtZW50YWxTdHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5n
KHN0YXRlKTsKQEAgLTczMCwxMSArNzczLDEzIEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3Vw
cGxlbWVudGFsU3RyMigKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIz
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICB9CiAgICAgY2Fz
dGVkVGhpcy0+c2V0U3VwcGxlbWVudGFsU3RyMygqc3RhdGUsIHZhbHVlKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTc0NSwxNiArNzkwLDE4IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxl
bWVudGFsU3RyMygKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNO
b2RlOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7
Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRlcmZhY2Ui
LCAic3VwcGxlbWVudGFsTm9kZSIsICJOb2RlIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFs
Tm9kZSIsICJOb2RlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgV2ViQ29y
ZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZShpbXBsLCAqbmF0aXZlVmFs
dWUpOwpAQCAtNzcxLDEwICs4MTgsMTMgQEAgSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2U6OmdldENv
bnN0cnVjdG9yKAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIz
KQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxl
bWVudHNNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpbXBsLmltcGxlbWVudHNNZXRob2QxKCk7CkBAIC03ODYsMTQgKzgz
NiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01l
dGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJpbXBs
ZW1lbnRzTWV0aG9kMiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYg
KCFjb250ZXh0KQpAQCAtODAzLDcgKzg1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1
bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDEsICJvYmpBcmciLCAiVGVzdEludGVyZmFjZSIs
ICJpbXBsZW1lbnRzTWV0aG9kMiIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QyIiwgIlRlc3RPYmoiKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmltcGxl
bWVudHNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcsIGVjKSk7CiAK
ICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTgxNSwxMCArODY4LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMyhFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRo
b2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTWV0aG9kMyIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SW50ZXJmYWNlOjppbmZvKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c01ldGhvZDMo
KnN0YXRlKSk7CiB9CkBAIC04MjgsNiArODg0LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRp
dGlvbjIzKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVzdElu
dGVyZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtODM3LDEwICs4OTYsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QxIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBXZWJDb3JlOjpUZXN0U3VwcGxl
bWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGltcGwpOwpAQCAtODUyLDE0ICs5MTQsMTcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDIo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50
YWxNZXRob2QyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICgh
Y29udGV4dCkKQEAgLTg2OSw3ICs5MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdEludGVyCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgYXV0byBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1l
bnQoMSkpOwogICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAib2JqQXJnIiwgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsTWV0aG9kMiIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0Fy
Z3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0SW50
ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdlYkNvcmU6
OlRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoaW1wbCwgKmNvbnRleHQsIFdU
Rk1vdmUoc3RyQXJnKSwgKm9iakFyZywgZWMpKTsKIAogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0
ZSwgZWMpOwpAQCAtODgxLDEwICs5NDYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RJbnRlcgogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjEyKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxNZXRob2QzIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEludGVyZmFjZSIs
ICJzdXBwbGVtZW50YWxNZXRob2QzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxNZXRob2QzKCpzdGF0ZSkpOwogfQpAQCAt
ODk0LDYgKzk2Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXIK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1l
bnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHJldmlzaW9uIDIw
NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
dGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxOCArMTMxLDIyIEBAIHZvaWQgSlNU
ZXN0SXRlcmFibGU6OmRlc3Ryb3koSlNDOjpKU0NlbGwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RJdGVy
YWJsZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJdGVyYWJsZVBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SXRlcmFibGU6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
SXRlcmFibGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0SXRlcmFibGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
SXRlcmFibGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQs
MTIgKzEzNCwxNCBAQCB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpkZXN0cm95CiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1
c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICJ0ZXN0QXR0cmlidXRlQ3VzdG9tIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEF0dHJpYnV0ZUN1c3RvbSIpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVDdXN0b20oKnN0
YXRlKSk7CiB9CkBAIC0xNDcsMTIgKzE0OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1
dGVSV0N1c3RvbSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVS
V0N1c3RvbSIpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMt
PnRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUpKTsKIH0KQEAgLTE2MCwxOCArMTY0LDIyIEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG8KIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSogZG9tT2JqZWN0
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3Qp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTgwLDExICsxODgs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cgogCiBib29sIHNl
dEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yIiwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogICAgIH0KICAgICBjYXN0
ZWRUaGlzLT5zZXRUZXN0QXR0cmlidXRlUldDdXN0b20oKnN0YXRlLCB2YWx1ZSk7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xOTgsMTAgKzIwOCwxMyBAQCBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpnZXRDCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciIsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAi
dGVzdEN1c3RvbUZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6aW5mbygpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RDdXN0b21GdW5jdGlvbigqc3RhdGUpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJ
KHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI1LDE4ICsxMjUsMjIgQEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpkZXN0
cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCiBib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IKQEAgLTE1MCwxNiArMTU0LDE5IEBAIEpTVmFsdWUgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcjo6Z2UKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyIiwgIm1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImxpc3RlbmVyIiwg
IlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgIm1ldGhvZCIpOworICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAi
bGlzdGVuZXIiLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAg
YXV0byBsaXN0ZW5lciA9IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0
KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
KTsKICAgICBpbXBsLm1ldGhvZChXVEZNb3ZlKGxpc3RlbmVyKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODIsMTAgKzgyLDEzIEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkQ28KIAogdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRD
b25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgYXV0byBzdHIxID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0
YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTE1OSwx
OCArMTYyLDIyIEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0MKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZt
KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyMDUx
ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDkgQEAgdHlwZWRlZiBKU0RPTUNvbnN0
cnVjdG9yPEpTVGVzdE5vZGU+IEpTVAogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihzdGF0
ZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBhdXRvIG9iamVjdCA9
IFRlc3ROb2RlOjpjcmVhdGUoKTsKQEAgLTE2MSwxMiArMTY0LDE0IEBAIEpTT2JqZWN0KiBKU1Rl
c3ROb2RlOjpwcm90b3R5cGUoVk0mIHZtLCAKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZU5h
bWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9kZSo+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3ROb2RlIiwgIm5hbWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBpbXBsLm5hbWUoKSk7CkBAIC0xNzYsMTggKzE4MSwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb2RlTmFtZShFeGVjU3RhdGUqCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1
Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdE5vZGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9i
amVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3ROb2RlUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vZGVQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk2LDExICsyMDUsMTMgQEAgYm9vbCBzZXRKU1Rl
c3ROb2RlQ29uc3RydWN0b3IoRXhlY1N0YXRlKgogCiBib29sIHNldEpTVGVzdE5vZGVOYW1lKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb2RlKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROb2RlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb2RlIiwgIm5hbWUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3ROb2RlIiwgIm5h
bWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0
aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0
aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsMTIgKzE0NiwxNCBAQCB2b2lkIEpTVGVzdE5v
bmRldGVybWluaXN0aWM6OmRlc3Ryb3koSlNDCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRl
dGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25k
ZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25k
ZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7CiAgICAgfQogI2lmIEVOQUJMRShXRUJfUkVQTEFZ
KQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBzdGF0ZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwpAQCAtMTgxLDEyICsxODMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGlj
Tm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlz
dGljV3JpdGVhYmxlQXR0ciIpOwogICAgIH0KICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KTsKQEAgLTIxNiwxMiArMjIwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWlu
aXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0
aW9uQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0V4Y2Vw
dGlvbkF0dHIiKTsKICAgICB9CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CkBAIC0y
NTEsMTIgKzI1NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGlj
R2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4
Y2VwdGlvbkF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
I2lmIEVOQUJMRShXRUJfUkVQTEFZKQpAQCAtMjkwLDEyICsyOTgsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25k
ZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGlj
IiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwogICAgIH0K
ICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKQEAgLTMyNSwxOCArMzM1LDIyIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb24KIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5vbmRl
dGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCkBAIC0zNDUsMTEgKzM1OSwxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNDb25zdHJ1Y3RvCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RO
b25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0
ZWFibGVBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3Jp
dGVhYmxlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBA
IC0zNjIsMTEgKzM3OCwxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pCiAKIGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNl
cHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zNzksMTEgKzM5
NywxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAKIGJvb2wg
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25B
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RO
b25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC0zOTYs
MTEgKzQxNiwxMyBAQCBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAK
IGJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNl
cHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlz
dGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25B
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhj
ZXB0aW9uQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDIwLDEwICs0NDIsMTMgQEAgSlNW
YWx1ZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdAogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRl
dGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVu
Y3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1
bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNp
b24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw5ICsxMzAsMTEgQEAgdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcAogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVu
dW1UeXBlIGNvbnZlcnQ8VGVzdE9iajo6RW51bVR5cGU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRl
c3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAg
ICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC0xODEsOSArMTgzLDExIEBAIHRlbXBsYXRlPD4g
T3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHAKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpPcHRp
b25hbCBjb252ZXJ0PFRlc3RPYmo6Ok9wdGlvbmFsPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0
T2JqOjpPcHRpb25hbD4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
cmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpAQCAtMjI0LDkgKzIyOCwxMSBAQCB0ZW1wbGF0ZTw+IE9w
dGlvbmFsPEFsdGVybmF0ZUVudW1OYW1lPiBwCiAKIHRlbXBsYXRlPD4gQWx0ZXJuYXRlRW51bU5h
bWUgY29udmVydDxBbHRlcm5hdGVFbnVtTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8QWx0ZXJu
YXRlRW51bU5hbWU+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJl
dHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTI2NSw5ICsyNzEsMTEgQEAgdGVtcGxhdGU8PiBPcHRp
b25hbDxUZXN0T2JqOjpFbnVtQT4gcGFycwogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkVudW1BIGNv
bnZlcnQ8VGVzdE9iajo6RW51bUE+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6OkVudW1B
PihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRo
cm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0
LnZhbHVlKCk7CkBAIC0zMDgsOSArMzE2LDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RW51bUI+IHBhcnMKIAogdGVtcGxhdGU8PiBUZXN0T2JqOjpFbnVtQiBjb252ZXJ0PFRlc3RP
Ymo6OkVudW1CPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byByZXN1bHQgPSBwYXJzZTxUZXN0T2JqOjpFbnVtQj4oc3RhdGUsIHZh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgpOwpA
QCAtMzUxLDkgKzM2MSwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkVudW1DPiBw
YXJzCiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6RW51bUMgY29udmVydDxUZXN0T2JqOjpFbnVtQz4o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9iajo6RW51bUM+KHN0YXRlLCB2YWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTM5Niw5ICs0
MDgsMTEgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZQogCiB0ZW1w
bGF0ZTw+IFRlc3RPYmo6OktpbmQgY29udmVydDxUZXN0T2JqOjpLaW5kPihFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byByZXN1bHQg
PSBwYXJzZTxUZXN0T2JqOjpLaW5kPihzdGF0ZSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
cmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KICAgICByZXR1cm4gcmVzdWx0LnZhbHVlKCk7CkBAIC00MzksOSArNDUzLDExIEBAIHRlbXBs
YXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2UKIAogdGVtcGxhdGU8PiBUZXN0T2Jq
OjpTaXplIGNvbnZlcnQ8VGVzdE9iajo6U2l6ZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2U8VGVzdE9i
ajo6U2l6ZT4oc3RhdGUsIHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXJlc3VsdCkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdC52YWx1ZSgpOwpAQCAtNDgyLDkgKzQ5OCwxMSBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFs
PFRlc3RPYmo6OkNvbmZpZGVuY2U+CiAKIHRlbXBsYXRlPD4gVGVzdE9iajo6Q29uZmlkZW5jZSBj
b252ZXJ0PFRlc3RPYmo6OkNvbmZpZGVuY2U+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlPFRlc3RPYmo6
OkNvbmZpZGVuY2U+KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KCZzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIHJl
dHVybiByZXN1bHQudmFsdWUoKTsKQEAgLTQ5NywxMSArNTE1LDEzIEBAIHRlbXBsYXRlPD4gaW5s
aW5lIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW4KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2Jq
OjpEaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5PihFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBUZXN0T2JqOjpEaWN0
aW9uYXJ5IHsgeyB9LCBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSwgVGVzdE9iajo6RW51
bVR5cGU6OkVtcHR5U3RyaW5nLCAiZGVmYXVsdFN0cmluZyIsIHsgfSwgZmFsc2UsIHsgfSwgeyB9
LCB7IH0sIHsgfSwgMCwgMCwgeyB9LCB7IH0sIDAsIDAsIHsgfSwgeyB9LCB7IH0sIDAsIHsgfSwg
MCwgeyB9LCAwLCB7IH0sIDAsIHsgfSwgMCwgbnVsbHB0ciwganNVbmRlZmluZWQoKSwganNVbmRl
ZmluZWQoKSwgeyB9IH07CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAg
ICAgaWYgKFVOTElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0
VHlwZSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAg
ICAgfQogICAgIGF1dG8gZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0ID0gY29udmVydE9w
dGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVs
dCIpKSk7CkBAIC02MDMsOSArNjIzLDExIEBAIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6
RGljdGlvbmFyeT4KIAogdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhh
dFNob3VsZE5vdFRvbGVyYXRlTnVsbD4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlv
bmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUg
dmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvKiBvYmplY3QgPSB2YWx1ZS5nZXRP
YmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iamVjdCB8fCBvYmplY3QtPnR5cGUoKSA9PSBS
ZWdFeHBPYmplY3RUeXBlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4g
TnVsbG9wdDsKICAgICB9CiAgICAgYXV0byByZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUgPSBjb252
ZXJ0PFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlcXVpcmVkRW51bWVyYXRpb25WYWx1ZSIpKSk7CkBA
IC02MjMsMTEgKzY0NSwxMyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25h
cnlUCiAKIHRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRU
b2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hv
dWxkVG9sZXJhdGVOdWxsPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbCB7IHsgfSwg
eyB9IH07CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVO
TElLRUxZKCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAgICAgfQogICAg
IGF1dG8gZW51bWVyYXRpb25WYWx1ZSA9IGNvbnZlcnRPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlw
ZT4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3Rh
dGUsICJlbnVtZXJhdGlvblZhbHVlIikpKTsKQEAgLTYzOSwxMSArNjYzLDEzIEBAIHRlbXBsYXRl
PD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVQKIAogdGVtcGxhdGU8PiBPcHRpb25hbDxB
bHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4gY29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRlRGljdGlv
bmFyeU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJu
IEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lIHsgeyB9LCB7IH0gfTsKICAgICBhdXRvKiBvYmplY3Qg
PSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iamVjdCB8fCBvYmplY3Qt
PnR5cGUoKSA9PSBSZWdFeHBPYmplY3RUeXBlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwogICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAgICAgYXV0byBlbnVtZXJhdGlvblZhbHVlID0g
Y29udmVydE9wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWUiKSkp
OwpAQCAtMTEwMiwxOSArMTEyOCwyMiBAQCBzdGF0aWNfYXNzZXJ0KFRlc3RPYmo6OnJlYWRvbmx5
ID09IDAsICJyCiAKIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqQ29uc3RydWN0b3IqPihzdGF0ZS0+Y2FsbGVlKCkpOwog
ICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAw
LCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwg
InRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7CiAgICAgYXV0byB0ZXN0Q2Fs
bGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpZiAoVU5MSUtF
TFkoIXN0YXRlLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpKQotICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAxLCAidGVzdENhbGxiYWNrRnVu
Y3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAidGVzdENhbGxi
YWNrRnVuY3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOwogICAgIGF1dG8gdGVzdENhbGxi
YWNrRnVuY3Rpb24gPSBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoYXNPYmplY3Qoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAg
cmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iik7CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVj
dG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwog
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAgICBh
dXRvIG9iamVjdCA9IFRlc3RPYmo6OmNyZWF0ZShkb2N1bWVudCwgKnRlc3RDYWxsYmFjaywgKnRl
c3RDYWxsYmFja0Z1bmN0aW9uKTsKQEAgLTE0OTUsMTIgKzE1MjQsMTQgQEAgYm9vbCBKU1Rlc3RP
Ymo6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAicmVhZE9ubHlMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWFkT25seUxvbmdBdHRy
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnJlYWRPbmx5TG9uZ0F0dHIoKSk7CkBAIC0x
NTEwLDEyICsxNTQxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5TG9uZ0F0
dHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlTdHJpbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVhZE9ubHlTdHJpbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwucmVhZE9ubHlTdHJpbmdBdHRyKCkpOwpAQCAtMTUy
NSwxMiArMTU1OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWFkT25seVRlc3RPYmpBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgInJlYWRPbmx5VGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnJlYWRPbmx5VGVzdE9i
akF0dHIoKSk7CkBAIC0xNTQwLDcgKzE1NzUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWFkT25seVRlc3RPYmpBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yU3Rh
dGljUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRlc3RPYmo6OnN0
YXRpY1JlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTU0OSw3ICsxNTg2LDkgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JTdGF0aQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0
cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgVGVzdE9i
ajo6c3RhdGljU3RyaW5nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xNTU4LDEyICsxNTk3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0
cnVjdG9yU3RhdGkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3Vi
T2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1
Yk9iaiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJUZXN0U3ViT2JqIik7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTE1NzEsMTIgKzE2MTIsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0UwogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsK
ICAgICB9CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0xNTg5
LDEyICsxNjMyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGUK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1Zh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbnVt
QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuZW51bUF0
dHIoKSk7CkBAIC0xNjA0LDEyICsxNjQ5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVu
dW1BdHRyKEV4ZWNTdGEKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJieXRlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5ieXRlQXR0
cigpKTsKQEAgLTE2MTksMTIgKzE2NjYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0
ZUF0dHIoRXhlY1N0YQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1
ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0
byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvY3RldEF0dHIiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRl
c3RPYmplY3QiLCAib2N0ZXRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0
QXR0cigpKTsKQEAgLTE2MzQsMTIgKzE2ODMsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
T2N0ZXRBdHRyKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTaG9ydEF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzaG9ydEF0dHIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAic2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnNo
b3J0QXR0cigpKTsKQEAgLTE2NDksMTIgKzE3MDAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU2hvcnRBdHRyKEV4ZWNTdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hv
cnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xh
bXBlZFNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjbGFtcGVkU2hvcnRBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmNsYW1wZWRTaG9ydEF0dHIoKSk7CkBAIC0xNjY0LDEyICsx
NzE3LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqRW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2Rl
ZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiZW5mb3JjZVJhbmdlU2hvcnRBdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImVuZm9yY2VSYW5nZVNob3J0QXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5lbmZvcmNlUmFuZ2VTaG9ydEF0dHIoKSk7CkBAIC0xNjc5LDEyICsxNzM0LDE0
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuZm9yY2VSYW5nZVNob3IKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25l
ZFNob3J0QXR0cigpKTsKQEAgLTE2OTQsMTIgKzE3NTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqVW5zaWduZWRTaG9ydEF0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVk
VGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImxvbmdBdHRy
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgImxvbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmxvbmdBdHRyKCkpOwpAQCAtMTcwOSwxMiArMTc2OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpMb25nQXR0cihFeGVjU3RhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdMb25n
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImxvbmdM
b25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwubG9uZ0xvbmdBdHRyKCkpOwpAQCAtMTcyNCwxMiArMTc4NSwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
dW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWdu
ZWRMb25nTG9uZ0F0dHIoKSk7CkBAIC0xNzM5LDEyICsxODAyLDE0IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmcKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3Ry
aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihk
ZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0
cmluZ0F0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNT
dHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0cigpKTsKQEAgLTE3NTQsMTIgKzE4
MTksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjUwogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidXN2c3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1
c3ZzdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1w
bC51c3ZzdHJpbmdBdHRyKCkpOwpAQCAtMTc2OSwxMiArMTgzNiwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyKEV4CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRl
c3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
dGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRlc3RPYmpBdHRy
KCkpOwpAQCAtMTc4NCwxMiArMTg1MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0
T2JqQXR0cihFeGVjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAg
ICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7
CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2Rl
ZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0TnVs
bGFibGVPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnRl
c3ROdWxsYWJsZU9iakF0dHIoKSk7CkBAIC0xNzk5LDcgKzE4NzAsOSBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxl
bmllbnRUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKQEAgLTE4MTQsMTIgKzE4ODcsMTQgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpVbmZvcmdlYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJ1bmZvcmdlYWJsZUF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidW5mb3JnZWFibGVB
dHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC51bmZvcmdl
YWJsZUF0dHIoKSk7CkBAIC0xODI5LDEyICsxOTA0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialVuZm9yZ2VhYmxlQXR0cigKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0
clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuc3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoKSk7CkBAIC0xODQ0LDEyICsxOTIxLDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialN0cmluZ0F0dHJUcmVhdGkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
VXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
dXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoKSk7CkBAIC0xODU5LDEyICsx
OTM4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHJUcmUKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltcGxlbWVudGF0aW9uRW51bUF0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAiaW1wbGVtZW50YXRpb25FbnVtQXR0ciIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwuaW1wbGVtZW50YXRpb25FbnVtQXR0cigpKTsK
QEAgLTE4NzQsMTIgKzE5NTUsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1wbGVtZW50
YXRpb25FbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJYTUxPYmpBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgaW1wbC54bWxPYmpBdHRyKCkpOwpAQCAtMTg4OSwxMiArMTk3Miwx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNyZWF0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgImNyZWF0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjcmVhdGUiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwpAQCAtMTkwNCwxMiArMTk4OSwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
InJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5h
bWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRyQXR0cikpOwpAQCAtMTkxOSwxMiArMjAwNiwxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3ZzdHJpbmdhdHRyQXR0cikpOwpAQCAtMTkzNCwxMiAr
MjAyMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZTdHJpCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CkBAIC0xOTQ5LDEyICsyMDQwLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmEKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoc3RkOjptYXgoMCwgaW1wbC5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3Jl
OjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVkaW50ZWdyYWxhdHRyQXR0cikpKTsKQEAgLTE5
NjQsMTIgKzIwNTcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVW5zaWdu
ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5B
dHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNv
cmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkYm9vbGVhbmF0dHJBdHRyKSk7CkBAIC0xOTc5LDEyICsy
MDc0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW4KIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVk
dXJsYXR0ckF0dHIpKTsKQEAgLTE5OTQsMTIgKzIwOTEsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkVVJMQXR0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRVU1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAicmVmbGVjdGVkVVNWVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZVUkxB
dHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5nZXRVUkxB
dHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0cikpOwpA
QCAtMjAwOSwxMiArMjEwOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRV
U1ZVUkxBCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNW
YWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAg
YXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJp
bmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIp
KTsKQEAgLTIwMjQsMTIgKzIxMjUsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVj
dGVkU3RyaW5nQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRl
Z3JhbEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJy
ZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmdldEludGVncmFs
QXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0
dHIpKTsKQEAgLTIwMzksMTIgKzIxNDIsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVm
bGVjdGVkQ3VzdG9tSQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Jvb2xlYW4oaW1wbC5oYXNBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVu
dEJvb2xlYW5BdHRyQXR0cikpOwpAQCAtMjA1NCwxMiArMjE1OSwxNCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21CCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRV
UkxBdHRyQXR0cikpOwpAQCAtMjA3MCwxMiArMjE3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21VCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUoKSk7CkBAIC0yMDg2LDEyICsyMTk1LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVu
YWJsZWRBdFJ1bnRpbWUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5
QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwudHlwZWRBcnJheUF0dHIo
KSk7CkBAIC0yMTAxLDEyICsyMjEyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjExOCwxMiArMjIzMSwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aEdldHRlckV4CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhp
c1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhN
ZXNzYWdlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3Nh
Z2UiKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0yMTM1LDEyICsyMjUwLDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoR2V0dGVyRXgKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIo
aW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKQEAgLTIxNTAsMTIgKzIyNjcsMTQgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbldp
dGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uV2l0aE1lc3NhZ2UoKSk7CkBAIC0yMTY1LDEyICsyMjg0LDE0IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0dGVyRXgKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwpAQCAtMjE4MiwxMiArMjMwMywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJp
bmdBdHRyV2l0aEdlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwpAQCAtMjE5Nywx
MiArMjMyMCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNlCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1Zh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjdXN0b21BdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImN1
c3RvbUF0dHIiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlz
LT5jdXN0b21BdHRyKCpzdGF0ZSkpOwogfQpAQCAtMjIxMCwxMiArMjMzNSwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
b25mb28iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAib25mb28iKTsKICAgICB9CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0
ZShjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwpAQCAtMjIy
NCwxMiArMjM1MSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUq
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRo
aXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib253ZWJraXRmb28iKTsKKyAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAib253ZWJraXRmb28iKTsKICAgICB9CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV2ZW50SGFuZGxlckF0dHJpYnV0ZShjYXN0ZWRUaGlzLT53
cmFwcGVkKCksIGV2ZW50TmFtZXMoKS5mb29FdmVudCkpOwpAQCAtMjIzOCwxMiArMjM2NywxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPbndlYmtpdGZvbyhFeGVjCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlz
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCpzdGF0ZSkpOwpAQCAtMjI1Mywx
MiArMjM4NCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0
aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwud2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUoKnN0YXRlKSk7
CkBAIC0yMjY4LDEyICsyNDAxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxs
V2l0aEFuZFMKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRv
KiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQp
CkBAIC0yMjg2LDEyICsyNDIxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwpAQCAtMjMwMywxMiAr
MjQ0MCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CkBAIC0yMzIzLDEyICsyNDYyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRU
aGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvKiBj
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCkBA
IC0yMzQxLDEyICsyNDgyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKQEAgLTIzNjEsMTIgKzI1MDQsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlIik7CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTIzNzksMTIgKzI1MjQsMTQgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2Rl
ZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5k
Q2FsbFN0YWNrQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0
cmlidXRlKCkpOwpAQCAtMjM5NSwxMiArMjU0MiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0QXJndW1lCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMSIpOworICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25k
aXRpb25hbEF0dHIxIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0
cjEoKSk7CkBAIC0yNDEyLDEyICsyNTYxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjEKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlv
bjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CkBAIC0yNDI5LDEyICsyNTgwLDE0IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29u
ZGl0aW9uYWxBdHRyMyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFsQXR0cjMoKSk7CkBAIC0yNDQ2LDEyICsy
NTk5LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNCIp
OwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEE6OmdldENv
bnN0cnVjdG9yKHN0YXRlLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQpA
QCAtMjQ2MSwxMiArMjYxNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI0CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNSIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI1Iik7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0Qjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0yNDc2LDEyICsyNjMzLDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjUKICNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI2Iik7CisgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRp
dGlvbmFsQXR0cjYiKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RP
YmplY3RDOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKIH0KQEAgLTI0OTAsMTIgKzI2NDksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRy
aWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2Fj
aGVkQXR0cmlidXRlMSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjYWNoZWRBdHRyaWJ1dGUxIik7CiAgICAg
fQogICAgIGlmIChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRy
aWJ1dGUxLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVl
KTsKQEAgLTI1MDgsMTIgKzI2NjksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVk
QXR0cmlidXRlMQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2FjaGVkQXR0cmli
dXRlMiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJjYWNoZWRBdHRyaWJ1dGUyIik7CiAgICAgfQogICAgIGlm
IChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdl
dCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKQEAgLTI1
MjYsMTIgKzI2ODksMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRl
MgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLmFueUF0dHJpYnV0ZSgpOwpA
QCAtMjU0MSwxMiArMjcwNiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1
dGUoRXhlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVl
IGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbnRlbnREb2N1bWVudCIp
OworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJjb250ZW50RG9jdW1lbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNo
b3VsZEFsbG93QWNjZXNzVG9Ob2RlKHN0YXRlLCBpbXBsLmNvbnRlbnREb2N1bWVudCgpKSA/IHRv
SlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmNvbnRlbnREb2N1bWVu
dCgpKSA6IGpzTnVsbCgpKTsKQEAgLTI1NTUsMTIgKzI3MjIsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29udGVudERvY3VtZW50KAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRh
YmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
ZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJt
dXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgU1ZHU3RhdGljUHJvcGVy
dHlUZWFyT2ZmPFRlc3RPYmosIFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwsIGltcGwubXV0YWJsZVBv
aW50KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9pbnQpKTsKQEAgLTI1NzAsMTIgKzI3Mzks
MTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZQogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpJbW11dGFibGVQb2ludChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50Iik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImlt
bXV0YWJsZVBvaW50Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwuaW1t
dXRhYmxlUG9pbnQoKSkpOwpAQCAtMjU4NSwxMiArMjc1NiwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpJbW11dGFibGVQb2ludChFCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmF3
YmVycnkoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVj
b2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJh
d2JlcnJ5Iik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmF3YmVycnkiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwpAQCAtMjYwMCwxMiArMjc3MywxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
akRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiZGVzY3JpcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiZGVzY3JpcHRpb24iKTsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuZGVzY3JpcHRpb24oKSk7CkBAIC0yNjE1LDEyICsyNzkwLDE0IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9uKEV4ZWMKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqSWQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJpZCIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5pZCgpKTsKQEAgLTI2MzAsMTIgKzI4MDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
SWQoRXhlY1N0YXRlKiBzdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiaGFzaCIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJoYXNoIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5o
YXNoKCkpOwpAQCAtMjY0NSwxMiArMjgyNCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpI
YXNoKEV4ZWNTdGF0ZSogCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVw
bGFjZWFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwucmVwbGFjZWFibGVBdHRyaWJ1dGUoKSk7CkBA
IC0yNjYwLDEyICsyODQxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxl
QXR0cmkKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAg
ICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oZGVjb2RlZFRo
aXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZURv
dWJsZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVEb3VibGVBdHRy
aWJ1dGUoKSk7CkBAIC0yNjc1LDEyICsyODU4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlRG91YmxlQXQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25n
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bnVsbGFibGVMb25nQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ0F0dHJp
YnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9OdWxsYWJsZUpTTnVtYmVyKGltcGwubnVsbGFibGVMb25n
QXR0cmlidXRlKCkpOwpAQCAtMjY5MCwxMiArMjg3NSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZUxvbmdBdHRyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJs
ZUJvb2xlYW5BdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxl
Qm9vbGVhbkF0dHJpYnV0ZSgpKTsKQEAgLTI3MDUsMTIgKzI4OTIsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqTnVsbGFibGVCb29sZWFuQQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpO
dWxsYWJsZVN0cmluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51
bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0
ZSwgaW1wbC5udWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSgpKTsKQEAgLTI3MjAsMTIgKzI5MDksMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdAogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0
cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b051bGxhYmxlSlNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZSgpKTsKQEAgLTI3MzUsMTIgKzI5MjYsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVMb25nU2V0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRl
KCkpOwpAQCAtMjc1MCwxMiArMjk0MywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ1NlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW5n
U2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJudWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
U3RyaW5nT3JOdWxsKHN0YXRlLCBpbXBsLm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1
dGUoKSk7CkBAIC0yNzY1LDEyICsyOTYwLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlVVNWU3RyaW4KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxh
YmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOwog
ICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwpAQCAtMjc4MiwxMiArMjk3OSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNv
ZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJp
YnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCBpbXBsLmF0dHJpYnV0ZSgpKTsKQEAgLTI3OTcsMTIgKzI5OTYsMTQg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdAogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29k
ZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVu
dW1UeXBlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgaW1wbC5hdHRyaWJ1dGVXaXRo
UmVzZXJ2ZWRFbnVtVHlwZSgpKTsKQEAgLTI4MTIsMTIgKzMwMTMsMTQgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFJlcwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
dXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgInB1dEZvcndhcmRzQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInB1dEZvcndh
cmRzQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgaW1wbC5wdXRGb3J3YXJkc0F0dHJpYnV0ZSgpKTsKQEAgLTI4MjcsMTIgKzMw
MzAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaQogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNOdWxsYWJs
ZUF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJwdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC5wdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlKCkpOwpAQCAtMjg0MiwxMiArMzA0Nywx
NCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5naWZpZXJBdHRyaWJ1dGUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAic3RyaW5naWZpZXJBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCBpbXBsLnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpOwpAQCAtMjg1NywxOCAr
MzA2NCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIEpTVGVzdE9ialByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUt
PnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU1Rlc3RP
YmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkBAIC0yODc3LDcg
KzMwODgsOSBAQCBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogCiAKIGJv
b2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODg4LDExICsz
MTAxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmcKIAogYm9v
bCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsICJUZXN0T2JqZWN0IiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgfQog
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgogICAgIHJldHVybiBjYXN0
ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CkBAIC0yOTAxLDExICsz
MTE2LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHQKIAogYm9v
bCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJlbnVtQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBw
YXJzZTxUZXN0T2JqOjpFbnVtVHlwZT4oKnN0YXRlLCB2YWx1ZSk7CkBAIC0yOTIwLDExICszMTM3
LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBzdGEKIAogYm9vbCBz
ZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJi
eXRlQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PGludDhfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0yOTM3LDEx
ICszMTU2LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGEKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAib2N0ZXRBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm9jdGV0QXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PHVpbnQ4X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMjk1NCwxMSArMzE3NSwxMyBAQCBib29sIHNldEpTVGVzdE9iak9jdGV0QXR0cihFeGVjU3Rh
dGUqIHN0CiAKIGJvb2wgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgInNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzaG9ydEF0dHIiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQxNl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKQEAgLTI5NzEsMTEgKzMxOTQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0
dHIoRXhlY1N0YXRlKiBzdAogCiBib29sIHNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY2xhbXBlZFNob3J0QXR0ciIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJjbGFtcGVkU2hvcnRBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50
MTZfdD4oKnN0YXRlLCB2YWx1ZSwgQ2xhbXApOwpAQCAtMjk4OCwxMSArMzIxMywxMyBAQCBib29s
IHNldEpTVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0CiAKIGJvb2wgc2V0SlNUZXN0T2Jq
RW5mb3JjZVJhbmdlU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
ImVuZm9yY2VSYW5nZVNob3J0QXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmZvcmNlUmFuZ2VTaG9y
dEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQxNl90Pigqc3RhdGUsIHZhbHVlLCBF
bmZvcmNlUmFuZ2UpOwpAQCAtMzAwNSwxMSArMzIzMiwxMyBAQCBib29sIHNldEpTVGVzdE9iakVu
Zm9yY2VSYW5nZVNob3J0QXR0cihFCiAKIGJvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRTaG9ydEF0dHIi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDx1aW50MTZfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zMDIy
LDExICszMjUxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHIoRXhlY1MK
IAogYm9vbCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJsb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nQXR0ciIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzAzOSwxMSArMzI3MCwxMyBAQCBib29sIHNldEpTVGVzdE9iakxvbmdBdHRyKEV4ZWNTdGF0
ZSogc3RhCiAKIGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgImxvbmdMb25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTG9u
Z0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxpbnQ2NF90Pigqc3RhdGUsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKQEAgLTMwNTYsMTEgKzMyODksMTMgQEAgYm9vbCBzZXRKU1Rlc3RP
YmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKgogCiBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9u
Z0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVy
biB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOwpAQCAtMzA3MywxMSArMzMwOCwxMyBAQCBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9u
Z0xvbmdBdHRyKEV4CiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJzdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmlu
Z0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzA5
MCwxMSArMzMyNywxMyBAQCBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBz
CiAKIGJvb2wgc2V0SlNUZXN0T2JqVXN2c3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInVzdnN0cmluZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAt
MzEwNywxNiArMzM0NiwxOCBAQCBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHIoRXhlY1N0
YXRlCiAKIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIi
KTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdE9iakF0dHIiLCAiVGVzdE9iaiIpOworICAgICAg
ICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgInRlc3RPYmpBdHRyIiwgIlRlc3RPYmoiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICBpbXBsLnNldFRlc3RPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CkBAIC0zMTI2LDE4ICsz
MzY3LDIwIEBAIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiAKIAogYm9v
bCBzZXRKU1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidGVzdE51
bGxhYmxlT2JqQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gbnVsbHB0cjsKICAgICBpZiAoIXZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgbmF0aXZlVmFsdWUgPSBKU1Rlc3RP
Ymo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUp
KSB7Ci0gICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgInRlc3ROdWxsYWJsZU9iakF0dHIiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgdGhy
b3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0
ZXN0TnVsbGFibGVPYmpBdHRyIiwgIlRlc3RPYmoiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTMxNDgsNyArMzM5MSw5IEBAIGJvb2wgc2V0SlNUZXN0
T2JqVGVzdE51bGxhYmxlT2JqQXR0cihFeGUKIAogYm9vbCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVz
dE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKQEAgLTMxNTcsNyArMzQw
Miw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWMKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBK
U1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1
ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJsZW5pZW50VGVzdE9iakF0dHIiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJp
YnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImxlbmllbnRU
ZXN0T2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgaW1wbC5zZXRMZW5pZW50VGVzdE9iakF0dHIoKm5hdGl2ZVZhbHVlKTsKQEAgLTMxNjcsMTEg
KzM0MTIsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIoRXhlYwogCiBi
b29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nKHN0YXRlLCB2YWx1ZSk7CkBAIC0zMTg0LDExICszNDMxLDEzIEBAIGJvb2wgc2V0SlNU
ZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEEKIAogYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0
aXZlVmFsdWUgPSB2YWx1ZVRvVVNWU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0
ZSwgdmFsdWUpOwpAQCAtMzIwMSwxMSArMzQ1MCwxMyBAQCBib29sIHNldEpTVGVzdE9ialVzdnN0
cmluZ0F0dHJUcmVhdGluZ051CiAKIGJvb2wgc2V0SlNUZXN0T2JqSW1wbGVtZW50YXRpb25FbnVt
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpbXBsZW1lbnRhdGlvbkVu
dW1BdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImltcGxlbWVudGF0aW9uRW51bUF0dHIiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gcGFyc2U8QWx0ZXJuYXRlRW51bU5hbWU+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtMzIy
MCwxNiArMzQ3MSwxOCBAQCBib29sIHNldEpTVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0dHIo
CiAKIGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1
ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJYTUxPYmpBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIlhNTE9iakF0dHIiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghbmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiWE1MT2JqQXR0ciIsICJUZXN0T2JqIik7CisgICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiWE1M
T2JqQXR0ciIsICJUZXN0T2JqIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAg
aW1wbC5zZXRYTUxPYmpBdHRyKCpuYXRpdmVWYWx1ZSk7CkBAIC0zMjM5LDExICszNDkyLDEzIEBA
IGJvb2wgc2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rl
c3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY3JlYXRlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgImNyZWF0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4o
c3RhdGUpOwpAQCAtMzI1NiwxMSArMzUxMSwxMyBAQCBib29sIHNldEpTVGVzdE9iakNyZWF0ZShF
eGVjU3RhdGUqIHN0YXRlCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzI3MywxMSArMzUzMCwxMyBAQCBib29sIHNldEpT
VGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkVVNWU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZs
ZWN0ZWRVU1ZTdHJpbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVTVlN0cmluZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWVUb1VTVlN0cmluZyhzdGF0ZSwgdmFsdWUpOwpAQCAt
MzI5MCwxMSArMzU0OSwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0
dHIoCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxp
bnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTMzMDcsMTEgKzM1
NjgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRQogCiBib29s
IHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8dWludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzMyNCwxMSArMzU4NywxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVuc2lnbmVk
SW50ZWdyCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9C
b29sZWFuKHN0YXRlKTsKQEAgLTMzNDEsMTEgKzM2MDYsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpS
ZWZsZWN0ZWRCb29sZWFuQXR0cihFeAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkVVJMQXR0ciIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVl
LnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTMzNTgsMTEgKzM2MjUsMTMgQEAgYm9vbCBzZXRKU1Rl
c3RPYmpSZWZsZWN0ZWRVUkxBdHRyKEV4ZWNTdAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZFVTVlVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVk
VVNWVVJMQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRVU1ZVUkxBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHZhbHVlKTsKQEAgLTMzNzUsMTEgKzM2
NDQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZQogCiBib29s
IHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0
ZWRTdHJpbmdBdHRyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsK
QEAgLTMzOTIsMTEgKzM2NjMsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdB
dHRyKEV4ZQogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbik7CkBAIC0zNDA5LDExICszNjgyLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWwKIAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFu
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtMzQyNiwxMSArMzcw
MSwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BCiAKIGJvb2wg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7CisgICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJl
ZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
c3RhdGUpOwpAQCAtMzQ0NCwxMSArMzcyMSwxMyBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEN1c3RvbVVSTEF0dHIoCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0
T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmco
c3RhdGUpOwpAQCAtMzQ2MiwxOCArMzc0MSwyMCBAQCBib29sIHNldEpTVGVzdE9iakVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1CiAKIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidHlwZWRBcnJheUF0dHIiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAidHlwZWRBcnJheUF0dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gdG9GbG9hdDMyQXJyYXkodmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAg
dGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5
QXR0ciIsICJGbG9hdDMyQXJyYXkiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0eXBlZEFycmF5QXR0ciIsICJGbG9h
dDMyQXJyYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpbXBsLnNldFR5
cGVkQXJyYXlBdHRyKG5hdGl2ZVZhbHVlLmdldCgpKTsKQEAgLTM0ODMsMTEgKzM3NjQsMTMgQEAg
Ym9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFeGVjU3RhdAogCiBib29sIHNldEpTVGVz
dE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNTAwLDExICszNzgzLDEzIEBAIGJvb2wg
c2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24KIAogYm9vbCBzZXRKU1Rlc3RPYmpB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbldpdGhNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uV2l0aE1lc3NhZ2UiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpA
QCAtMzUxNywxMSArMzgwMiwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2JqQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKQEAgLTM1MzYsMTEgKzM4MjMsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbgogCiBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uV2l0
aE1lc3NhZ2UoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25XaXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbldpdGhNZXNzYWdlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVjOwpAQCAtMzU1NSwx
MSArMzg0NCwxMyBAQCBib29sIHNldEpTVGVzdE9iakF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uCiAK
IGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24i
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOwpAQCAtMzU3MiwxMSArMzg2MywxMyBA
QCBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAg
cmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmpl
Y3QiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
QEAgLTM1OTEsMTEgKzM4ODQsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNl
dHRlckV4YwogCiBib29sIHNldEpTVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiY3VzdG9tQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjdXN0b21BdHRy
Iik7CiAgICAgfQogICAgIGNhc3RlZFRoaXMtPnNldEN1c3RvbUF0dHIoKnN0YXRlLCB2YWx1ZSk7
CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNjA0LDExICszODk5LDEzIEBAIGJvb2wgc2V0SlNUZXN0
T2JqQ3VzdG9tQXR0cihFeGVjU3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpPbmZvbyhFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvbmZvbyIpOworICAgICAgICByZXR1cm4g
dGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJv
bmZvbyIpOwogICAgIH0KICAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoKnN0YXRlLCAqY2Fz
dGVkVGhpcywgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBldmVudE5hbWVzKCkuZm9vRXZlbnQsIHZh
bHVlKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM2MTcsMTEgKzM5MTQsMTMgQEAgYm9vbCBzZXRK
U1Rlc3RPYmpPbmZvbyhFeGVjU3RhdGUqIHN0YXRlLAogCiBib29sIHNldEpTVGVzdE9iak9ud2Vi
a2l0Zm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0T2JqZWN0IiwgIm9ud2Via2l0Zm9vIik7CiAgICAgfQogICAgIHNldEV2ZW50SGFuZGxl
ckF0dHJpYnV0ZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCksIGV2
ZW50TmFtZXMoKS5mb29FdmVudCwgdmFsdWUpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMzYzMCwx
MSArMzkyOSwxMyBAQCBib29sIHNldEpTVGVzdE9iak9ud2Via2l0Zm9vKEV4ZWNTdGF0ZSogCiAK
IGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxpbnQzMl90Pigqc3RhdGUsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTM2NDcsMTEg
KzM5NDgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dAogCiBi
b29sIHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNh
bGxXaXRoQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNh
bGxXaXRoQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zNjY0LDE2ICszOTY3LDE4IEBAIGJvb2wg
c2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2EKIAogYm9vbCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFu
YXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsICJUZXN0
T2JqIik7CisgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCAi
VGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8qIGNvbnRl
eHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMzY4NiwxNiArMzk5MSwxOCBAQCBi
b29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250CiAKIGJvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICB9CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUp
KSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAg
dGhyb3dBdHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKCpzdGF0ZSwgKm5hdGl2ZVZhbHVlKTsKQEAgLTM3MDUsMTYgKzQwMTIsMTggQEAgYm9v
bCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dAogCiBib29sIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFS
QU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0
ZVR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dBdHRyaWJ1dGVU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsICJUZXN0T2JqIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgYXV0byogY29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CkBAIC0zNzI3LDE2ICs0MDM2LDE4IEBAIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnQKIAogYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgdGhyb3dBdHRyaWJ1
dGVUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgdGhyb3dB
dHRyaWJ1dGVUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgIlRlc3RPYmoi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3NDksMTYgKzQwNjAsMTggQEAgYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAogCiBib29sIHNldEpTVGVzdE9ialdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIW5h
dGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCAiVGVzdE9iaiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwpAQCAtMzc3MSwxNiArNDA4NCwxOCBAQCBib29sIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250CiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
bmF0aXZlVmFsdWUpKSB7Ci0gICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgIlRlc3RPYmoi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBhdXRvKiBjb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTM3OTMsMTYgKzQxMDgsMTggQEAgYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAogCiBib29sIHNldEpTVGVzdE9ialdpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIp
OworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkgewotICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tB
dHRyaWJ1dGUiLCAiVGVzdE9iaiIpOworICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGUiLCAiVGVzdE9iaiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIGltcGwuc2V0V2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZSgqbmF0aXZlVmFsdWUpOwpAQCAtMzgxMywxMSArNDEzMCwxMyBAQCBib29sIHNldEpTVGVzdE9i
aldpdGhTY3JpcHRBcmd1bWVudHNBbmRDCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiBib29sIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmpl
Y3QiLCAiY29uZGl0aW9uYWxBdHRyMSIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIx
Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbik7CkBAIC0zODMyLDExICs0MTUxLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMShFeGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENv
bmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyMiIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0
YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODUxLDExICs0MTcyLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMihFeGVjU3QKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRy
MyIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zODcw
LDExICs0MTkzLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3QK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlv
bmFsQXR0cjQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxBdHRyNCIpOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KICAgICByZXR1cm4gY2FzdGVk
VGhpcy0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRl
LCAiY29uZGl0aW9uYWxBdHRyNCIpLCB2YWx1ZSk7CkBAIC0zODg1LDExICs0MjEwLDEzIEBAIGJv
b2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnUKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25k
aXRpb25hbEF0dHI1Iik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsQXR0cjUiKTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCiAgICAgcmV0dXJuIGNh
c3RlZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhz
dGF0ZSwgImNvbmRpdGlvbmFsQXR0cjUiKSwgdmFsdWUpOwpAQCAtMzkwMCwxMSArNDIyNywxMyBA
QCBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
Y29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbEF0dHI2Iik7CiAg
ICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgogICAgIHJldHVy
biBjYXN0ZWRUaGlzLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJp
bmcoc3RhdGUsICJjb25kaXRpb25hbEF0dHI2IiksIHZhbHVlKTsKQEAgLTM5MTQsMTEgKzQyNDMs
MTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydQogCiBib29sIHNl
dEpTVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJhbnlBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiYW55QXR0cmlidXRlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVW
YWx1ZSA9IHZhbHVlOwpAQCAtMzkyOSwxOCArNDI2MCwyMCBAQCBib29sIHNldEpTVGVzdE9iakFu
eUF0dHJpYnV0ZShFeGVjU3RhdGUqCiAKIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRl
clR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2ludCIpOworICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9i
amVjdCIsICJtdXRhYmxlUG9pbnQiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVW
YWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAg
ICAgICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1ZSkpIHsKLSAgICAgICAgICAgIHRocm93QXR0cmli
dXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibXV0YWJsZVBvaW50IiwgIlNWR1Bv
aW50Iik7CisgICAgICAgICAgICB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgIm11dGFibGVQb2ludCIsICJTVkdQb2ludCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzk1MSwxOCArNDI4NCwy
MCBAQCBib29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqCiAKIGJvb2wgc2V0
SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAiaW1tdXRhYmxlUG9pbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBTVkdQcm9w
ZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IG51bGxwdHI7CiAgICAgaWYgKCF2
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG5hdGl2ZVZhbHVlID0gSlNTVkdQ
b2ludDo6dG9XcmFwcGVkKHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFuYXRpdmVWYWx1
ZSkpIHsKLSAgICAgICAgICAgIHRocm93QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiaW1tdXRhYmxlUG9pbnQiLCAiU1ZHUG9pbnQiKTsKKyAgICAgICAgICAgIHRocm93
QXR0cmlidXRlVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiaW1t
dXRhYmxlUG9pbnQiLCAiU1ZHUG9pbnQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTM5NzMsMTEgKzQzMDgsMTMgQEAgYm9vbCBzZXRKU1Rlc3RPYmpJ
bW11dGFibGVQb2ludChFeGVjU3RhdAogCiBib29sIHNldEpTVGVzdE9ialN0cmF3YmVycnkoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAic3RyYXdiZXJyeSIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRl
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC0zOTkwLDExICs0MzI3LDEzIEBAIGJvb2wg
c2V0SlNUZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIHMKIAogYm9vbCBzZXRKU1Rlc3RPYmpJ
ZChFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJpZCIpOworICAgICAgICByZXR1
cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIs
ICJpZCIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgdmFsdWUsIE5v
cm1hbENvbnZlcnNpb24pOwpAQCAtNDAwNywxMSArNDM0NiwxMyBAQCBib29sIHNldEpTVGVzdE9i
aklkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFibGVB
dHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVB
dHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJvcGVydHkuCiAgICAgcmV0dXJuIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0
ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIiksIHZhbHVlKTsKQEAgLTQwMjAsMTEgKzQzNjEsMTMg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0ZShFeAogCiBib29sIHNldEpT
VGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAg
IHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CkBAIC00MDM3
LDExICs0MzgwLDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHQK
IAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBV
TlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRy
aWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0
YXRlLCB2YWx1ZSk7CkBAIC00MDU0LDExICs0Mzk5LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVs
bGFibGVTdHJpbmdTZXR0YWJsZUEKIAogYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVVTVlN0cmlu
Z1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51
bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVsbGFi
bGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSB2YWx1ZVRvVVNW
U3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKHN0YXRlLCB2YWx1ZSk7CkBAIC00MDcxLDEx
ICs0NDE4LDEzIEBAIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWIKIAog
Ym9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibnVs
bGFibGVTdHJpbmdWYWx1ZSIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0
ZSwgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNDA4OCwxMSArNDQzNywxMyBAQCBib29s
IHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlCiAKIGJvb2wgc2V0SlNUZXN0T2Jq
QXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
YXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2U8VGVz
dE9iajo6T3B0aW9uYWw+KCpzdGF0ZSwgdmFsdWUpOwpAQCAtNDEwNywxMSArNDQ1OCwxMyBAQCBi
b29sIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVuCiAKIGJvb2wgc2V0SlNUZXN0
T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2FyZHNBdHRy
aWJ1dGUiKTsKICAgICB9CiAgICAgUmVmPFRlc3ROb2RlPiBmb3J3YXJkZWRJbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpLnB1dEZvcndhcmRzQXR0cmlidXRlKCk7CiAgICAgYXV0byYgaW1wbCA9
IGZvcndhcmRlZEltcGwuZ2V0KCk7CkBAIC00MTI1LDExICs0NDc4LDEzIEBAIGJvb2wgc2V0SlNU
ZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGUoRXgKIAogYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3
YXJkc051bGxhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicHV0Rm9yd2Fy
ZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBSZWZQdHI8VGVzdE5vZGU+IGZvcndh
cmRlZEltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCkucHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJp
YnV0ZSgpOwogICAgIGlmICghZm9yd2FyZGVkSW1wbCkKQEAgLTQxNDUsMTEgKzQ1MDAsMTMgQEAg
Ym9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cgogCiBib29sIHNldEpTVGVz
dE9ialN0cmluZ2lmaWVyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ2lmaWVyQXR0
cmlidXRlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHZhbHVlKTsK
QEAgLTQxNzcsMTQgKzQ1MzQsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9y
KFZNJiB2bQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTQxOTcsMTQgKzQ1NTcsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gdGVzdFBhcmFtID0gY29u
dmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lv
bik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MjE3LDYgKzQ1ODAsOSBA
QCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHNp
emVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50
KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1
aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwpAQCAtNDIyOCwxNiArNDU5
NCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24xKHN0YXRlKTsKICNlbmRpZgogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAjZW5k
aWYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ2b2lk
TWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpbXBsLnZvaWRNZXRob2QoKTsKQEAgLTQy
NDYsMTQgKzQ2MTUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAidm9pZE1ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3Mi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVy
dDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MjYyLDE3ICs0NjM0LDIwIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFv
YmpBcmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIs
ICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIp
OworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2Nv
cGUsIDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiLCAiVGVz
dE9iaiIpOwogICAgIGltcGwudm9pZE1ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9uZ0FyZyksIFdU
Rk1vdmUoc3RyQXJnKSwgKm9iakFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJieXRlTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTnVtYmVyKGltcGwuYnl0ZU1ldGhvZCgpKTsKQEAgLTQyODEsMTQgKzQ2NTYsMTcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiYnl0ZU1ldGhvZFdpdGhB
cmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAiVGVzdE9iamVjdCIsICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byBieXRlQXJnID0gY29udmVydDxpbnQ4X3Q+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTQyOTcsMTcgKzQ2NzUsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGF1dG8gb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3Rh
dGUtPmFyZ3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMiwgIm9iakFyZyIsICJUZXN0T2Jq
ZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0
aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMiwgIm9iakFyZyIsICJU
ZXN0T2JqZWN0IiwgImJ5dGVNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhXVEZNb3ZlKGJ5dGVB
cmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIm9jdGV0TWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvY3RldE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kKCkpOwpAQCAtNDMxNiwxNCArNDY5Nywx
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhv
ZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRo
b2RXaXRoQXJncyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG9jdGV0QXJnID0gY29udmVydDx1aW50OF90
Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MzMyLDE3ICs0NzE2LDIwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9X
cmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQot
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJvYmpBcmci
LCAiVGVzdE9iamVjdCIsICJvY3RldE1ldGhvZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAi
b2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIsICJUZXN0T2JqIik7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3Mo
V1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZCgpKTsKQEAgLTQzNTEs
MTQgKzQ3MzgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TG9uZ01ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bG9uZ01ldGhvZFdpdGhBcmdzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kV2l0aEFyZ3MiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMykpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxp
bnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MzY3LDE3ICs0NzU3LDIwIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9i
ajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDIsICJv
YmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwor
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDIsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJsb25nTWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9i
aiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFy
Z3MoV1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib2JqTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvYmpNZXRo
b2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwub2JqTWV0aG9kKCkpOwpAQCAtNDM4NiwxNCArNDc3OSwxNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm9iak1ldGhvZFdpdGhBcmdzIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJvYmpNZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAzKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIGxvbmdBcmcgPSBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTQ0MDIsMTcgKzQ3OTgsMjAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIGF1dG8gb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIp
KTsKICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKCpzdGF0ZSwgMiwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm9iak1ldGhv
ZFdpdGhBcmdzIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAyLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib2Jq
TWV0aG9kV2l0aEFyZ3MiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhz
dGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwub2JqTWV0aG9kV2l0aEFyZ3Mo
V1RGTW92ZShsb25nQXJnKSwgV1RGTW92ZShzdHJBcmcpLCAqb2JqQXJnKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZChFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInVuZm9yZ2VhYmxlTWV0aG9kIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJ1bmZvcmdlYWJsZU1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuZm9y
Z2VhYmxlTWV0aG9kKCkpOwpAQCAtNDQyMSwxNCArNDgyMCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9iakluCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQXJn
VHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIGFyZyA9IHZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtNDQzOCwyOSArNDg0MCwzNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFt
ZXRlciIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHJlc29sdmVyID0gSlNYUGF0
aE5TUmVzb2x2ZXI6OnRvV3JhcHBlZCgqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXNvbHZlcikp
Ci0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgInJlc29s
dmVyIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIs
ICJYUGF0aE5TUmVzb2x2ZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyIiwgIlhQYXRoTlNSZXNvbHZlciIpOwogICAg
IGltcGwubWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcigqcmVzb2x2ZXIpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmlu
Z01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+
KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm51bGxhYmxlU3Ry
aW5nTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ01ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc1N0cmluZ09yTnVsbChzdGF0ZSwgaW1wbC5udWxsYWJsZVN0cmluZ01ldGhvZCgpKTsK
QEAgLTQ0NjksMjAgKzQ4NzcsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxsKHN0YXRlLCBUZXN0T2JqOjpudWxsYWJsZVN0
cmluZ1N0YXRpY01ldGhvZCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJudWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIGluZGV4ID0gY29udmVydDx1aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtNDQ5MiwyMSArNDkwNiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFbnVtQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
RW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGVudW1BcmdW
YWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKICAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJn
OwogICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNlPFRlc3RPYmo6OkVudW1UeXBlPigqc3Rh
dGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFvcHRpb25hbFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlczxUZXN0T2JqOjpFbnVt
VHlwZT4oKSk7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgMCwgImVudW1BcmciLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
RW51bUFyZyIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkp
OwogICAgIGVudW1BcmcgPSBvcHRpb25hbFZhbHVlLnZhbHVlKCk7CiAgICAgaW1wbC5tZXRob2RX
aXRoRW51bUFyZyhlbnVtQXJnKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNDUxNCwxMCArNDkzMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBlbnVtQXJnVmFsdWUgPSBzdGF0
ZS0+YXJndW1lbnQoMCk7CkBAIC00NTI3LDcgKzQ5NDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFlbnVtQXJnKSkKLSAgICAgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlczxUZXN0T2JqOjpFbnVtVHlwZT4oKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJlbnVtQXJnIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIsIGV4cGVjdGVkRW51bWVy
YXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOwogICAgIH0KICAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbEVudW1BcmcoZW51bUFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ1MzUsMTAgKzQ5NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERl
ZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFyZ1ZhbHVlID0gc3RhdGUt
PmFyZ3VtZW50KDApOwpAQCAtNDU1MCw3ICs0OTczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb3B0aW9uYWxWYWx1ZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsIDAsICJlbnVtQXJnIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIs
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6RW51bVR5cGU+KCkpOworICAgICAg
ICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1B
cmdBbmREZWZhdWx0VmFsdWUiLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkVu
dW1UeXBlPigpKTsKICAgICAgICAgZW51bUFyZyA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTsKICAg
ICB9CiAgICAgaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKGVu
dW1BcmcpOwpAQCAtNDU1OSwyMSArNDk4MiwyNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAg
IGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBhdXRvIHN0ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhz
dGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBvYmpBcmcg
PSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJ
S0VMWSghb2JqQXJnKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0
YXRlLCAxLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyIsICJUZXN0T2JqIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMSwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiLCAiVGVzdE9iaiIpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwu
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhXVEZNb3ZlKHN0ckFyZyksICpvYmpB
cmcsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsKQEAgLTQ1ODIsMTQg
KzUwMDgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJp
bmdBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzdHIgPSB2YWx1
ZVRvVVNWU3RyaW5nKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNDU5OSwxNCArNTAyOCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmco
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVV
U1ZTdHJpbmdBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0Fy
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9IHZhbHVlVG9V
U1ZTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjE2LDE0ICs1MDQ4LDE3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhV
U1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051
bGxBc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8g
c3RyID0gdmFsdWVUb1VTVlN0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00
NjMzLDE0ICs1MDY4LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InNlcmlhbGl6ZWRWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VyaWFsaXplZEFyZyA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIDAsIDApOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDY1MCwxNCArNTA4OCwxNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcHRpb25zT2JqZWN0KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3B0aW9uc09iamVjdCIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAib3B0aW9uc09iamVjdCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICBhdXRvIG9vID0gRGljdGlvbmFyeShzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBh
dXRvIG9vbyA9IERpY3Rpb25hcnkoc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaW1w
bC5vcHRpb25zT2JqZWN0KFdURk1vdmUob28pLCBXVEZNb3ZlKG9vbykpOwpAQCAtNDY2NiwxMCAr
NTEwNywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aEV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CkBAIC00NjgwLDEwICs1MTI0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25XaXRoTWVzc2FnZShF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhFeGNlcHRpb25X
aXRoTWVzc2FnZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbldpdGhNZXNzYWdl
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UgZWM7CkBAIC00Njk0LDM0ICs1MTQxLDQzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbU1ldGhvZCIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAiY3VzdG9tTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0
ZWRUaGlzLT5jdXN0b21NZXRob2QoKnN0YXRlKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImN1c3RvbU1ldGhvZFdpdGhBcmdz
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tTWV0aG9kV2l0aEFyZ3MoKnN0YXRl
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Qcml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAicHJpdmF0ZU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAicHJpdmF0ZU1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIGFyZ3VtZW50ID0gc3RhdGUtPmFyZ3VtZW50
KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTQ3MzEsMTQgKzUxODcsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInB1Ymxp
Y0FuZFByaXZhdGVNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBhcmd1bWVudCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NzQ4LDIwICs1MjA3LDIzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDIpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gdHlwZSA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgYXV0byBsaXN0ZW5lciA9IEpT
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHN0YXRlLT5hcmd1bWVudCgxKSwgKmNhc3RlZFRoaXMsIGZh
bHNlLCBjdXJyZW50V29ybGQoc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyKSkK
LSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAxLCAibGlzdGVu
ZXIiLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50TGlzdGVuZXIiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAxLCAibGlzdGVuZXIiLCAiVGVzdE9iamVjdCIsICJhZGRFdmVudExpc3RlbmVyIiwgIkV2ZW50
TGlzdGVuZXIiKTsKICAgICBhdXRvIHVzZUNhcHR1cmUgPSBzdGF0ZS0+YXJndW1lbnQoMikudG9C
b29sZWFuKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ3NzEs
MjAgKzUyMzMsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
UmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0Iiwg
InJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0eXBlID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBhdXRvIGxpc3RlbmVyID0gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoc3RhdGUt
PmFyZ3VtZW50KDEpLCAqY2FzdGVkVGhpcywgZmFsc2UsIGN1cnJlbnRXb3JsZChzdGF0ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIDEsICJsaXN0ZW5lciIsICJUZXN0T2JqZWN0IiwgInJlbW92ZUV2
ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDEsICJsaXN0ZW5lciIsICJUZXN0T2Jq
ZWN0IiwgInJlbW92ZUV2ZW50TGlzdGVuZXIiLCAiRXZlbnRMaXN0ZW5lciIpOwogICAgIGF1dG8g
dXNlQ2FwdHVyZSA9IHN0YXRlLT5hcmd1bWVudCgyKS50b0Jvb2xlYW4oc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDc5NCwxMCArNTI1OSwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwog
ICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlVm9pZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lk
KCpzdGF0ZSk7CkBAIC00ODA2LDEwICs1Mjc0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iaihFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZU9iaiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdFN0YXRlT2JqIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXBsLndpdGhTY3JpcHRTdGF0ZU9iaigqc3RhdGUpKTsKQEAgLTQ4MjAs
MTAgKzUyOTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
T2JqZWN0IiwgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDgzNCwx
MCArNTMwOCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9i
amVjdCIsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhT
Y3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00ODUxLDEwICs1
MzI4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3Qi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
c3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
QEAgLTQ4NjYsMTAgKzUzNDYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZShFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGUiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwpA
QCAtNDg4MSwxMCArNTM2NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CkBAIC00OTAxLDEwICs1Mzg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTQ5MTgsMTAgKzU0
MDcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndp
dGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3Vt
ZW50cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKHN0
YXRlLCAwKSk7CkBAIC00OTMxLDEwICs1NDIzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAid2l0aERvY3VtZW50QXJndW1lbnQiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
IndpdGhEb2N1bWVudEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKQEAgLTQ5NDgsMTAgKzU0NDMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCIpOworICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RP
YmplY3QiLCAid2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8qIGRvY3VtZW50ID0gY2FsbGVy
RE9NV2luZG93KHN0YXRlKS5kb2N1bWVudCgpOwpAQCAtNDk2MywxMCArNTQ2MSwxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJn
dW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ3aXRoQ2FsbGVyV2lu
ZG93QXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIndpdGhDYWxsZXJXaW5kb3dBcmd1bWVudCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaW1wbC53
aXRoQ2FsbGVyV2luZG93QXJndW1lbnQoY2FsbGVyRE9NV2luZG93KHN0YXRlKSk7CkBAIC00OTc1
LDEwICs1NDc2LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBhdXRvIG9wdCA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNDk5MCwxMCArNTQ5NCwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBcmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBvcHQgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IDY2NiA6IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNTAwNSwxNCAr
NTUxMiwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5vbk9wdCA9IGNvbnZlcnQ8aW50
MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTAyNSwxNCArNTUzNSwxNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIG5vbk9wdCA9IGNvbnZlcnQ8aW50MzJf
dD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTA0OCwxMCArNTU2MSwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVl
KCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlz
VmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBzdHIg
PSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTUwNjMsMTAgKzU1Nzks
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsVVNWU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3Rh
dGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
c3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxVU1ZTdHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3Jh
cHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkg
PyBTdHJpbmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmcoc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CkBAIC01MDc4LDEwICs1NTk3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZyhFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBh
dXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0
cmluZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0
ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gbnVsbEF0b20gOiBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50b0F0b21pY1N0cmluZyhzdGF0
ZSk7CkBAIC01MDkzLDEwICs1NjE1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z0FuZERlZmF1bHRWYWx1ZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5n
QW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgp
ID8gQVNDSUlMaXRlcmFsKCJmb28iKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dU
RlN0cmluZyhzdGF0ZSk7CkBAIC01MTA4LDEwICs1NjMzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0Fu
ZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZSIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0
YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gQXRvbWljU3RyaW5nKCJmb28iLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKS50b1N0cmluZyhzdGF0ZSktPnRvQXRvbWljU3RyaW5nKHN0YXRlKTsKQEAgLTUxMjMsMTAg
KzU2NTEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsIik7CisgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGwiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gc3RyID0gc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKS50
b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTM4LDEwICs1NjY5LDEzIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5k
ZWZpbmVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzVW5kZWZpbmVkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhzdGF0ZSk7CkBAIC01MTUzLDEwICs1Njg3LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEF0
b21pY1N0cmluZ0lzTnVsbCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWlj
U3RyaW5nSXNOdWxsIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8g
bnVsbEF0b20gOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoc3RhdGUpLT50
b0F0b21pY1N0cmluZyhzdGF0ZSk7CkBAIC01MTY4LDEwICs1NzA1LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CkBAIC01MTgzLDEwICs1NzIzLDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmlu
Z0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1
bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlTdHJpbmcoKSA6IHZhbHVlVG9VU1ZTdHJpbmco
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MTk4LDEwICs1NzQxLDEz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5n
Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3Bl
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3Ry
aW5nIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIHN0ciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gZW1wdHlBdG9t
IDogc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9BdG9taWNT
dHJpbmcoc3RhdGUpOwpAQCAtNTIxMywxMCArNTc1OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbERvdWJs
ZUlzTmFOIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBu
dW1iZXIgPSBjb252ZXJ0PGRvdWJsZT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIFNob3Vs
ZEFsbG93Tm9uRmluaXRlOjpZZXMpOwpAQCAtNTIyOCwxMCArNTc3NywxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElz
TmFOKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsRmxvYXRJc05hTiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05h
TiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
YXV0byBudW1iZXIgPSBjb252ZXJ0PGZsb2F0Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwg
U2hvdWxkQWxsb3dOb25GaW5pdGU6Olllcyk7CkBAIC01MjQzLDEwICs1Nzk1LDEzIEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExv
bmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9w
dGlvbmFsTG9uZ0xvbmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25n
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIG51bWJlciA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8
aW50NjRfdD4oKSA6IGNvbnZlcnQ8aW50NjRfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNTI1OCwxMCArNTgxMywxMyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxM
b25nTG9uZ0lzWmVybyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhv
ZFdpdGhPcHRpb25hbExvbmdMb25nSXNaZXJvIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxMb25nTG9uZ0lzWmVybyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgYXV0byBudW1iZXIgPSBjb252ZXJ0PGludDY0X3Q+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKQEAgLTUyNzMsMTAgKzU4MzEs
MTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmciKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmciKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gc3RhdGUtPmFy
Z3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBPcHRpb25hbDx1aW50NjRfdD4oKSA6IGNvbnZlcnQ8
dWludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252
ZXJzaW9uKTsKQEAgLTUyODgsMTAgKzU4NDksMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVy
byhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25h
bFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gbnVtYmVyID0gY29udmVydDx1aW50NjRfdD4oKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNTMwMywxMCAr
NTg2NywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNTMxOCwxMCArNTg4NSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZCgpID8gVmVjdG9yPFN0cmluZz4oKSA6IHRvTmF0aXZlQXJyYXk8U3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CkBAIC01MzMzLDEwICs1
OTAzLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBhdXRvIGIgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/IE9w
dGlvbmFsPGJvb2w+KCkgOiBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9Cb29sZWFuKHN0
YXRlKTsKQEAgLTUzNDgsMTAgKzU5MjEsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNG
YWxzZSIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8g
YiA9IHN0YXRlLT5hcmd1bWVudCgwKS50b0Jvb2xlYW4oc3RhdGUpOwpAQCAtNTM2MywxMCArNTkz
OSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBbnkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoT3B0aW9uYWxBbnkiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbEFueSIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0
byBhID0gc3RhdGUtPmFyZ3VtZW50KDApOwpAQCAtNTM3NiwxNyArNTk1NSwyMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlV3JhcHBlciIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgVGVzdE9iaiogb2JqID0gbnVsbHB0cjsKICAgICBpZiAoIXN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIG9iaiA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlm
IChVTkxJS0VMWSghb2JqKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKCpzdGF0ZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlciIsICJUZXN0T2JqIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJvYmoiLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXIiLCAiVGVzdE9iaiIpOwogICAgIH0K
ICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihXVEZNb3ZlKG9iaikp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01Mzk0LDE3
ICs1OTc2LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVs
bCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxs
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBU
ZXN0T2JqKiBvYmogPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgb2JqID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvYmopKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAib2Jq
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxs
IiwgIlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iaiIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhP
cHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIsICJUZXN0T2JqIik7CiAgICAgfQogICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKFdURk1vdmUob2JqKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0MTIsMTAg
KzU5OTcsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2
ZXI+IHJlc29sdmVyID0gbnVsbHB0cjsKQEAgLTU0MjQsNyArNjAxMiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXJlc29sdmVyKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgInJlc29sdmVyIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyIiwgIlhQYXRo
TlNSZXNvbHZlciIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAicmVzb2x2ZXIiLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiLCAiWFBhdGhOU1Jlc29sdmVyIik7CiAgICAgfQog
ICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKFdURk1vdmUocmVzb2x2
ZXIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTQz
MiwxNiArNjAyMCwxOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxs
YmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFko
IXN0YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJn
dW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CisgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIGF1dG8gY2FsbGJh
Y2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdp
dGhDYWxsYmFja0FyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU0NDksMTkgKzYwNDAsMjIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5k
Q2FsbGJhY2tBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+
dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0
KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0FyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIGF1dG8g
Y2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKFdURk1vdmUobm9uQ2FsbGJhY2sp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTU0NjksMTYgKzYwNjMsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhy
b3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmci
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJl
ZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDAp
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgaWYgKCFzdGF0ZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIp
OwogICAgICAgICBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3Qoc3Rh
dGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwog
ICAgIH0KICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUo
Y2FsbGJhY2spKTsKQEAgLTU0ODcsMTYgKzYwODQsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlv
bkFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1l
bnQoMCkuaXNGdW5jdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRN
dXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBhdXRvIGNh
bGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTUwNCwxOSArNjEw
NCwyMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tG
dW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tGdW5jdGlvbkFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRv
IG5vbkNhbGxiYWNrID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMSwgImNh
bGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0
aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiAgICAg
YXV0byBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZShhc09iamVjdChz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7
CiAgICAgaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJn
KFdURk1vdmUobm9uQ2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU1MjQsMTYgKzYxMjcsMTkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFJlZlB0cjxUZXN0Q2Fs
bGJhY2tGdW5jdGlvbj4gY2FsbGJhY2s7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNV
bmRlZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVu
dCgwKS5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAw
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFu
ZE9wdGlvbmFsQXJnIik7CiAgICAgICAgIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bjo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICB9CiAgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsKQEAgLTU1NDIsMTAgKzYx
NDgsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0
aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBSZWZQ
dHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAgICAgICAgIGlmICghc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0
aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0
aW9uYWxBcmciKTsKICAgICAgICAgY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFj
azxKU1Rlc3RDYWxsYmFjaz4oc3RhdGUsIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwog
ICAgIH0KICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyhXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC01NTU0LDEwICs2MTYzLDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkpCi0gICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOworICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2Fs
bGJhY2tBcmciKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJh
Y2s8SlNUZXN0Q2FsbGJhY2s+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0
ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
ICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoV1RGTW92ZShjYWxsYmFj
aykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NTY2
LDEwICs2MTc4LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ28K
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
ImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSk7CkBAIC01NTgxLDEwICs2MTk2LDEzIEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxNZXRob2QyIik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuY29uZGl0aW9uYWxNZXRob2QyKCk7CkBAIC01NTk2
LDEwICs2MjE0LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxN
ZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9uYWxN
ZXRob2QzIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwuY29uZGl0aW9uYWxN
ZXRob2QzKCk7CkBAIC01NjEwLDE5ICs2MjMxLDIyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0T2JqKiBv
YmpBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKICAgICAgICAgb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQot
ICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAib2Jq
QXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7CisgICAg
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
IDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoi
KTsKICAgICB9CiAgICAgYXV0byBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJp
bmcoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAt
NTYzMywxOSArNjI1NywyMiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgVGVzdE9iaiogb2JqQXJnID0gbnVsbHB0
cjsKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CiAg
ICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNrZWRBcmd1
bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iakFyZyIsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiLCAiVGVzdE9iaiIpOworICAgICAgICAgICAgcmV0dXJu
IHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwg
IlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7CiAgICAgfQogICAg
IGF1dG8gbG9uZ0FyZyA9IHN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9u
YWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTY1NiwxNCArNjI4MywxNyBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyhFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0Iiwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBzdHJBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTY3MywxNCArNjMwMywxNyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0
T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgYXV0byBsb25nQXJnID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC01NjkwLDE2ICs2MzIzLDE5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1l
dGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBpZiAoVU5MSUtFTFkoIXN0
YXRlLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9i
amVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgYXV0byBjYWxsYmFjayA9IEpTVGVzdENh
bGxiYWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZN
b3ZlKGNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTU3MDcsMTkgKzYzNDMsMjIgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDYoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVz
dE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0
aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIERPTVN0cmluZ0xpc3QqIGxp
c3RBcmcgPSBudWxscHRyOwogICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKICAgICAgICAgbGlzdEFyZyA9IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVk
KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbGlz
dEFyZykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IDAsICJsaXN0QXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIsICJET01TdHJp
bmdMaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsIDAsICJsaXN0QXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1l
dGhvZCIsICJET01TdHJpbmdMaXN0Iik7CiAgICAgfQogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhv
ZChXVEZNb3ZlKGxpc3RBcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwpAQCAtNTcyNywxNCArNjM2NiwxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNyhFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2Fk
ZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFy
ZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NzQ0LDMxICs2Mzg2LDM3IEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQotICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iamVjdCIsICJv
dmVybG9hZGVkTWV0aG9kIiwgIlRlc3RPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAib2JqQXJnIiwgIlRlc3RPYmplY3Qi
LCAib3ZlcmxvYWRlZE1ldGhvZCIsICJUZXN0T2JqIik7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0
aG9kKCpvYmpBcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kOShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZl
QXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC01Nzc4LDE0ICs2NDI2LDE3IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMChFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU3OTUsMTQg
KzY0NDYsMTcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDExKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ckFyZyA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC01ODEyLDEwICs2NDY2LDEzIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHIKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2Qi
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIFZl
Y3RvcjxCbG9iKj4gYmxvYkFyZ3M7CkBAIC01ODI0LDcgKzY0ODEsNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgY291
bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBh
dXRvKiBpdGVtID0gSlNCbG9iOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKICAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCBpLCAiYmxvYkFyZ3MiLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVk
TWV0aG9kIiwgIkJsb2IiKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgaSwgImJsb2JBcmdzIiwgIlRlc3RPYmplY3QiLCAib3Zl
cmxvYWRlZE1ldGhvZCIsICJCbG9iIik7CiAgICAgICAgIGJsb2JBcmdzLnVuY2hlY2tlZEFwcGVu
ZChpdGVtKTsKICAgICB9CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoYmxvYkFy
Z3MpKTsKQEAgLTU4MzMsNiArNjQ5MCw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFy
Z3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMiwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAg
ICAgaWYgKGFyZ3NDb3VudCA9PSAwKSB7CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMihzdGF0ZSk7CkBAIC01ODY5LDE5ICs2NTI5LDIy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKHN0YXRl
KTsKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3RyQXJnID0gc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTU4ODksNyArNjU1Miw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHIKICAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CiAgICAgICAgIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgxKSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMSwgIm9iakFyZyIsICJU
ZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVz
dE9iaiIpOworICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAxLCAib2JqQXJnIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlciIsICJUZXN0T2JqIik7CiAgICAgfQogICAgIGltcGwub3Zl
cmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcihXVEZNb3ZlKHN0ckFyZyksIFdURk1v
dmUob2JqQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
QEAgLTU4OTcsMTkgKzY1NjAsMjIgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcgogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjIoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0
byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFs
UGFyYW1ldGVyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFy
YW1ldGVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIFRlc3RPYmoqIG9iakFy
ZyA9IG51bGxwdHI7CiAgICAgaWYgKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51
bGwoKSkgewogICAgICAgICBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmci
LCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyIiwg
IlRlc3RPYmoiKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRN
ZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiLCAiVGVzdE9iaiIpOwogICAgIH0KICAgICBhdXRv
IGxvbmdBcmcgPSBzdGF0ZS0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGlu
dDMyX3Q+KCkgOiBjb252ZXJ0PGludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKQEAgLTU5MjAsNiArNjU4Niw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMiwg
c3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAg
ICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CkBAIC01OTM3LDE3ICs2NjA2LDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyKHN0YXRlKTsKICAgICAgICAg
cmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjEoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bkNsYXNzTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFRlc3RPYmo6OmNsYXNzTWV0aG9kKCk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2RXaXRoT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBhcmcgPSBzdGF0ZS0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPGludDMyX3Q+KCkgOiBjb252ZXJ0PGludDMy
X3Q+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9u
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTU5NTcsMTYgKzY2MzIsMjIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhv
ZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Y2xhc3NNZXRob2QyKHN0YXRlKSk7
CiB9CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMShFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYXJn
ID0gY29udmVydDxpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01OTc5LDggKzY2
NjAsMTEgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDbwogI2lmIEVO
QUJMRShDb25kaXRpb24xKQogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB0eXBlID0gc3RhdGUtPmFy
Z3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTU5OTMsNiArNjY3Nyw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ28KICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEsIHN0
YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAg
ICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwpAQCAtNjAwNCwyMCArNjY5MSwyMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDEyKHN0YXRlKTsKICNlbmRpZgogICAgIH0KLSAgICByZXR1cm4gYXJnc0Nv
dW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdzQ291
bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSk7CiB9CiAjZW5kaWYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RPYmplY3QiLCAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNs
YXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1
dG8gb2JqQXJnc1Nob3J0ID0gY29udmVydDx1aW50MTZfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCksIENsYW1wKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwMzAs
MTQgKzY3MjAsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RP
YmplY3QiLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlIik7CisgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjbGFz
c01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAg
ICAgYXV0byBvYmpBcmdzU2hvcnQgPSBjb252ZXJ0PHVpbnQxNl90Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSwgRW5mb3JjZVJhbmdlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTYwNTAsMTQgKzY3NDMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7
CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
c3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0
aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYwNjcsMTQgKzY3NjMsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAg
ICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgInN0cmluZ0FycmF5RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byB2YWx1ZXMgPSB0b05h
dGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQpAQCAtNjA4NywxOCArNjc4NiwyMSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1Zh
bHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdMaXN0
RnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBhdXRv
IHZhbHVlcyA9IEpTRE9NU3RyaW5nTGlzdDo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZXMpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIDAsICJ2YWx1ZXMiLCAiVGVzdE9iamVjdCIsICJkb21TdHJpbmdM
aXN0RnVuY3Rpb24iLCAiRE9NU3RyaW5nTGlzdCIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1
bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJ2YWx1ZXMiLCAiVGVzdE9iamVj
dCIsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iLCAiRE9NU3RyaW5nTGlzdCIpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwu
ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uKCp2YWx1ZXMsIGVjKSk7CiAKICAgICBzZXRET01FeGNlcHRp
b24oc3RhdGUsIGVjKTsKQEAgLTYxMDcsMTQgKzY4MDksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVl
bmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1
ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aEFuZFdp
dGhvdXROdWxsYWJsZVNlcXVlbmNlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2UiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0
byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYxMjcsMTQgKzY4
MzIsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxl
bWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhp
c1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoq
Pih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJnZXRFbGVtZW50
QnlJZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dT
Y29wZSwgIlRlc3RPYmplY3QiLCAiZ2V0RWxlbWVudEJ5SWQiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBlbGVtZW50SWQgPSBBdG9taWNTdHJpbmcoc3RhdGUtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKHN0YXRlKS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhzdGF0ZSkpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjE0NCwxMCArNjg1MiwxMyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImdldFNWR0RvY3VtZW50Iik7Cisg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dE9iamVjdCIsICJnZXRTVkdEb2N1bWVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC02MTYxLDM2
ICs2ODcyLDQyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29udmVydDEiKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0T2JqZWN0IiwgImNvbnZlcnQxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IGF1dG8gdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRU
eXBlRXJyb3IoKnN0YXRlLCAwLCAidmFsdWUiLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MSIsICJU
ZXN0Tm9kZSIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQxIiwgIlRlc3RO
b2RlIik7CiAgICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0T2JqZWN0IiwgImNvbnZlcnQyIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJjb252ZXJ0MiIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUgPSBudWxscHRyOwog
ICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAg
ICAgdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0Iiwg
ImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJ2YWx1ZSIsICJUZXN0T2JqZWN0Iiwg
ImNvbnZlcnQyIiwgIlRlc3ROb2RlIik7CiAgICAgfQogICAgIGltcGwuY29udmVydDIoV1RGTW92
ZSh2YWx1ZSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC02MTk4LDE0ICs2OTE1LDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHIKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAiY29u
dmVydDMiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpOwogICAgIGF1dG8gdmFsdWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjIxNSwxNCArNjkzNSwx
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsK
ICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbnZlcnQ0Iik7CisgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVj
dCIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHZh
bHVlID0gdmFsdWVUb1N0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYyMzIs
MTAgKzY5NTUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJtdXRhYmxlUG9pbnRGdW5jdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAibXV0YWJsZVBvaW50RnVuY3Rp
b24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLm11dGFibGVQb2ludEZ1
bmN0aW9uKCkpKTsKQEAgLTYyNDQsMTAgKzY5NzAsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2Jq
ZWN0IiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46
OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpOwpAQCAtNjI1NiwxMCArNjk4
NSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2Uo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7
CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJvcmFuZ2UiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgIm9yYW5nZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaW1wbC5iYW5hbmEoKTsKQEAgLTYyNjgsMTQgKzcwMDAsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAg
ICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5n
KHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYyODgsMTQgKzcw
MjMsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNEb3VibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+
dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0
ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJ2YXJp
YWRpY0RvdWJsZU1ldGhvZCIpOworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpz
dGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNEb3VibGVNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3Vi
bGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVz
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTYzMDgsMjQgKzcwNDYsMjcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2Rl
TWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNW
YWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidmFyaWFkaWNOb2Rl
TWV0aG9kIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ2YXJpYWRpY05vZGVNZXRob2QiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUt
PmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIWhlYWQpKQotICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJoZWFkIiwgIlRlc3RPYmplY3QiLCAi
dmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAwLCAiaGVhZCIsICJUZXN0T2JqZWN0Iiwg
InZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CiAgICAgVmVjdG9yPE5vZGUqPiB0YWlsOwog
ICAgIEFTU0VSVCgxIDw9IHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIHRhaWwucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIC0gMSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMSwgY291bnQgPSBzdGF0ZS0+YXJndW1lbnRDb3VudCgpOyBpIDwgY291bnQ7
ICsraSkgewogICAgICAgICBhdXRvKiBpdGVtID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPnVu
Y2hlY2tlZEFyZ3VtZW50KGkpKTsKICAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgcmV0
dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCBpLCAidGFpbCIsICJUZXN0T2JqZWN0
IiwgInZhcmlhZGljTm9kZU1ldGhvZCIsICJOb2RlIik7CisgICAgICAgICAgICByZXR1cm4gdGhy
b3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIGksICJ0YWlsIiwgIlRlc3RP
YmplY3QiLCAidmFyaWFkaWNOb2RlTWV0aG9kIiwgIk5vZGUiKTsKICAgICAgICAgdGFpbC51bmNo
ZWNrZWRBcHBlbmQoaXRlbSk7CiAgICAgfQogICAgIGltcGwudmFyaWFkaWNOb2RlTWV0aG9kKCpo
ZWFkLCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTYzMzQsMTQgKzcwNzUsMTcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Cisg
ICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RPYmplY3QiLCAiYW55Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJhbnkiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CiAgICAgYXV0byBhID0gY29udmVydDxmbG9hdD4oKnN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwpAQCAtNjM2MCwxMCArNzEwNCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVj
U3RhdGUqIHN0YXRlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9t
aXNlRnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMs
IEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGltcGwudGVzdFByb21pc2VGdW5jdGlvbihEZWZlcnJlZFdyYXBwZXIoc3RhdGUs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpKTsKQEAgLTYzNzgs
MTQgKzcxMjUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgog
CiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0
YXRlLCBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1
ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0
IiwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOworICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAi
dGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNvbnZlcnQ8ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNjQwMSwxMCArNzE1MSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblBy
b21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJl
ZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIp
OworICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwpAQCAtNjQyMSwxMCArNzE3NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByCiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJn
dW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1
dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRp
b25hbEludEFyZ3VtZW50Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9w
dGlvbmFsSW50QXJndW1lbnQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3Rl
ZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
d3JhcHBlZCgpOwogICAgIGF1dG8gYSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgp
ID8gT3B0aW9uYWw8aW50MzJfdD4oKSA6IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwpAQCAtNjQ0MiwxNCArNzE5
OCwxNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZU92ZXJsb2FkZWRGdW5jdGlvbjFQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRo
aXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdFByb21p
c2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3ZlcmxvYWRl
ZEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNv
bnZlcnQ8ZmxvYXQ+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZp
bml0ZTo6Tm8pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjQ2NSwyMyAr
NzIyNCwyOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAKIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTUHJv
bWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmplY3QiLCAidGVzdFBy
b21pc2VPdmVybG9hZGVkRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgInRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gcmVx
dWVzdCA9IEpTRmV0Y2hSZXF1ZXN0Ojp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoIXJlcXVlc3QpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIDAsICJyZXF1ZXN0IiwgIlRlc3RPYmplY3QiLCAidGVzdFByb21pc2VP
dmVybG9hZGVkRnVuY3Rpb24iLCAiRmV0Y2hSZXF1ZXN0Iik7CisgICAgICAgIHJldHVybiB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgMCwgInJlcXVlc3QiLCAiVGVz
dE9iamVjdCIsICJ0ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbiIsICJGZXRjaFJlcXVlc3Qi
KTsKICAgICBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKCpyZXF1ZXN0LCBEZWZl
cnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVm
ZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90IGFy
Z3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAg
ICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdB
cmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC02NDkxLDcgKzcyNTYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgICAgICAgICByZXR1
cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlv
bjEoc3RhdGUpOwogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gYXJn
c0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgIHJldHVybiBhcmdz
Q291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRlKiwgSlNQcm9t
aXNlRGVmZXJyZWQqKTsKQEAgLTY1MDIsNiArNzI2Nyw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ28KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvblByb21pc2Uo
RXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCkKIHsK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVz
dE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihEZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBw
cm9taXNlRGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQpAQCAtNjUxNCw2ICs3MjgyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDbwogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNv
bnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblBy
b21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJl
ZCkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb24oRGVmZXJyZWRXcmFwcGVyKHN0YXRlLCBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgcHJvbWlzZURlZmVy
cmVkKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihzdGF0ZSwgZWMpOwpAQCAtNjUyMiwxMyAr
NzI5MywxNiBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvCiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayhFeGVjU3RhdGUqIHN0YXRlKQog
eworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICNpZiBF
TkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1
c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwogI2VuZGlmCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoTmVlZHNDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayIpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3Qi
LCAibWV0aG9kV2l0aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2siKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwubWV0aG9kV2l0
aE5lZWRzQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2soKTsKQEAgLTY1MzgsMTQgKzczMTIsMTcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShD
T05ESVRJT04xKQogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRl
c3RPYmplY3QiLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOworICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RPYmplY3QiLCAiY29uZGl0aW9u
YWxPdmVybG9hZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0ciA9
IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC02NTU4LDE0ICs3MzM1LDE3IEBAIHN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHIKICNpZiBFTkFCTEUoQ09ORElUSU9OMikKIHN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE92ZXJsb2FkMihFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50
aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlv
bmFsT3ZlcmxvYWQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
IHRocm93U2NvcGUsICJUZXN0T2JqZWN0IiwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhID0gY29udmVydDxpbnQzMl90Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC02NTc4LDYgKzczNTgsOSBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByCiAjaWYgRU5BQkxFKENPTkRJVElPTjEpIHx8IEVOQUJM
RShDT05ESVRJT04yKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgc2l6ZV90
IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7
CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hp
bmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CkBAIC02NTg5LDIwICs3MzcyLDIz
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICAgICAgcmV0
dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDEoc3RhdGUp
OwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9y
KHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KICNlbmRpZgogCiBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xl
Q29uZGl0aW9uYWxPdmVybG9hZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIs
ICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRp
b25hbE92ZXJsb2FkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBw
ZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc3Ry
ID0gc3RhdGUtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKHN0YXRlKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKQEAgLTY2MTMsMTQgKzczOTksMTcgQEAgc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogI2lmIEVOQUJMRShDT05ESVRJT04pCiBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29u
ZGl0aW9uYWxPdmVybG9hZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0
ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBz
dGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0g
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iamVjdCIsICJz
aW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE9iamVjdCIsICJzaW5nbGVDb25kaXRpb25h
bE92ZXJsb2FkIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gYSA9IGNv
bnZlcnQ8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNp
b24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNjYzMiw2ICs3NDIxLDkg
QEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcgogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0
aW9uYWxPdmVybG9hZChFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjpt
aW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50
ID09IDEpIHsKICAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgwKTsKQEAgLTY2NDEsMTkgKzc0MzMsMjIgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogI2VuZGlmCiAgICAgICAgIHJldHVybiBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxKHN0YXRlKTsKICAg
ICB9Ci0gICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKKyAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdChFeGVjU3RhdGUq
IHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRv
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgImF0dGFjaFNoYWRvd1Jvb3QiKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0T2JqZWN0
IiwgImF0dGFjaFNoYWRvd1Jvb3QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBpbml0ID0gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oKnN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNjY2MywxMCArNzQ1OCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0
YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqZWN0IiwgInRv
U3RyaW5nIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdE9iamVjdCIsICJ0b1N0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgaW1wbC5zdHJpbmdpZmllckF0dHJpYnV0ZSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9uIDIwNTE4
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNTMgKzY3LDY1IEBA
IHR5cGVkZWYgSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGUKIAogc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShF
eGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJU
KGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUs
IHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAg
YXV0byBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWFycmF5QnVm
ZmVyKSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAi
YXJyYXlCdWZmZXIiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJy
YXlCdWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAwLCAiYXJyYXlCdWZmZXIiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXIiKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmFycmF5QnVmZmVyKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMihFeGVjU3RhdGUqIHN0
YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMp
OwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBhcnJheUJ1
ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghYXJyYXlCdWZmZXJW
aWV3KSkKLSAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRUeXBlRXJyb3IoKnN0YXRlLCAwLCAi
YXJyYXlCdWZmZXJWaWV3IiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwg
IkFycmF5QnVmZmVyVmlldyIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJhcnJheUJ1ZmZlclZpZXciLCAiVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJyYXlCdWZmZXJWaWV3Iik7CiAgICAgYXV0byBv
YmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCphcnJheUJ1ZmZlclZp
ZXcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2JqZWN0KSkpOwogfQogCiBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAg
ICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBhdXRvIGJsb2IgPSBKU0Jsb2I6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkp
OwogICAgIGlmIChVTkxJS0VMWSghYmxvYikpCi0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMCwgImJsb2IiLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMi
LCBudWxscHRyLCAiQmxvYiIpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsIDAsICJibG9iIiwgIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzIiwgbnVsbHB0ciwgIkJsb2IiKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpjcmVhdGUoKmJsb2IpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KU05ld2x5Q3JlYXRlZChzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1v
dmUob2JqZWN0KSkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVj
dEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Kj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBhdXRvIHN0cmluZyA9IHN0YXRlLT5hcmd1
bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xMjMsNiArMTM1LDkgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25z
dHJ1Y3RKUwogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUt
PmNhbGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgVmVjdG9yPGludDMyX3Q+
IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50MzJfdD4oKnN0YXRlLCAwKTsKQEAgLTEz
NCw2ICsxNDksOSBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAK
IHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogewor
ICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXpl
X3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgp
KTsKICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRlKTsKQEAgLTE1MCw3ICsxNjgsNyBAQCB0
ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgCiAgICAgICAgICAgICByZXR1
cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoc3RhdGUpOwogICAgICAg
ICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczQoc3RhdGUpOwog
ICAgIH0KLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCkBAIC0yMDgsMTggKzIyNiwyMiBAQCB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmRlc3RyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CiAKIGJvb2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0Nv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjA1
MTgzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw2ICs2Niw5IEBAIHR5cGVkZWYgSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGUKIAog
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlMShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1
Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGF1
dG8gc2VxdWVuY2VPZlN0cmluZ3MgPSBzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWQoKSA/
IFZlY3RvcjxTdHJpbmc+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwpAQCAtNzcsMTAgKzgwLDEzIEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlMKIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlMihFeGVj
U3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rvcio+KHN0YXRlLT5jYWxsZWUoKSk7CiAg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CiAgICAgYXV0byBzdHJpbmcgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3Rh
dGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtOTAsNiArOTYsOSBAQCBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTCiAKIHRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeGVjU3RhdGUqIHN0YXRlKQogeworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBzaXplX3Qg
YXJnc0NvdW50ID0gc3RkOjptaW48c2l6ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsK
ICAgICBpZiAoYXJnc0NvdW50ID09IDApIHsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UxKHN0YXRlKTsKQEAgLTEwMiw3ICsx
MTEsNyBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgCiAgICAgICAg
ICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZTEoc3RhdGUpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yc1dpdGhTZXF1ZW5jZTIoc3RhdGUpOwogICAgIH0KLSAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRo
cm93U2NvcGUpOwogfQogCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCkBAIC0xNjAs
MTggKzE2OSwyMiBAQCB2b2lkIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2U6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJv
b2wgc2V0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzV2l0aFNlcXVlbmNlUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTgsMTggKzE1OCwyMiBAQCBib29sIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM6OmdldE93blByb3BlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3Bl
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6Omdl
dENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKIGJvb2wgc2V0SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
KiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21P
YmplY3QpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMTk0LDE0
ICsxOTgsMTcgQEAgSlNWYWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdAogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5
cGVGdW5jdGlvbk5hbWVkSXRlbShFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAi
VGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAibmFtZWRJdGVtIik7CisgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMi
LCAibmFtZWRJdGVtIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBhdXRvIG5hbWUgPSBzdGF0ZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoc3RhdGUpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHJldmlzaW9uIDIw
NTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQs
MTIgKzEzNCwxNCBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwog
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGlt
cGwudmFsdWUoKSA/IGltcGwudmFsdWUoKS0+ZGVzZXJpYWxpemUoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwpAQCAtMTQ5LDEyICsxNTEsMTQgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZhbHVlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUg
ZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicmVhZG9ubHlWYWx1ZSIpOworICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBpbXBsLnJlYWRvbmx5VmFsdWUoKSA/IGltcGwucmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlh
bGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CkBA
IC0xNjQsMTIgKzE2OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGRlY29kZWRUaGlzVmFsdWUpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpzdGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2Fj
aGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwg
dGhyb3dTY29wZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVk
VmFsdWUiKTsKICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlz
LT5tX2NhY2hlZFZhbHVlLmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
Y2hlZFZhbHVlKTsKQEAgLTE4MiwxMiArMTg4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBW
TSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSIsICJwb3J0cyIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRl
LCB0aHJvd1Njb3BlLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0
cyIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwucG9ydHMoKSk7CkBAIC0xOTcsMTIgKzIwNSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVk
VGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25seVZhbHVlIik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsKICAg
ICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSBjYXN0ZWRUaGlzLT5tX2NhY2hlZFJl
YWRvbmx5VmFsdWUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FjaGVk
VmFsdWUpOwpAQCAtMjE1LDE4ICsyMjUsMjIgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CiAKIGJv
b2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0
aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMjM1LDExICsyNDksMTMgQEAgYm9vbCBzZXRK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcgogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBz
dGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
ICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CisgICAgICAgIHJldHVybiB0aHJv
d1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CkBAIC0yNTIsMTEgKzI2OCwxMyBA
QCBib29sIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyCiAKIGJvb2wgc2V0SlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpz
dGF0ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUi
KTsKKyAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29w
ZSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIHZhbHVl
LCAwLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDE1ICsxMjQsMTggQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdFR5cGVkZQogCiB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cio+KHN0YXRlLT5jYWxsZWUoKSk7CiAgICAgQVNTRVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMikpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBoZWxsbyA9IHN0YXRlLT5hcmd1
bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDEs
ICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7CisgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIDEs
ICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7CiAgICAgYXV0byB0ZXN0
Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvIG9i
amVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKFdURk1vdmUoaGVsbG8pLCAqdGVzdENhbGxiYWNr
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGNh
c3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpKTsKQEAgLTIxMCwxMiAr
MjEzLDE0IEBAIHZvaWQgSlNUZXN0VHlwZWRlZnM6OmRlc3Ryb3koSlNDOjpKU0NlbGwKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGRl
Y29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRUaGlzVmFs
dWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwpAQCAtMjI1LDEy
ICsyMzAsMTQgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbgogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsK
ICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRl
Y29kZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJp
bW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFi
bGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPndyYXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwuaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSgpLT5kZXNlcmlhbGl6ZShzdGF0ZSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDog
anNOdWxsKCk7CkBAIC0yNDAsMTIgKzI0NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0ltbXV0YWJsZVNlCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlz
VmFsdWUpOwogICAgIEpTVmFsdWUgZGVjb2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpOwogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oZGVjb2RlZFRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5
cGVkZWZzIiwgIlRlc3RTdWJPYmoiKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7CiAg
ICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2JqOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTI1
MywxMiArMjYyLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBK
U1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29k
ZWRUaGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0yNzAsMTIgKzI4MSwxNCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihkZWNvZGVkVGhpc1ZhbHVlKTsKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwg
IlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKQEAgLTI4NSwxMiArMjk4
LDE0IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXQKIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Zh
bHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKTsKICAgICBh
dXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KGRlY29kZWRU
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdB
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CkBAIC0zMDIsMTIgKzMxNywxNCBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNWYWx1ZSBk
ZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CiAgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihkZWNvZGVkVGhpc1Zh
bHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRl
ckV4Y2VwdGlvbiIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIGltcGwu
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oKSk7CkBAIC0zMTcsMTggKzMzNCwyMiBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNU
ZXN0VHlwZWRlZnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlw
ZWRlZnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFkb21PYmplY3QpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFR5cGVkZWZzOjpnZXRDb25zdHJ1Y3Rv
cihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCiBib29sIHNl
dEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZt
ID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKQEAgLTMzNywxMSArMzU4LDEzIEBAIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3RvcihFeGVjU3QKIAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInVu
c2lnbmVkTG9uZ0xvbmdBdHRyIik7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJv
cigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0
dHIiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDx1aW50NjRfdD4oKnN0YXRlLCB2YWx1ZSwgTm9y
bWFsQ29udmVyc2lvbik7CkBAIC0zNTQsMTEgKzM3NywxMyBAQCBib29sIHNldEpTVGVzdFR5cGVk
ZWZzVW5zaWduZWRMb25nTG9uZ0F0CiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNJbW11dGFibGVT
ZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpT
VGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CisgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRl
ZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCB2YWx1ZSwgMCwgMCk7CkBAIC0zNzEs
MTEgKzM5NiwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzSW1tdXRhYmxlU2VyaWFsaXplCiAK
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0
dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJv
d1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8aW50MzJfdD4oKnN0YXRlLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lv
bik7CkBAIC0zODgsMTEgKzQxNSwxMyBAQCBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhH
ZXR0ZXJFeGNlCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0
dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIik7CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC00MDcsMTEgKzQzNiwxMyBAQCBib29sIHNldEpT
VGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNlCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNT
dHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVk0mIHZtID0g
c3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7
CiAgICAgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFR5
cGVkZWZzKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgcmV0dXJuIHRocm93U2V0dGVyVHlwZUVycm9yKCpzdGF0
ZSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAg
ICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVz
dFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKHN0YXRlKTsKQEAgLTQyNCwxMSArNDU1LDEzIEBAIGJvb2wg
c2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHQKIAogYm9vbCBzZXRKU1Rlc3RUeXBl
ZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7ICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7
CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUs
ICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKQEAgLTQ0OCwxMCArNDgxLDEzIEBAIEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6
OmdldENvbnN0cnVjdG9yKFYKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZN
JiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwg
IlRlc3RUeXBlZGVmcyIsICJmdW5jIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImZ1bmMiKTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgYXV0byB4ID0g
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkKCkgPyBWZWN0b3I8aW50MzJfdD4oKSA6IHRv
TmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OwpAQCAtNDYzLDE0ICs0OTksMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
VHlwZWRlZnMiLCAic2V0U2hhZG93Iik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCB0aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgInNldFNoYWRvdyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gd2lkdGggPSBjb252ZXJ0PGZs
b2F0Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Olll
cyk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00OTIsMTQgKzUzMSwxNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRl
LT50aGlzVmFsdWUoKTsKICAgICBhdXRvIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dFR5cGVkZWZzKj4odGhpc1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RUeXBlZGVmcyIs
ICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aFNlcXVl
bmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1
ZW5jZUFyZyA9IHRvUmVmUHRyTmF0aXZlQXJyYXk8U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTA5LDE0ICs1NTEsMTcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgp
OwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0
aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm51bGxhYmxlU2Vx
dWVuY2VBcmciKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRo
cm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAibnVsbGFibGVTZXF1ZW5jZUFyZyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gc2VxdWVuY2VBcmcgPSB0b05hdGl2
ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTI2LDE0ICs1NzEsMTcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImZ1bmNXaXRoQ2xhbXAiKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlw
ZWRlZnMiLCAiZnVuY1dpdGhDbGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIGF1dG8gYXJnMSA9IGNvbnZlcnQ8dWludDY0X3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApLCBDbGFtcCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01NDYs
MTAgKzU5NCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYg
dm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAgYXV0byBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJU
ZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOworICAgICAgICByZXR1cm4g
dGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgIlRlc3RUeXBlZGVmcyIsICJp
bW11dGFibGVQb2ludEZ1bmN0aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNy
ZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpOwpAQCAtNTU4LDE0ICs2MDksMTcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3Rh
dGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZz
IiwgInN0cmluZ1NlcXVlbmNlRnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVu
Y2VGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihzdGF0ZSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKQEAgLTU3OCwxNCArNjMyLDE3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWQKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBzdGF0ZS0+dGhpc1ZhbHVlKCk7CiAgICAg
YXV0byBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KHRoaXNWYWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5j
dGlvbjIiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93
U2NvcGUsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZzOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCkBAIC01
OTgsMTQgKzY1NSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8gY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWly
ZXNJbmNsdWRlIik7CisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCB0
aHJvd1Njb3BlLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJ
bmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rl
c3RUeXBlZGVmczo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBzZXF1
ZW5jZUFyZyA9IHRvUmVmUHRyTmF0aXZlQXJyYXk8VGVzdEV2ZW50VGFyZ2V0LCBKU1Rlc3RFdmVu
dFRhcmdldD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwpAQCAtNjE1LDEwICs2NzUsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOwogICAgIGF1dG8g
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPih0aGlzVmFsdWUpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCi0gICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdFR5cGVkZWZzIiwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJU
ZXN0VHlwZWRlZnMiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJp
YnV0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM0LDEyICsxMzQsMTQgQEAgdm9pZCBKU2F0dHJpYnV0ZTo6ZGVzdHJveShKU0M6OkpT
Q2VsbCogYwogCiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAgIEpTVmFsdWUgZGVj
b2RlZFRoaXNWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpOwogICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlKj4oZGVjb2RlZFRoaXNWYWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CisgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJhdHRyaWJ1
dGUiLCAicmVhZG9ubHkiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCBp
bXBsLnJlYWRvbmx5KCkpOwpAQCAtMTQ5LDE4ICsxNTEsMjIgQEAgRW5jb2RlZEpTVmFsdWUganNh
dHRyaWJ1dGVSZWFkb25seShFeGVjUwogCiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZUNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTYXR0cmlidXRlUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTYXR0cmlidXRlUHJvdG90eXBlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU2F0dHJpYnV0ZVByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCShyZXZpc2lv
biAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNy
ZWFkb25seS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNywxOCArMTE3LDIyIEBAIHZvaWQgSlNy
ZWFkb25seTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2UKIAogRW5jb2RlZEpTVmFsdWUganNyZWFk
b25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTcmVhZG9ubHlQcm90
b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAogYm9vbCBzZXRKU3JlYWRvbmx5Q29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTcmVhZG9ubHlQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25seVByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKLSAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfYXJyYXkuY3BwCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYy
LDkgKzYyLDEyIEBAIHZvaWQgUnVudGltZUFycmF5OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIAog
RW5jb2RlZEpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KwogICAgIFJ1bnRpbWVBcnJheSogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8UnVudGltZUFy
cmF5Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghdGhpc09iamVjdCkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSk7CiB9CiAKQEAgLTExMyw5ICsxMTYs
MTIgQEAgYm9vbCBSdW50aW1lQXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SQogCiBib29sIFJ1
bnRpbWVBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBSdW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVu
dGltZUFycmF5Kj4oY2VsbCk7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhl
YywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2UgZXJyb3IiKSk7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJv
ciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTEyNyw5ICsxMzMs
MTIgQEAgYm9vbCBSdW50aW1lQXJyYXk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZQogCiBib29sIFJ1
bnRpbWVBcnJheTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBS
dW50aW1lQXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UnVudGltZUFycmF5Kj4oY2VsbCk7CiAg
ICAgaWYgKGluZGV4ID49IHRoaXNPYmplY3QtPmdldExlbmd0aCgpKSB7Ci0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiUmFuZ2Ug
ZXJyb3IiKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGV4ZWMsICJSYW5nZSBlcnJvciIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAko
cmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDMsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsOSArNTYsMTIgQEAgdm9pZCBSdW50
aW1lTWV0aG9kOjpmaW5pc2hDcmVhdGlvbihWTSYgdgogCiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1l
TWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVNZXRob2Qq
IHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJ1bnRpbWVNZXRob2QqPihKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVj
dC0+bV9tZXRob2QtPm51bVBhcmFtZXRlcnMoKSkpOwogfQogCkBAIC03NSw2ICs3OCw5IEBAIGJv
b2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90KEoKIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFJ1bnRpbWVNZXRob2QoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gc3RhdGljX2Nhc3Q8
UnVudGltZU1ldGhvZCo+KGV4ZWMtPmNhbGxlZSgpKTsKIAogICAgIGlmICghbWV0aG9kLT5tZXRo
b2QoKSkKQEAgLTg3LDEzICs5MywxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjYWxsCiAgICAgICAgIFJ1bnRpbWVPYmplY3QqIHJ1bnRpbWVPYmplY3QgPSBzdGF0aWNf
Y2FzdDxSdW50aW1lT2JqZWN0Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CiAgICAgICAgIGluc3Rh
bmNlID0gcnVudGltZU9iamVjdC0+Z2V0SW50ZXJuYWxJbnN0YW5jZSgpOwogICAgICAgICBpZiAo
IWluc3RhbmNlKSAKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoUnVudGltZU9i
amVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShSdW50aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihl
eGVjLCBzY29wZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENhbGxpbmcgYSBydW50aW1l
IG9iamVjdCBvZiBhIHBsdWdpbiBlbGVtZW50PwogICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzKEpTSFRNTEVsZW1lbnQ6OmluZm8oKSkpCiAgICAgICAgICAgICBpbnN0YW5jZSA9IHBsdWdp
bkluc3RhbmNlKGpzQ2FzdDxKU0hUTUxFbGVtZW50Kj4oYXNPYmplY3QodGhpc1ZhbHVlKSktPndy
YXBwZWQoKSk7CiAgICAgICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHNjb3BlKTsKICAgICB9CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCShyZXZpc2lvbiAyMDUxODMpCisr
KyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDgtMjAwOSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0LDExICs2NCwxNCBAQCB2b2lkIFJ1bnRpbWVPYmpl
Y3Q6OmludmFsaWRhdGUoKQogCiBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFj
a09iamVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVP
YmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhpc09iai0+bV9p
bnN0YW5jZTsKIAogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAg
CiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKQEAgLTgyLDExICs4NSwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBSdW50aW1lT2JqZWN0OjpmYWxsYmFja09iCiAKIEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVP
YmplY3Q6OmZpZWxkR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeyAgICAKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAg
IFJ1bnRpbWVPYmplY3QqIHRoaXNPYmogPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBSZWZQdHI8SW5zdGFuY2U+IGluc3RhbmNlID0gdGhp
c09iai0+bV9pbnN0YW5jZTsKIAogICAgIGlmICghaW5zdGFuY2UpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3Bl
KSk7CiAgICAgCiAgICAgaW5zdGFuY2UtPmJlZ2luKCk7CiAKQEAgLTEwMSwxMSArMTA3LDE0IEBA
IEVuY29kZWRKU1ZhbHVlIFJ1bnRpbWVPYmplY3Q6OmZpZWxkR2V0dGUKIAogRW5jb2RlZEpTVmFs
dWUgUnVudGltZU9iamVjdDo6bWV0aG9kR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iaiA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJlZlB0cjxJbnN0YW5jZT4gaW5zdGFu
Y2UgPSB0aGlzT2JqLT5tX2luc3RhbmNlOwogCiAgICAgaWYgKCFpbnN0YW5jZSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhl
Yywgc2NvcGUpKTsKICAgICAKICAgICBpbnN0YW5jZS0+YmVnaW4oKTsKIApAQCAtMTE4LDkgKzEy
NywxMiBAQCBFbmNvZGVkSlNWYWx1ZSBSdW50aW1lT2JqZWN0OjptZXRob2RHZXR0CiAKIGJvb2wg
UnVudGltZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSAqZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGltZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSdW50aW1lT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPm1faW5zdGFu
Y2UpIHsKLSAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYyk7CisgICAgICAgIHRo
cm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICAKQEAgLTE2Myw5ICsxNzUsMTIgQEAgYm9vbCBSdW50aW1lT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoSgogCiBib29sIFJ1bnRpbWVPYmplY3Q6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgUnVudGlt
ZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAgICAg
aWYgKCF0aGlzT2JqZWN0LT5tX2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vz
c0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29w
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xOTIsOSArMjA3LDEy
IEBAIGJvb2wgUnVudGltZU9iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWwKIAogSlNWYWx1ZSBS
dW50aW1lT2JqZWN0OjpkZWZhdWx0VmFsdWUoY29uc3QgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
ICAgICBjb25zdCBSdW50aW1lT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PGNvbnN0IFJ1bnRp
bWVPYmplY3QqPihvYmplY3QpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9pbnN0YW5jZSkKLSAg
ICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAgIAogICAgIFJlZlB0
cjxJbnN0YW5jZT4gaW5zdGFuY2UgPSB0aGlzT2JqZWN0LT5tX2luc3RhbmNlOwogCkBAIC0yNTgs
OSArMjc2LDEyIEBAIENvbnN0cnVjdFR5cGUgUnVudGltZU9iamVjdDo6Z2V0Q29uc3RydWMKIAog
dm9pZCBSdW50aW1lT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIFJ1bnRpbWVPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8UnVudGltZU9iamVjdCo+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0
LT5tX2luc3RhbmNlKSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOwor
ICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTI3MSw5ICsyOTIsOSBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCog
UnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjKQor
SlNPYmplY3QqIFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0
ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBh
Y2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWlu
ZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMjA1MTgz
KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgSW5zdGFuY2UqIGdldEludGVybmFs
SW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlLmdldCgpOyB9CiAKLSAgICBzdGF0
aWMgSlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSopOworICAgIHN0
YXRpYyBKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dT
Y29wZSYpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
Yy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMTYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjgsMTIg
KzY4LDE1IEBAIHZvaWQgQ0luc3RhbmNlOjpzZXRHbG9iYWxFeGNlcHRpb24oU3RyaW4KIAogdm9p
ZCBDSW5zdGFuY2U6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZiAoZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkpKTsKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmlu
ZygpKSk7CiAgICAgfQogCiAgICAgZ2xvYmFsRXhjZXB0aW9uU3RyaW5nKCkgPSBTdHJpbmcoKTsK
QEAgLTE1NCw4ICsxNTcsMTEgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OmdldE1ldGhvZChFeGVjU3Rh
dGUqIAogCiBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywg
UnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICgh
YXNPYmplY3QocnVudGltZU1ldGhvZCktPmluaGVyaXRzKENSdW50aW1lTWV0aG9kOjppbmZvKCkp
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tl
IG5vbi1wbHVnLWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWct
aW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpOwogCiAgICAgQ01ldGhvZCogbWV0aG9kID0g
c3RhdGljX2Nhc3Q8Q01ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NF
UlQobWV0aG9kKTsKQEAgLTE4NCw3ICsxOTAsNyBAQCBKU1ZhbHVlIENJbnN0YW5jZTo6aW52b2tl
TWV0aG9kKEV4ZWNTdGF0CiAgICAgfQogCiAgICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJv
ciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8
IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlhbnRWYWx1ZSgmY0FyZ3NbaV0p
OwpAQCAtMTk3LDYgKzIwMyw5IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjppbnZva2VNZXRob2QoRXhl
Y1N0YXQKIAogSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmludm9r
ZURlZmF1bHQpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0yMTksNyArMjI4
LDcgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6Omludm9rZURlZmF1bHRNZXRob2QoRQogICAgIH0KIAog
ICAgIGlmICghcmV0dmFsKQotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24g
TlBPYmplY3QuIikpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmpl
Y3QuIikpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICBfTlBO
X1JlbGVhc2VWYXJpYW50VmFsdWUoJmNBcmdzW2ldKTsKQEAgLTIzNiw2ICsyNDUsOSBAQCBib29s
IENJbnN0YW5jZTo6c3VwcG9ydHNDb25zdHJ1Y3QoKSBjb25zCiAKIEpTVmFsdWUgQ0luc3RhbmNl
OjppbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCiAgICAgaWYgKCFfb2JqZWN0LT5fY2xhc3MtPmNvbnN0cnVjdCkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTI1OCw3ICsyNzAsNyBAQCBKU1ZhbHVl
IENJbnN0YW5jZTo6aW52b2tlQ29uc3RydWN0KEV4ZWNTCiAgICAgfQogCiAgICAgaWYgKCFyZXR2
YWwpCi0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkp
OworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJFcnJvciBjYWxsaW5nIG1ldGhvZCBvbiBOUE9iamVjdC4iKSkpOwogCiAg
ICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIF9OUE5fUmVsZWFzZVZhcmlh
bnRWYWx1ZSgmY0FyZ3NbaV0pOwpAQCAtMzExLDYgKzMyMyw5IEBAIEpTVmFsdWUgQ0luc3RhbmNl
Ojp2YWx1ZU9mKEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBDSW5zdGFuY2U6OnRvSlNQcmltaXRpdmUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBuYW1lLCBKU1ZhbHVlJiByZXN1bHRWYWx1ZSkg
Y29uc3QKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIE5QSWRlbnRpZmllciBpZGVudCA9IF9OUE5fR2V0
U3RyaW5nSWRlbnRpZmllcihuYW1lKTsKICAgICBpZiAoIV9vYmplY3QtPl9jbGFzcy0+aGFzTWV0
aG9kKF9vYmplY3QsIGlkZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI4LDcgKzM0
Myw3IEBAIGJvb2wgQ0luc3RhbmNlOjp0b0pTUHJpbWl0aXZlKEV4ZWNTdGF0ZSoKICAgICB9CiAK
ICAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9u
IE5QT2JqZWN0LiIpKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2Jq
ZWN0LiIpKSk7CiAKICAgICByZXN1bHRWYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4
ZWMsICZyZXN1bHRWYXJpYW50LCBtX3Jvb3RPYmplY3QuZ2V0KCkpOwogICAgIF9OUE5fUmVsZWFz
ZVZhcmlhbnRWYWx1ZSgmcmVzdWx0VmFyaWFudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzksNiArNzksOSBAQCB2b2lkIE9i
amNJbnN0YW5jZTo6c2V0R2xvYmFsRXhjZXB0aW9uKE5TCiAKIHZvaWQgT2JqY0luc3RhbmNlOjpt
b3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKCFzX2V4Y2VwdGlvbikgewogICAgICAgICBBU1NFUlQoIXNfZXhjZXB0
aW9uRW52aXJvbm1lbnQpOwogICAgICAgICByZXR1cm47CkBAIC04Niw3ICs4OSw3IEBAIHZvaWQg
T2JqY0luc3RhbmNlOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG8KIAogICAgIGlmICghc19leGNlcHRp
b25FbnZpcm9ubWVudCB8fCBzX2V4Y2VwdGlvbkVudmlyb25tZW50ID09IGV4ZWMtPnZtRW50cnlH
bG9iYWxPYmplY3QoKSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAg
ICAgdGhyb3dFcnJvcihleGVjLCBzX2V4Y2VwdGlvbik7CisgICAgICAgIHRocm93RXJyb3IoZXhl
Yywgc2NvcGUsIHNfZXhjZXB0aW9uKTsKICAgICB9CiAKICAgICBbc19leGNlcHRpb24gcmVsZWFz
ZV07CkBAIC0yMDUsOCArMjA4LDExIEBAIEpTQzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6OmdldE1l
dGhvZChFeGUKIAogSlNDOjpKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNT
dGF0ZSogZXhlYywgUnVudGltZU1ldGhvZCogcnVudGltZU1ldGhvZCkKIHsKKyAgICBKU0M6OlZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1
bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWluIG1ldGhvZCBvbiBw
bHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qg
b24gcGx1Zy1pbiBvYmplY3QuIikpOwogCiAgICAgT2JqY01ldGhvZCAqbWV0aG9kID0gc3RhdGlj
X2Nhc3Q8T2JqY01ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQo
bWV0aG9kKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0JKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTQsNiAr
OTQsOSBAQCBPYmpjRmllbGQ6Ok9iamNGaWVsZChDRlN0cmluZ1JlZiBuYW1lKQogCiBKU1ZhbHVl
IE9iamNGaWVsZDo6dmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgCiAgICAgaWQgdGFyZ2V0T2JqZWN0ID0gKHN0YXRpY19j
YXN0PGNvbnN0IE9iamNJbnN0YW5jZSo+KGluc3RhbmNlKSktPmdldE9iamVjdCgpOwpAQCAtMTA5
LDcgKzExMiw3IEBAIEpTVmFsdWUgT2JqY0ZpZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGUKICAg
ICAgICAgfQogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikgewogICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgdGhyb3dFcnJvcihleGVjLCBb
bG9jYWxFeGNlcHRpb24gcmVhc29uXSk7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgc2NvcGUs
IFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKICAgICB9CiAKICAgICAvLyBXb3JrIGFyb3VuZCBw
cm9ibGVtIGluIHNvbWUgdmVyc2lvbnMgb2YgR0NDIHdoZXJlIHJlc3VsdCBnZXRzIG1hcmtlZCB2
b2xhdGlsZSBhbmQKQEAgLTEyNyw2ICsxMzAsOSBAQCBzdGF0aWMgaWQgY29udmVydFZhbHVlVG9P
YmpjT2JqZWN0KEV4ZWNTCiAKIGJvb2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgYVZhbHVlKSBj
b25zdAogeworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBpZCB0YXJnZXRPYmplY3QgPSAoc3RhdGlj
X2Nhc3Q8Y29uc3QgT2JqY0luc3RhbmNlKj4oaW5zdGFuY2UpKS0+Z2V0T2JqZWN0KCk7CiAgICAg
aWQgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNPYmplY3QoZXhlYywgYVZhbHVlKTsKIApAQCAt
MTQxLDcgKzE0Nyw3IEBAIGJvb2wgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2UoRXhlY1MK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBAY2F0Y2goTlNFeGNlcHRpb24qIGxvY2FsRXhj
ZXB0aW9uKSB7CiAgICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICB0aHJv
d0Vycm9yKGV4ZWMsIFtsb2NhbEV4Y2VwdGlvbiByZWFzb25dKTsKKyAgICAgICAgdGhyb3dFcnJv
cihleGVjLCBzY29wZSwgW2xvY2FsRXhjZXB0aW9uIHJlYXNvbl0pOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogfQpAQCAtMTU2LDEzICsxNjIsMTYgQEAgT2JqY0FycmF5OjpPYmpjQXJy
YXkoT2JqZWN0U3RydWN0UHRyIGEsIAogCiBib29sIE9iamNBcnJheTo6c2V0VmFsdWVBdChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBpbmRleCwgSlNWYWx1ZSBhVmFsdWUpIGNvbnN0CiB7
CisgICAgSlNDOjpWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGluc2VydE9iamVjdDphdEluZGV4OildKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJyYXkgaXMgbm90IG11dGFibGUuIikpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJBcnJheSBp
cyBub3QgbXV0YWJsZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBp
ZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkgewotICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkluZGV4IGV4Y2VlZHMg
YXJyYXkgc2l6ZS4iKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVh
dGVSYW5nZUVycm9yKGV4ZWMsICJJbmRleCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMTc0LDIxICsxODMsMjQgQEAgYm9vbCBP
YmpjQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleAogICAgICAgICBbX2FycmF5LmdldCgp
IGluc2VydE9iamVjdDpvVmFsdWUub2JqZWN0VmFsdWUgYXRJbmRleDppbmRleF07CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0gQGNhdGNoKE5TRXhjZXB0aW9uKiBsb2NhbEV4Y2VwdGlvbikg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsICJPYmplY3RpdmUtQyBleGNlcHRpb24uIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKIEpTVmFsdWUgT2JqY0FycmF5Ojp2
YWx1ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW50IGluZGV4KSBjb25zdAogeworICAg
IEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKICAgICBpZiAoaW5kZXggPiBbX2FycmF5LmdldCgpIGNvdW50XSkKLSAg
ICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAiSW5kZXggZXhjZWVkcyBhcnJheSBzaXplLiIpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbmRl
eCBleGNlZWRzIGFycmF5IHNpemUuIikpOwogICAgIEB0cnkgewogICAgICAgICBpZCBvYmogPSBb
X2FycmF5LmdldCgpIG9iamVjdEF0SW5kZXg6aW5kZXhdOwogICAgICAgICBpZiAob2JqKQogICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlIChleGVjLCAmb2JqLCBPYmpj
T2JqZWN0VHlwZSwgbV9yb290T2JqZWN0LmdldCgpKTsKICAgICB9IEBjYXRjaChOU0V4Y2VwdGlv
biogbG9jYWxFeGNlcHRpb24pIHsKLSAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7
CisgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgIk9iamVjdGl2ZS1DIGV4Y2VwdGlvbi4iKSk7CiAgICAgfQogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQpAQCAtMjMyLDkgKzI0NCwxMiBAQCBib29sIE9iamNGYWxsYmFja09iamVj
dEltcDo6cHV0KEpTQ2VsbCosCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEpTQzo6Vk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmluaGVyaXRzKE9iakNSdW50aW1lT2JqZWN0OjppbmZvKCkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1VuZGVmaW5l
ZCgpOwogCkBAIC0yNDIsNyArMjU3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbAogICAgIE9iamNJbnN0YW5jZSogb2JqY0luc3RhbmNlID0gcnVudGltZU9iamVj
dC0+Z2V0SW50ZXJuYWxPYmpDSW5zdGFuY2UoKTsKIAogICAgIGlmICghb2JqY0luc3RhbmNlKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxp
ZEFjY2Vzc0Vycm9yKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShSdW50
aW1lT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSkpOwogICAgIAog
ICAgIG9iamNJbnN0YW5jZS0+YmVnaW4oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY191dGlsaXR5LmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIEpTVmFsdWUgY29udmVydE5TU3RyaW5nVG9TdHJpbmcoRXhlY1N0YXQKIEpTVmFsdWUgY29u
dmVydE9iamNWYWx1ZVRvVmFsdWUoRXhlY1N0YXRlKiwgdm9pZCogYnVmZmVyLCBPYmpjVmFsdWVU
eXBlLCBSb290T2JqZWN0Kik7CiBPYmpjVmFsdWVUeXBlIG9iamNWYWx1ZVR5cGVGb3JUeXBlKGNv
bnN0IGNoYXIgKnR5cGUpOwogCi1KU09iamVjdCAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKiwgTlNT
dHJpbmcgKm1lc3NhZ2UpOworSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dT
Y29wZSYsIE5TU3RyaW5nICptZXNzYWdlKTsKIAogfSAvLyBuYW1lc3BhY2UgQmluZGluZ3MKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191
dGlsaXR5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
dXRpbGl0eS5tbQkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY191dGlsaXR5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMCwxMCAr
MzEwLDEwIEBAIE9iamNWYWx1ZVR5cGUgb2JqY1ZhbHVlVHlwZUZvclR5cGUoY29uc3QKICAgICBy
ZXR1cm4gb2JqY1ZhbHVlVHlwZTsKIH0KIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRl
ICpleGVjLCBOU1N0cmluZyAqbWVzc2FnZSkKK0pTT2JqZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0
ZSAqZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIE5TU3RyaW5nICptZXNzYWdlKQogewogICAgIEFT
U0VSVChtZXNzYWdlKTsKLSAgICBKU09iamVjdCAqZXJyb3IgPSBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7Cisg
ICAgSlNPYmplY3QgKmVycm9yID0gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTQzo6Y3Jl
YXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0wOC0zMCAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Nj
b3BlIGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29w
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpjYWxsTWV0aG9kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNO
UE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxNZXRob2QpOgor
ICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjYWxsT2JqZWN0KToKKyAgICAgICAgKFdlYktp
dDo6SlNOUE9iamVjdDo6Y2FsbENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6
cHV0KToKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAg
ICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAg
KFdlYktpdDo6SlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpK
U05QT2JqZWN0OjptZXRob2RHZXR0ZXIpOgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0Ojp0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50aW1lT2Jq
ZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUpOgorCiAyMDE2LTA4LTI5ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2lu
ZyBtX2NsaWVudCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFuIElQQzo6Q29ubmVjdGlvbiBpcyB2YWxp
ZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBN
ZXRob2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QTWV0aG9kLmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBNZXRob2QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01OSw2ICs1OSw5IEBAIHZvaWQgSlNOUE1ldGhvZDo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCAKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE1ldGhvZChF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU05QTWV0aG9kKiBqc05QTWV0
aG9kID0ganNDYXN0PEpTTlBNZXRob2QqPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwpAQCAtNzgsNyArODEsNyBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOUE9iamVjdC0+Y2FsbE1ldGhvZChleGVjLCBqc05QTWV0aG9kLT5ucElkZW50
aWZpZXIoKSkpOwogICAgIH0KIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKIH0KIAogQ2FsbFR5cGUg
SlNOUE1ldGhvZDo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDcsOSArMTA3LDEyIEBAIE5QT2JqZWN0KiBKU05QT2JqZWN0OjpsZWFrTlBPYmplY3Qo
KQogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBOUElk
ZW50aWZpZXIgbWV0aG9kTmFtZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dD
X09CSkVDVF9JTkhFUklUUyhpbmZvKCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAgICAgICAg
cmV0dXJuIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogCiAgICAgLy8gSWYgdGhlIHByb3Bl
cnR5TmFtZSBpcyBzeW1ib2wuCiAgICAgaWYgKCFtZXRob2ROYW1lKQpAQCAtMTQyLDcgKzE0NSw3
IEBAIEpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE1ldGhvZChFeGVjU3RhdGUKICAgICAgICAgcmVs
ZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNbaV0pOwogCiAgICAgaWYgKCFyZXR1cm5WYWx1
ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihl
eGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcg
bWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFsdWUgcHJvcGVydHlWYWx1ZSA9IG1f
b2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVlKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKQEAgLTE1MSw5
ICsxNTQsMTIgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsTWV0aG9kKEV4ZWNTdGF0ZQogCiBK
U0M6OkpTVmFsdWUgSlNOUE9iamVjdDo6Y2FsbE9iamVjdChKU0M6OkV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKwogICAgIEFTU0VSVF9USElTX0dDX09CSkVDVF9JTkhFUklUUyhpbmZv
KCkpOwogICAgIGlmICghbV9ucE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93SW52YWxpZEFj
Y2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3Io
ZXhlYywgc2NvcGUpOwogCiAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CiAgICAgVmVjdG9yPE5QVmFyaWFudCwgOD4gYXJndW1lbnRzKGFyZ3VtZW50Q291
bnQpOwpAQCAtMTgyLDcgKzE4OCw3IEBAIEpTQzo6SlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsT2Jq
ZWN0KEpTQzoKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZhcmd1bWVudHNbaV0pOwog
CiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkKLSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVFcnJvcihleGVjLCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmpl
Y3QuIikpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3Io
ZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0aG9kIG9uIE5QT2JqZWN0LiIpKTsKIAogICAgIEpTVmFs
dWUgcHJvcGVydHlWYWx1ZSA9IG1fb2JqZWN0TWFwLT5jb252ZXJ0TlBWYXJpYW50VG9KU1ZhbHVl
KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCByZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1
ZSgmcmVzdWx0KTsKQEAgLTE5MSw5ICsxOTcsMTIgQEAgSlNDOjpKU1ZhbHVlIEpTTlBPYmplY3Q6
OmNhbGxPYmplY3QoSlNDOgogCiBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBBU1NFUlRfVEhJU19HQ19PQkpF
Q1RfSU5IRVJJVFMoaW5mbygpKTsKICAgICBpZiAoIW1fbnBPYmplY3QpCi0gICAgICAgIHJldHVy
biB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuIHRocm93SW52
YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKTsKIAogICAgIHNpemVfdCBhcmd1bWVudENvdW50
ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIFZlY3RvcjxOUFZhcmlhbnQsIDg+IGFyZ3Vt
ZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTIxOCw3ICsyMjcsNyBAQCBKU1ZhbHVlIEpTTlBPYmpl
Y3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjCiAgICAgfQogCiAgICAgaWYgKCFyZXR1cm5WYWx1ZSkK
LSAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVj
LCAiRXJyb3IgY2FsbGluZyBtZXRob2Qgb24gTlBPYmplY3QuIikpOworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgIkVycm9yIGNhbGxpbmcgbWV0
aG9kIG9uIE5QT2JqZWN0LiIpKTsKICAgICAKICAgICBKU1ZhbHVlIHZhbHVlID0gbV9vYmplY3RN
YXAtPmNvbnZlcnROUFZhcmlhbnRUb0pTVmFsdWUoZXhlYywgZ2xvYmFsT2JqZWN0KCksIHJlc3Vs
dCk7CiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOwpAQCAtMjY1LDEwICsyNzQs
MTMgQEAgQ29uc3RydWN0VHlwZSBKU05QT2JqZWN0OjpnZXRDb25zdHJ1Y3REYQogCiBib29sIEpT
TlBPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKwogICAgIEpTTlBPYmplY3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxK
U05QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAg
ICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRB
Y2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCkBAIC0yOTksMTAgKzMxMSwxMyBAQCBib29sIEpTTlBPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChKU09iCiAKIGJvb2wgSlNOUE9iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9
IEpTQzo6anNDYXN0PEpTTlBPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2Jq
ZWN0KSB7Ci0gICAgICAgIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0
aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTM1Myw2ICszNjgsOSBAQCBib29sIEpTTlBPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKCiAKIGJvb2wgSlNOUE9iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0
YXRlKiBleGVjLCBOUElkZW50aWZpZXIgcHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAg
ICAgQVNTRVJUX1RISVNfR0NfT0JKRUNUX0lOSEVSSVRTKGluZm8oKSk7CiAKICAgICAvLyBJZiB0
aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KQEAgLTM2MCw3ICszNzgsNyBAQCBib29sIEpTTlBP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmICghbV9ucE9iamVjdCkgewotICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihl
eGVjKTsKKyAgICAgICAgdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zODksMTAgKzQwNywxMyBAQCBib29sIEpT
TlBPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0CiAKIHZvaWQgSlNOUE9iamVjdDo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVBcnJheSwgRW51bWVyYXRpb25Nb2RlKQogeworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU05QT2JqZWN0
Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5tX25wT2JqZWN0KSB7Ci0gICAgICAgIHRocm93
SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMpOworICAgICAgICB0aHJvd0ludmFsaWRBY2Nlc3NFcnJv
cihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzNywxMSArNDU4
LDE0IEBAIHZvaWQgSlNOUE9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU08KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNOUE9iamVjdDo6cHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKICAgICBKU05QT2JqZWN0KiB0aGlzT2JqID0ganNDYXN0PEpTTlBPYmplY3QqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqLCBpbmZvKCkpOwogICAgIAogICAgIGlmICghdGhpc09iai0+bV9ucE9iamVjdCkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihl
eGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIGlmICghdGhpc09iai0+bV9ucE9iamVjdC0+X2Ns
YXNzLT5nZXRQcm9wZXJ0eSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKQEAgLTQ3NywyMyArNTAxLDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTTlBPYmplY3Q6
OnByb3BlcnR5R2V0dGUKIAogRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgSlNOUE9iamVjdCogdGhpc09iaiA9
IGpzQ2FzdDxKU05QT2JqZWN0Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygpKTsKICAgICAKICAgICBpZiAo
IXRoaXNPYmotPm1fbnBPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKGV4ZWMsIHNjb3BlKSk7CiAKICAgICBOUElkZW50
aWZpZXIgbnBJZGVudGlmaWVyID0gbnBJZGVudGlmaWVyRnJvbUlkZW50aWZpZXIocHJvcGVydHlO
YW1lKTsKICAgICAvLyBJZiB0aGUgcHJvcGVydHlOYW1lIGlzIHN5bWJvbC4KICAgICBpZiAoIW5w
SWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0ludmFsaWRB
Y2Nlc3NFcnJvcihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoZXhlYywgc2NvcGUpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBw
cm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElkZW50aWZpZXIpKTsKIH0KIAotSlNPYmplY3Qq
IEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYykKK0pT
T2JqZWN0KiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVjU3RhdGUqIGV4
ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNz
IG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKKyAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8g
YWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9uIDIwNTE4MykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIHByb3BlcnR5R2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRK
U1ZhbHVlIG1ldGhvZEdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogdGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVj
dCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlRocm93U2Nv
cGUmKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmplY3RNYXA7CiAgICAgTlBPYmpl
Y3QqIG1fbnBPYmplY3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAko
cmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3NCwxMiArMjc0
LDE1IEBAIHZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpzZXRHbG9iYWxFeGNlcHQKICAgICAKIHZv
aWQgTlBSdW50aW1lT2JqZWN0TWFwOjptb3ZlR2xvYmFsRXhjZXB0aW9uVG9FeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgaWYgKGdsb2JhbEV4Y2VwdGlvblN0
cmluZygpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB7Ci0gICAgICAgIEpTTG9j
a0hvbGRlciBsb2NrKGV4ZWMpOwotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CisgICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZUVycm9yKGV4ZWMsIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpKSk7CiAgICAgfQog
ICAgIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0gU3RyaW5nKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMDUxODMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wOC0zMCAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIHRoZSBUaHJvd1Njb3Bl
IGFuZCBmb3JjZSBldmVyeSB0aHJvdyBzaXRlIHRvIGluc3RhbnRpYXRlIGEgVGhyb3dTY29wZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Om1vdmVHbG9iYWxFeGNlcHRpb25Ub0V4ZWNT
dGF0ZSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6UHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKwogMjAxNi0wOC0yOCAg
QW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgZG9jdW1lbnQudGl0
bGUgc2V0dGVyIGNhbid0IHRocm93LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9I
b3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5t
bQkocmV2aXNpb24gMjA1MTgzKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE2MzIsMTIgKzE2MzIsMTUgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHk6OnNldEdsbwogCiB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bW92ZUdsb2Jh
bEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwog
ICAgIGlmIChnbG9iYWxFeGNlcHRpb25TdHJpbmcoKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgewotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNl
cHRpb25TdHJpbmcoKSkpOworICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgICAg
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBnbG9iYWxFeGNl
cHRpb25TdHJpbmcoKSkpOwogICAgIH0KIAogICAgIGdsb2JhbEV4Y2VwdGlvblN0cmluZygpID0g
U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVk
L1Byb3h5SW5zdGFuY2UubW0JKHJldmlzaW9uIDIwNTE4MykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDEwLCAyMDE2IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjE5LDggKzIxOSwxMSBAQCBKU1ZhbHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhv
ZChKU0M6OkV4CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0
ZSogZXhlYywgSlNDOjpSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0aG9kKQogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoUHJveHlSdW50
aW1lTWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1
Zy1pbiBvYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9u
IHBsdWctaW4gb2JqZWN0LiIpKTsKIAogICAgIFByb3h5TWV0aG9kKiBtZXRob2QgPSBzdGF0aWNf
Y2FzdDxQcm94eU1ldGhvZCo+KHJ1bnRpbWVNZXRob2QtPm1ldGhvZCgpKTsKICAgICBBU1NFUlQo
bWV0aG9kKTsK
</data>
<flag name="review"
          id="310854"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>